Adaboost这种增强学习方法之前是看过很多资料都没看懂,最近看李航的《统计学习方法》和 其他几位同学的博客,才明白了其中的原理。
参考资料:https://blog.youkuaiyun.com/guyuealian/article/details/70995333
李航的《统计学习方法》
什么是增强学习?
增强学习即boosting,它的基本思想是集成思想,即多个专家做出的决策的有效组合要比一个专家做出的决策要好。不同于bagging的并行训练,且子分类器之前不相关。boosting是串行训练的。但和bagging一样,boosting的目标也是提高弱分类器的性能。弱学习是存在一个多项式算法,学习结果仅仅比随机猜测好一点点。强学习是存在一个多项式算法,学习的结果很好。
Adaboost简介
boosting是怎样串行训练弱模型并将其集成的呢?《统计》一书中说了,是通过改变样本的概率分布,调用弱学习器对不同分布的样本分而治之,并将弱分类器组合成强分类器。不好理解吧,那我们来看Adaboost是怎样做的,Adaboost会提高被前一个弱学习器分类错误的样本权值,降低被前一个弱学习器分类正确的样本权值,是前者在新一轮训练中在分类错误率中影响增大,后者影响减小。那么在新一轮训练中通过选择参数最小化分类错误率,会选择将前者分类正确的模型作为最优模型。最后将弱学习器线性组合得到最终的分类模型。
Adaboost算法可以描述为以下三个步骤:
1) 对个样本权值分布
进行初始化, 赋予相同的权重
2) 然后,训练弱分类器. 如果一个样本被正确分类,它的权重就会减少,如果被错误分类,它的权重就会增加。样本权重更新后被用于下一轮的训练,如此迭代。
3)弱学习器训练完成后,增加正确率高的学习器在最终组合里的权重,即提高话语权,正确率低的学习器话语权就减少。最终,通过线性组合这些弱学习器组成了一个强学习器。
Adaboost的算法过程
给定训练数据集:,其中
用于表示训练样本的类别标签,i=1,...,N。Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。
相关符号定义:
Adaboost的算法流程如下:
1) 首先,初始化数据的权值分布,每个样本被赋予相同的权值1/N,这时样本的权值分布为:
2)进行迭代
a) 选择一个误差率最小的弱分类器作为第
个基分类器
,并计算弱分类器h:
, 并计算该弱分类器在
上的分类误差率:
分类误差率是分类错误样本的权值之和。
b) 计算该分类器在最终分类器中所占权重:
因为弱分类器中,, 因此
越小,
越大。即分类准确率越高,话语权越大。
c) 更新样本权重分布:
最后一步的变换没有明白。