http://blog.csdn.net/njzhujinhua/article/details/38343741
boosting增强法的目标是提高任何给定的学习算法的分类准确率。
Boosting方法从弱学习算法出发,通过学习训练出一系列弱分类器,然后通过组合这些弱分类器构造一个强分类器。大部分Boosting方法都通过改变训练样本集学习得到,改变训练样本集则可通过改变训练数据的概率分布达到,样本集或是全部或是一定规则的重采样。
Boosting方法一般过程:
其首先根据已有的训练样本集设计一个分类器,要求这个分类器的准确率比平均性能要好一点,然后改变训练样本并得到后续的分类器,最后通过组合这些弱分类器形成一个总体分类器,该最终分类器对训练样本集的准确率能任意高。在训练每一个分类器时所使用的样本都要根据上一个分类器的训练结果进行调整,即由前一个分类器的最富信息”most informative”的样本点组成。
Boosting方法有很多实现,最有代表性的是AdaBoost,其由Freund和Schapire在1995年提出。
Boosting方法有两个问题,
[1]如何调整每个训练用样本的权值或概率分布。
[2]如何将训练得到的各弱分类器组合成强分类器。
关于第一个问题,AdaBoost采用的是提高那些被前一轮弱分类器错误分类的样本的权值,而降低那些被正确分类的权值。如此一来被前面简单分类器误分类的样本在后面构造略复杂的分类器时能得到更大关注。
第二个问题AdaBoost采取的是加权多数表决,即分类误差率小的分类器表决时占比重大,分类误差率大的则占比小。
AdaBoost算法如下
1. 给定训练样本集D,其中x为样本,y为其类别,取值为{-1,1}; 初始化D中样本权重为1.0/n ,即为训练样本的初始概率分布;
3. 第k次迭代:
(4) 训练样本的概率分布为Wk(i)时,训练得到弱分类器;
(5) 计算弱分类器的在训练样本集上的错误率; Ek计算为分类错误样本的权重之和. Ek肯定是要小于0.5的了,不然选取分类器的反面就行了,他说东实际就是西.
(6) 计算分类器Ck的系数;
(7) 更新样本权重;
Wk+1(i)=Wk(i)*exp(-\alpha_k*yi*Ck(xi))/Zk,
考虑到yi*Ck(xi)在分类错误时为-1,在分类正确时符号相同,其值为1, 于是有了图中第7行的结论. 其中Zk为归一化系数
exp(-\alpha_k)=sqrt(Ek/(1-Ek))<1,
exp(\alpha_k)=sqrt((1-Ek)/Ek)>1.
这样一来,正确分类的样本权值被降低,错误分类的权值得到提高.
经过k_max次循环之后, 等到k_max个弱分类器,将其按照第6步得到的权重系数alpha_k进行线性叠加得到最终的强分类器.
参考文献
[1]Pattern classification - Richard O. Duda, Peter E. Hart, David G. Stork
[2]统计学习方法 李航