文章标题

来源:互联网 发布:ubuntu 10.04 163 源 编辑:程序博客网 时间:2024/06/08 03:47

目录

  1. 算法描述
  2. 举例说明
  3. 训练误差分析
  4. 具体细节

1、算法轮廓

1、基本思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得到的判断,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。2、对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易的多,提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称基分类器),然后组合这些弱分类器,构成一个强分类器。3、算法具体描述输入:训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)},其中xi∈X,yi∈Y{-1,1};弱学习算法;输出:最终分类器G(x).步骤1:初始化训练数据的权值分布步骤2:对于m=1,2,3,...M次迭代    (a)使用具有权值分布Dm的训练数据集学习,得到一个弱分类器,加入弱分类器池    (b)计算Gm在训练数据集上的分类误差率    (c)计算基分类器Gm(x)的系数ɑm    (d)更新训练数据集的权值分布步骤3:构建基本分类器的线性组合,得到最终分类器

这里写图片描述

步骤1:初始化训练数据的权值分布假设数据集具有均匀的权值分布,即每个训练样本在基分类器的学习中作用相同,这保证第一步能够在初始数据上学习基分类器G1(x) 分布计算表示如下:

这里写图片描述

这里写图片描述

(第一小步)使用具有权值分布Dm的训练数据集学习,得到弱分类器

这里写图片描述

(第二小步)计算Gm在训练数据集上的分类误差率:

这里写图片描述

 wmi表示第m轮中第i个实例的权值,上式表明Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和,由此可以看出数据权值分布Dm与基分类器Gm(x)的分类误差率的关系。(第三小步)计算基分类器Gm(x)的系数ɑm

这里写图片描述

ɑm表示Gm(x)在最终分类器中的重要性,当em<=1/2时,ɑm>=0,并且ɑm随着em的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。(第四小步)更新训练数据的权值分布为下一轮作准备,

这里写图片描述

Zm是规一化因子,它使Dm+1成为一个概率分布

这里写图片描述

   每个权值计算公式也可以写成如下形式:

这里写图片描述

由此可看出,被基分类器误分类样本的权值得以扩大,而被正确分类样本的权值却得以减小。步骤3:构建基本分类器的线性组合:

这里写图片描述

得到最终分类器:

这里写图片描述

例:给定如下表训练数据,假设弱分类器由x小于v或x大于v产生,其阈值v使该分类器在训练数据集上的分类误差最低,使用Adaboost算法学习一个强分类器。

这里写图片描述

步骤1:初始化训练数据的权值分布

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

步骤3:最终分类器为:

这里写图片描述

上述例子的实验结果:

这里写图片描述

本次实验使用支持向量机作为基分类器,实验数据使用UCI数据集上的蘑菇数据集,训练集大小:4874维数:22维,测试集大小:77个(由于程序运行时间太长,因此随机选择了77个样本进行测试)。1、SVM:本次实验首先在训练数据集上使用支持向量机(线性核、惩罚参数C=1)训练出一个模型,然后在测试集上测试,准确率为:0.88441558441562、AdaBoost:使用支持向量机(线性核,惩罚参数C=1)作为基分类器,迭代次数(1-43),每次迭代都进行十次实验,然后取十次实验的平均结果作为本次迭代次数的最终结果。

这里写图片描述

3、训练误差分析

二类分类问题AdaBoost的训练误差界:

这里写图片描述

推论:如果存在 r>0 ,对所有m有rm ≥ r.则:

这里写图片描述

这表明在此条件下AdaBoost的训练误差是以指数下降的。

这里写图片描述

推到过程如下:

这里写图片描述

这里写图片描述

优点:1、AdaBoost的训练误差是以指数速率下降的2、Adaboost可以根据弱分类器的反馈,自适应地调整的错误率,进一步调整样本权值。3、可以使用各种方法构建弱分类器,adaboost算法提供的只是框架缺点:1、 在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。2、不容易出现过拟合(Why?使用一个小的数据集(马疝病数据集,测试集:135,训练集:300,基分类器:单层决策树。进行了验证,画出效果图如下图:)

这里写图片描述

4、轮盘赌算法----按权值进行采样

这里写图片描述
例子:

某大型超市为答谢新老客户,顾客可持购物发票到服务台进行抽奖。抽奖方式如右图所示,顾客只需转动轮盘即可。当轮盘停止转动时,顾客可以得到箭头指向的奖励。注意:不同的奖励所占的区域大小(权值)不同。抽到一支高露洁牙刷的可能性相比抽到500元现金券要大的多。

这里写图片描述

设有N类个体,第i类个体Xi的数量为Mi  ,则个体Xi的选择概率为:

这里写图片描述

轮盘赌算法可以用如下过程模拟实现:(1)根据积累概率公式构建概率带    

这里写图片描述

(2)在[ 0 , 1 ]内产生一个随机数r。(3)若r ≤ q1,则 x1被选中。(4)若qk-1 < r ≤qk (2 ≤ k ≤ N),则 xk  被选中。

这里写图片描述

这里写图片描述

泛化问题:
链接:https://www.zhihu.com/question/41047671/answer/127832345
来源:知乎
AdaBoost提出的论文对AdaBoost的泛化界进行了分析,使用了通常的学习器泛化界:泛化错误(泛化错误可理解为测试错误) < 训练错误 + 学习算法容量相关项 (1)
由(1)式可见,当训练错误不变时,应当选择简单的学习模型,从而减少学习算法容量。然而在实验中已经观察到,在一些情况,训练错误已经是0了,继续训练还能进一步减小泛化错误,这里的继续训练意味着增加学习算法容量,理应导致泛化错误上升才对。因此(1)直接套上AdaBoost是解释不通的。更有JMLR 2008的论文发现,更多的实验观察与Boosting的理论及其统计解释都不符合,例如使用多层的决策树竟然比使用一层的简单决策树更好。理论不能解释实验肯定是理论的问题,于是人们觉得,(1)式不够好,可能把更加细微的因素忽略了。
于是AdaBoost的作者针对这一情况,提出了新的学习器泛化界:泛化错误 < 训练Margin项 + 学习算法容量相关项 (2)
(1)中的训练错误是指一个数据样本分类对了就是0,错了就是1,而(2)里的“训练Margin”不仅看分类对错,还要看对的信心有多少,例如对于一个正类+1,分类器A输出+0.1,B输出+2,虽然都分类正确了,但B的信心更多。这样(2)就比(1)更加细致的刻画了学习器的表现。实验一看,果然AdaBoost在训练错误为0后,继续训练不能再减少训练错误了,确能够进一步减少训练Margin,也就是信心更足了。
看似解决了AdaBoost不容易过拟合的问题,然而好景不长,统计大牛Leo Breiman(bagging,random forest出自他手)来了个比 (2) 更紧的界(更紧就是更接近真实):泛化错误 < 训练Margin的最小值 + 学习算法容量相关项 (3)(3)的容量相关项目更小,但这不是关键,关键是根据这一理论,就应该去看训练Margin的最小值,也就是分类器在所有样本上信心最不足的那个。然而根据这一理论,Breiman设计了另一种Boosting算法arc-gv,最小训练Margin更小了,但实验效果比AdaBoost差了很多。于是乎Breiman的结论是,这个用训练Margin来刻画泛化错误整个就是不对的。大家都傻眼了,AdaBoost不容易过拟合的问题无解了。
7年之后。AdaBoost作者之一的工作发现,Breiman的实验竟然有问题:没有很好的控制决策树的复杂性,也就是说,AdaBoost和arc-gv关于“学习算法容量相关项”的值并不一样,虽然arc-gv的最小训练Margin更小,但后面一项更大啊,因此泛化错误就更大了。于是重做实验,都用一层决策树,这样后面一项都一样了,一看AdaBoost更好了,也就是说原来的Margin理论并没有错误,松了口气。该论文获ICML’06最佳论文奖。
但是这篇最佳论文奖并没有终结问题,当都用一层决策树时,AdaBoost的最小训练Margin比arc-gv还要小,也就是说,并没有否定(3)式。然而在实验中,最小化这个最小Margin的效果并不好。这篇论文也指出,可能要看Margin的分布,也就是算法在所有样本上的信心,而不是最差的那个样本上的信心。但这只是“可能”,理论研究者最求的是更紧的界。
接下来都是我国研究者的贡献了,北京大学王立威等人的到了比(3)更紧的界,其中“训练Margin的最小值” 被替代为 “训练Margin的某一个值”,这某一个要解一个均衡式,但不管怎么说,最小Margin被替代掉了。南京大学的高尉和周志华教授推导出了“第k Margin界”,(3)和 “训练Margin的某一个值” 都是其k赋特定值的特例,并由此得到了基于“算法在所有样本上的信心”的界,比(3)式更好。
以上内容可见:CCL2014_keynote-周志华Margin理论讨论的主要是学习算法在训练样本上的信心,学习算法的容量是不是随着训练轮数的增加而增加呢,其实并不一定,近来有工作表明,有差异的学习器的组合,能够起到正则化的作用,也就是减少学习算法容量(Diversity regularized ensemble pruning. ECML’12; On the Generalization Error Bounds of Neural Networks under Diversity-Inducing Mutual Angular Regularization)。在许多variance-bias 分解实验中也观察到,AdaBoost不仅是减少了bias,同时也减少了variance,variance的减少往往与算法容量减少有关。
总之这一方面还值得进一步探索,新原理的发型,有可能导致新型高效学习算法的发明,意义重大。

原创粉丝点击