《统计学习方法》笔记(十二)--Adaboost

原创 2015年07月10日 10:33:01

通过改变样本的权重来学习多个分类器并将这些分类器进行线性组合,提高分类性能。

理论依据:在PAC(probably approximately correct)的框架下强可学习与弱可学习的等价性

书中例8.1的MATLAB实现

%adaboost 例8.1
%一个一维分类器
%弱分类器用的是简单的阈值处理
close all;
clear all;
clc;
%%
x=0:1:9;
y=[1 1 1 -1 -1 -1 1 1 1 -1];
N=size(x,2);
w(1,:)=ones(N,1)./N;
D(1,:)=w;
%v(1)=2.5;
%%
for m=1:3%判断条件有待改进
    [Y(m,:) e v(m) flag(m)]=G(x,y,w(m,:));%得到现有训练集上误差率最低的分类器阈值及相应的分类误差  
    if e==0
        break;
    end
    a(m)=0.5*log((1-e)./e);
    for i=1:N
        T(i)=w(m,i)*exp(-a(m)*y(i)*Y(m,i));
    end
    Z=sum(T);
    w(m+1,:)=T/Z;
    D(m+1,:)=w(m+1,:);
    
end
a
v
flag
%%在adaboost 中用于计算误差率
function [e]=E(y_t,y,w)
e=0;
for i=1:length(y)
    if y_t(i)==y(i)  
    else
        e=e+w(i);
    end
end
%e=e./i;
end
<p>%%在Adaboost例子中用于计算分类器的返回值
function [RY e v flag]=G(x,y,w)
%%
ii=1;
for v=0.5:0.5:x(end)
    for i=1:size(x,2)
        if (x(i)<v)
            Y(ii,i)=1;
        else
            Y(ii,i)=-1;
        end
    end
   e_t1(ii)=E(Y(ii,:),y,w);
   ii=ii+1; 
end
[e1 idx1]=min(e_t1);
v1=idx1*0.5;
RY1=Y(idx1,:);
%%
%弱分类器中不等号的方向改变
ii=1;
for v=0.5:0.5:x(end)
    for i=1:size(x,2)
        if (x(i)>=v)
            Y(ii,i)=1;
        else
            Y(ii,i)=-1;
        end
    end
   e_t2(ii)=E(Y(ii,:),y,w);
   ii=ii+1; 
end
[e2 idx2]=min(e_t2);
v2=idx2*0.5;
RY2=Y(idx2,:);
%%
if e1<e2
    flag=1;
    RY=RY1;
    e=e1;
    v=v1;
else
    flag =0;
     RY=RY2;
    e=e2;
    v=v2;
end</p><p>end</p>


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《统计学习方法》笔记(8):AdaBoost算法

AdaBoost是最有代表性的提升算法之一。其基本思想可以表述为:多个专家的综合判断,要优于任意一个专家的判断。

《统计学习方法》笔记——AdaBoost

集成方法集成方法就是通过组合多个分类器的分类结果,获得比简单的分类器更好的分类结果。 使用集成方法的多种形式: 1)可以是不同算法的集成 2)可以是同一算法在不同设置下的集成 3)数据集不同部...

统计学习方法---adaboost

AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。(很多博客里说的三个臭皮匠赛过诸葛亮)      算...

李航《统计学习方法》第八章——用Python+Cpp实现AdaBoost算法(MNIST数据集)

相关文章: 李航《统计学习方法》第二章——用Python实现感知器模型(MNIST数据集) 李航《统计学习方法》第三章——用Python实现KNN算法(MNIST数据集) 李航...

统计学习方法(五)AdaBoost

一.提升方法boosting         如果我有写过集成方法的话[没有的话看这篇集成学习理论],集成方法的一大类就是boosting,其基本思想就是不断地在迭代过程中训练BaseModel,并增...

统计学习方法笔记三----逻辑斯蒂

0、说明虽然在《统计学习方法》中logistic方法在第五章,但是上一节主要是总结了感知机算法,为了更好的衔接,我打算先把logistic提前总结,因为两种方法都属于线性模型。同样,下一次笔记,我们将...

CH9 EM算法(expectation maximization) --《统计学习方法》阅读笔记

CH9 EM算法(expectation maximization) 《统计学习方法》阅读笔记

统计学习方法笔记四---支持向量机

支持向量机(support vector machines, SVM) 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的**间...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)