Ensemble Methods

来源:互联网 发布:苹果电脑文件恢复软件 编辑:程序博客网 时间:2024/05/17 03:15

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
er

(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
er

(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
er

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
er

(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));

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击