EnsembleMethods
1.
Class 1: y=-1 | Class 2: y=+1 |
(5.8,-3.1) (5.5,-3.1) (7.4,-2.5) (5.4,-3.4) (9.0,-2.6) (6.3,-2.4) (6.5,-3.3) (3.5,-3.9) (5.2,-3.4) (2.7,-3.2) (5.8,-2.3) (7.0, -2.9) (8.5, -2.0) (4.0, -3.7) (3.3,-2.5) (7.0, -2.1) (6.7,-2.4) (5.0, -3.7) (7.4, -2.4) (6.3, -3.5) (7.1, -2.9) (5.8, -3.5) (5.2,-2.0) (7.9,-4.7) (8.1,-2.8) (-4.4,9.5) (-5.9, 8.2) (-4.9, 9.0) (-6.3,3.3) (-6.6, 3.5) (-7.3,1.7) (-5.4,2.2) (-6.0,2.6) (-8.1,2.8) (-5.6,4.7) (-5.0,3.3) (-6.5,2.0) (-6.3,3.1) (-5.8, 3.0) (-7.6,2.8) (-7.6,4.4) (-4.3,4.9) (-4.9,3.1) (-4.6,3.2) (-7.4,1.7) (-4.9,4.0) (-5.0,2.1) (-5.1,3.2) (-6.8,3.2) (-6.3,3.8) | (8.6,3.8) (5.8,2.9) (5.7,4.1) (7.0,3.6) (5.6,4.0) (7.0,2.0) (5.3,4.2) (4.1,4.5) (2.3,1.8) (1.6,4.8) (4.7,5.2) (4.0,4.7) (2.3,5.6) (3.3,4.6) (3.9,2.0) (6.4,2.9) (3.9,4.3) (6.3,3.7) (3.3,2.9) (2.1,1.8) (3.6,2.7) (5.1,3.2) (5.0,4.5) (6.8,4.6) (7.9,5.6) (-1.3,-1.5) (-3.7,-1.9) (-6.7,1.8) (-3.7,-0.4) (-7.4,1.8) (-5.4,-1.0) (-5.7,-1.8) (-4.6,-1.9) (-3.8,-1.6) (-4.0,-2.3) (-6.6,-1.6) (-5.1,-2.8) (-6.0,-0.9) (-5.2,-2.4) (-1.5,-3.3) (-4.0,-2.2) (-5.7,-2.5) (-3.4,-2.8) (-4.0,-2.5) (-3.1,-1.3) (-5.0,-3.0) (-4.4,-3.5) (-2.6,-3.0) (-4.0,-0.5) (-2.4,-1.7) |
Table 1: Dataset of two classes.
2.Thecorresponding figure as follows(a total of 100 points):
3.
Data | Weak classifier 1 | Weak classifier 2 | Weak classifier 3 | Overall classi |
(5.8 -3.1), -1 (5.5 -3.1), -1 (3.3 -2.5), -1 (8.1 -2.8), -1 (-6.6 3.5), -1 (-7.3 1.7), -1 (-8.1 2.8), -1 (-5.6 4.7), -1 (-5.8 3.0), -1 (-7.6 4.4), -1 ( 8.6 3.8), 1 ( 7.0 3.6), 1 (4.0 4.7), 1 (7.9 5.6), 1 (-3.7 -1.9), 1 (-4.0 -3.3), 1 (-3.4 -2.5), 1 (-4.4 -3.0), 1 (-2.6 -3.5), 1 (-2.4 -1.7), 1 | -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 |
Accuracy | 50% | 70% | 50% | 70% |
Data | Weak classifier 1 | Weak classifier 2 | Weak classifier 3 | Weak classifier 4 | Overall classi |
(5.8 -2.3), -1 (3.3 -2.5), -1 (5.8 -3.5), -1 (8.1 -2.8), -1 (-4.4 9.5), -1 (-7.6 2.8), -1 (-4.9 3.1), -1 (-4.9 4.0 ), -1 (-5.1 3.2), -1 (-6.8 3.2), -1 (5.8 2.9), 1 (5.6 4.0), 1 (4.1 4.5), 1 (4.7 5.2), 1 (3.9 2.0), 1 (6.8 4.6), 1 (-4.6 -1.9), 1 (-5.7 -2.2), 1 (-4.0 -2.8), 1 (-4.4 -3.0), 1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 | -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 |
Accuracy | 50% | 40% | 50% | 50% | 50% |
Data | Weak classifier 1 | Weak classifier 2 | Weak classifier 3 | Weak classifier 4 | Weak classifier 5 | Overall classi |
6.5 -3.3), -1 (5.2 -3.4), -1 (4.0 -3.7), -1 (6.3 -3.5), -1 (5.2 -2.0), -1 (-6.0 2.6), -1 (-5.0 3.3), -1 (-6.3 3.1), -1 ( -7.6 2.8), -1 (-7.4 1.7), -1 ( 5.7 4.1), 1 (3.9 2.0), 1 ( 3.3 2.9), 1 (3.6 2.7), 1 (7.9 5.6), 1 (-5.7 -1.8 ), 1 (-3.8 -1.9), 1 ( -5.1 -1.6 ), 1 ( -4.0 -3.3), 1 (-2.6 -3.5), 1 | -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 | -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 | -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 |
Accuracy | 50% | 55% | 75% | 50% | 60% | 75% |
4.
Data | Weak classifier 1 | Weak classifier 2 | Weak classifier 3 | Overall classi |
(3.5 -3.9), -1 (5.8 -2.3), -1 (8.5 -2.0), -1 ( 8.1 -2.8), -1 (-4.4 9.5), -1 (-6.3 3.3), -1 (-5.4 2.2), -1 (-6.3 3.1), -1 (-7.6 4.4), -1 (-6.8 3.2), -1 (5.8 2.9), 1 (7.0 2.0), 1 ( 2.3 1.8), 1 ( 2.3 5.6), 1 ( 6.4 2.9), 1 ( 7.9 5.6), 1 (-1.3 -1.5), 1 (-6.7 1.8), 1 (-1.5 -2.4), 1 (-5.0 -1.3 ), 1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 | -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 |
Accuracy | 60% | 60% | 60% | 61.25% |
Appendix1: TheMATLAB code of Bagging algorithm as follows.
clear all;
close all;
a = zeros(1,50) - 1;
b = ones(1,50)
labels = [ab]'
X1=[5.8;5.5;7.4;5.4;9.0;6.3;6.5;3.5;5.2;2.7;5.8;7.0;8.5;4.0;3.3;7.0;6.7;5.0;7.4;6.3;
7.1;5.8;5.2;7.9;8.1;-4.4;-5.9;-4.9;-6.3;-6.6;-7.3;-5.4;-6.0;-8.1;-5.6;-5.0;-6.5;
-6.3;-5.8;-7.6;-7.6;-4.3;-4.9;-4.6;-7.4;-4.9;-5.0;-5.1;-6.8;-6.3;8.6;5.8;5.7;7.0;
5.6;7.0;5.3;4.1;2.3;1.6;4.7;4.0;2.3;3.3;3.9;6.4;3.9;6.3;3.3;2.1;3.6;5.1;5.0;6.8;
7.9;-1.3;-3.7;-6.7;-3.7;-7.4;-5.4;-5.7;-4.6;-3.8;-4.0;-6.6;-5.1;-6.0;-5.2;-1.5;
-4.0;-5.7;-3.4;-4.0;-3.1;-5.0;-4.4;-2.6;-4.0;-2.4]
X2=[-3.1;-3.1;-2.5;-3.4;-2.6;-2.4;-3.3;-3.9;-3.4;-3.2;-2.3;-2.9;-2.0;-3.7;-2.5;-2.1;-2.4;
-3.7;-2.4;-3.5;-2.9;-3.5;-2.0;-4.7;-2.8;9.5;8.2;9.0;3.3;3.5;1.7;2.2;2.6;2.8;4.7;3.3;
2.0;3.1;3.0;2.8;4.4;4.9;3.1;3.2;1.7;4.0;2.1;3.2;3.2;3.8;3.8;2.9;4.1;3.6;4.0;2.0;4.2;
4.5;1.8;4.8;5.2;4.7;5.6;4.6;2.0;2.9;4.3;3.7;2.9;1.8;2.7;3.2;4.5;4.6;5.6;-1.5;-1.9;1.8;
-0.4;1.8;-1.0;-1.8;-1.9;-1.9;-1.6;-2.3;-1.6;-2.8;-0.9;-2.4;-3.3;-2.2;-2.5;-2.8;-2.5;-1.3;
-3.0;-3.5;-0.5;-1.7]
instances =[X1 X2]
%[labels,instances] = libsvmread('n-gram.data');
M = 5;
cv =cvpartition(labels, 'Kfold', 5);
cv_accuracy= zeros(1, cv.NumTestSets);
param = '-t 0 -c 1 -h 0 -w1 %.3f -w-1 %.3f -w ';
for i = 1 : cv.NumTestSets
fprintf('Iteration #%d\n', i);
% initializetraining/testing dataset
training = cv.training(i);
testing = cv.test(i);
x_training = instances(training, :);
y_training = labels(training, :);
x_testing = instances(testing, :);
y_testing = labels(testing, :);
% build theweak learners
n = size(x_training, 1);
learners = cell(M, 1);
for m = 1 : M
indices = randsample(n,randi([round(n/2), n]));
w = ones(size(indices, 1), 1);
positive = numel(indices) /sum(y_training(indices, :) == 1);
negative = numel(indices) /sum(y_training(indices, :) == -1);
learners{m} = svmtrain(y_training(indices,:), x_training(indices, :), sprintf(param, positive, negative, w));
end
% predict onthe testing data
n = size(x_testing, 1);
predictions = zeros(n, M);
for m = 1 : M
[predictions(:, m), ~, ~] = svmpredict(y_testing,x_testing, learners{m});
end
predictions_sign = sign(sum(predictions,2));
cv_accuracy(i) = sum(y_testing ==predictions_sign) / size(y_testing, 1);
end
fprintf('Accuracy => [%s]\nMean => %s\n',num2str(cv_accuracy), num2str(mean(cv_accuracy)));
Appendix2: TheMATLAB code of Boosting algorithm as follows.
clear all;
close all;
a = zeros(1,50) - 1;
b = ones(1,50)
labels = [ab]'
X1=[5.8;5.5;7.4;5.4;9.0;6.3;6.5;3.5;5.2;2.7;5.8;7.0;8.5;4.0;3.3;7.0;6.7;5.0;7.4;6.3;
7.1;5.8;5.2;7.9;8.1;-4.4;-5.9;-4.9;-6.3;-6.6;-7.3;-5.4;-6.0;-8.1;-5.6;-5.0;-6.5;
-6.3;-5.8;-7.6;-7.6;-4.3;-4.9;-4.6;-7.4;-4.9;-5.0;-5.1;-6.8;-6.3;8.6;5.8;5.7;7.0;
5.6;7.0;5.3;4.1;2.3;1.6;4.7;4.0;2.3;3.3;3.9;6.4;3.9;6.3;3.3;2.1;3.6;5.1;5.0;6.8;
7.9;-1.3;-3.7;-6.7;-3.7;-7.4;-5.4;-5.7;-4.6;-3.8;-4.0;-6.6;-5.1;-6.0;-5.2;-1.5;
-4.0;-5.7;-3.4;-4.0;-3.1;-5.0;-4.4;-2.6;-4.0;-2.4]
X2=[-3.1;-3.1;-2.5;-3.4;-2.6;-2.4;-3.3;-3.9;-3.4;-3.2;-2.3;-2.9;-2.0;-3.7;-2.5;-2.1;-2.4;
-3.7;-2.4;-3.5;-2.9;-3.5;-2.0;-4.7;-2.8;9.5;8.2;9.0;3.3;3.5;1.7;2.2;2.6;2.8;4.7;3.3;
2.0;3.1;3.0;2.8;4.4;4.9;3.1;3.2;1.7;4.0;2.1;3.2;3.2;3.8;3.8;2.9;4.1;3.6;4.0;2.0;4.2;
4.5;1.8;4.8;5.2;4.7;5.6;4.6;2.0;2.9;4.3;3.7;2.9;1.8;2.7;3.2;4.5;4.6;5.6;-1.5;-1.9;1.8;
-0.4;1.8;-1.0;-1.8;-1.9;-1.9;-1.6;-2.3;-1.6;-2.8;-0.9;-2.4;-3.3;-2.2;-2.5;-2.8;-2.5;-1.3;
-3.0;-3.5;-0.5;-1.7]
instances =[X1 X2]
M = 3; %The number of the model.
cv =cvpartition(labels, 'Kfold', 5);
cv_accuracy= zeros(1, cv.NumTestSets);
param = '-t 0 -c 1 -h 0 -w1 %.3f -w-1 %.3f -w ';
for i = 1 : cv.NumTestSets
training = cv.training(i);
testing = cv.test(i);
x_training = instances(training, :);
y_training = labels(training, :);
x_testing = instances(testing, :);
y_testing = labels(testing, :);
models = cell(M, 1);
n = size(x_training, 1);
w = repmat(1 / n, n, M);
alpha = zeros(M, 1);
eps = zeros(M, 1);
for m = 1 : M
positive = size(y_training, 1) /sum(y_training == 1);
negative = size(y_training, 1) /sum(y_training == -1);
models{m} = svmtrain( y_training,x_training, sprintf(param, positive, negative, w(:, m) ./ min(w(:, m))));
predictions = svmpredict(y_training,x_training, models{m});
I = (predictions ~= y_training);
eps(m) = (w(:, m)' * I) / sum(w(:, m));
alpha(m) = log ( (1 - eps(m)) / eps(m));
if m < M
w(:, m + 1) = w(:, m) .*exp(alpha(m) * I);
end
end
predictions = zeros(size(y_testing, 1), M);
for m = 1 : M
predictions(:, m) =svmpredict(y_testing, x_testing, models{m});
end
predictions_sign = sign(predictions *alpha);
cv_accuracy(i) = sum(predictions_sign ==y_testing) / size(y_testing, 1);
end
fprintf('Accuracy => [%s]\nMean => %s\n',num2str(cv_accuracy), num2str(mean(cv_accuracy) * 100));