一、boosting算法的基本原理
集成学习器根据个体学习器的生成是否存在依赖关系,可以分为两类:个体学习器间存在强依赖关系,必须串行生成,代表算法是boosting系列算法;个体学习器之间不存在强依赖关系,可以并行生成,代表算法是bagging和随机森林系列算法。在boosting系列算法中,AdaBoost是最著名的算法之一。AdaBoost既可以用作分类,也可以用作回归。
Boosting算法的工作机制是首先从训练集中用初始权重训练出一个弱学习器1,根据弱学习器的学习误差率来更新训练样本的权重,使弱学习器1学习误差率高的训练样本点的权重变高,在后面的弱学习器2中得到更多的重视,然后基于调整权重后的训练集来训练弱学习器2,如此重复,直到弱学习器数目达到事先指定的数目T,最后将T个弱学习器通过集合策略进行整合,得到最终的强学习器。从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。
Boosting系列算法需要解决以下几个具体问题:
1、如何计算学习误差e?
2、如何得到弱学习器权重系数a?
3、如何更新样本权重D?
4、使用何种结合策略?
二、AdaBoost算法的基本思路
假设训练数据集
训练集的第k个弱学习器的输出权重为
初始权重
2.1 Adaboost的分类问题
误差率e
由于多元分类是二元分类的推广,这里假设是二元分类,输出为{-1, 1},则第k个弱分类器Gk(x)在训练集上的加权误差率为
弱学习器权重系数a
对于二元分类问题,第k个弱分类器Gk(x)的权重系数为
从上式可以看出,分类误差率e_k越大,则对应的弱分类器权重系数越小,误差率小的弱分类器权重系数越大。这个权重系数公式的来源在后文AdaBoost损失函数优化时再讲。
更新样本权重D
假设第k个弱分类器的样本集权重系数为
,则第k+1个弱分类器的样本集权重系数为
这里Z_K是规范化因子
从
的计算公式可以看出,如果第i个样本分类错误,则