|
a |
|
b/Ensemble Learning/Boosting/app1.m |
|
|
1 |
close all; clear;clc; |
|
|
2 |
|
|
|
3 |
load dataDWT.mat; |
|
|
4 |
%load dataAR.mat; |
|
|
5 |
%load dataCSP.mat; |
|
|
6 |
%load dataPSD.mat; |
|
|
7 |
Y(Y==2) = -1; |
|
|
8 |
|
|
|
9 |
y=Y; |
|
|
10 |
|
|
|
11 |
num_iterations=30; |
|
|
12 |
base_algorithm= 'regression_tree'; |
|
|
13 |
min_parent = floor(size(X, 1) / 5) * 4 - 1; |
|
|
14 |
loss='logistic'; |
|
|
15 |
learning_rate=1; |
|
|
16 |
|
|
|
17 |
no_objects = length(y); |
|
|
18 |
fifth = floor(no_objects / 5); |
|
|
19 |
error_train = zeros([num_iterations 1]); |
|
|
20 |
error_test = zeros([num_iterations 1]); |
|
|
21 |
|
|
|
22 |
for fold = 1 : 5 |
|
|
23 |
mask_test = zeros([1 no_objects]); |
|
|
24 |
mask_test((fold - 1) * fifth + 1 : fifth * fold) = 1; |
|
|
25 |
mask_test = logical(mask_test); |
|
|
26 |
train_set = X(~mask_test,:); |
|
|
27 |
train_ans = y(~mask_test); |
|
|
28 |
test_set = X(mask_test,:); |
|
|
29 |
test_ans = y(mask_test); |
|
|
30 |
model = gradient_boosting_train(train_set, train_ans, num_iterations, ... |
|
|
31 |
base_algorithm, loss, 'learning_rate', learning_rate, ... |
|
|
32 |
'min_parent', min_parent); |
|
|
33 |
[~, error_train_loop] = gradient_boosting_predict(model, train_set, train_ans); |
|
|
34 |
[~, error_test_loop] = gradient_boosting_predict(model, test_set, test_ans); |
|
|
35 |
error_train = error_train + error_train_loop; |
|
|
36 |
error_test = error_test + error_test_loop; |
|
|
37 |
end |
|
|
38 |
error_train = error_train / 5; |
|
|
39 |
error_test = error_test / 5; |
|
|
40 |
|
|
|
41 |
hold on; |
|
|
42 |
xlabel('Number of iterations'); |
|
|
43 |
ylabel('Error'); |
|
|
44 |
title('Gradient boosting - PSD'); |
|
|
45 |
plot(1 : num_iterations, error_train, 'linewidth', 2); |
|
|
46 |
|
|
|
47 |
|