Contents

Description of demo_regression_bagging.m

Demonstrates bagged mean regression and linear regression models. Red dashed lines are predictions from individual models trained on bootstrap samples of the dataset.

clear all
close all
generateData_constant

usage of mean regression (constant data)

options_mn = [];
model_mn = ml_regression_mean(Xtrain, ytrain, options_mn);
yhat_mn = model_mn.predict(model_mn, Xtest);
testError_mn = mean(abs(yhat_mn - ytest));
fprintf('Averaged absolute test error with %s is: %.3f\n', model_mn.name, testError_mn);
Averaged absolute test error with Mean is: 0.526

usage of bagging mean regression (constant data)

options_bg3 = [];
options_bg3.nModels = 5;
options_bg3.subModel = @ml_regression_mean;
options_bg3.subOptions.addBias = 1;
model_bg3 = ml_regression_bagging(Xtrain, ytrain, options_bg3);
yhat_bg3 = model_bg3.predict(model_bg3, Xtest);
testError_bg3 = mean(abs(yhat_bg3 - ytest));
fprintf('Averaged absolute test error with %s is: %.3f\n', model_bg3.name, testError_bg3)
Averaged absolute test error with Bagged Regression is: 0.525
plotRegression1D(Xtrain, ytrain, model_bg3, model_mn);
for k = 1:length(model_bg3.trainModels);
    plot(linspace(-1,1,30),model_bg3.trainModels{k}.predict(model_bg3.trainModels{k}, linspace(-1,1,30)'), 'r--');
end
title('Constant');

generateData_linear

usage of L2 regression (linear data)

options_l2 = [];
options_l2.addBias = 1;
model_l2 = ml_regression_L2(Xtrain, ytrain, options_l2);
yhat_l2 = model_l2.predict(model_l2, Xtest);
testError_l2 = mean(abs(yhat_l2 - ytest));
fprintf('Averaged absolute test error with %s is: %.3f\n', model_l2.name, testError_l2);
Averaged absolute test error with Squared Loss Linear Regression is: 0.198

usage of bagging L2 regression (linear data)

options_bg2 = [];
options_bg2.nModels = 5;
options_bg2.subModel = @ml_regression_L2;
options_bg2.subOptions.addBias = 1;
model_bg2 = ml_regression_bagging(Xtrain, ytrain, options_bg2);
yhat_bg2 = model_bg2.predict(model_bg2, Xtest);
testError_bg2 = mean(abs(yhat_bg2 - ytest));
fprintf('Averaged absolute test error with %s is: %.3f\n', model_bg2.name, testError_bg2)
Averaged absolute test error with Bagged Regression is: 0.233
plotRegression1D(Xtrain, ytrain, model_bg2, model_l2);
for k = 1:length(model_bg2.trainModels);
    plot(linspace(-1,1,30),model_bg2.trainModels{k}.predict(model_bg2.trainModels{k}, linspace(-1,1,30)'), 'r--');
end
title('Linear');