Adaboost
假设我们的训练集样本是
训练集的在第k个弱学习器的输出权重为
二元分类
弱学习器误差
对于二元分类问题,输出为${-1,1}$,则第k个弱分类器$G_{k}(x)$在训练集上的加权误差率为
弱学习器权重
接着我们看弱学习器权重系数,对于二元分类问题,第k个弱分类器Gk(x)的权重系数为
从上式可以看出,如果分类误差率ek越大,则对应的弱分类器权重系数αk越小。也就是说,误差率小的弱分类器权重系数越大。
更新样本权重
第三个问题,更新更新样本权重D。假设第k个弱分类器的样本集权重系数为$D(k)=\left(w_{k 1}, w_{k 2}, \ldots w_{k m}\right)$,则对应的第k+1个弱分类器的样本集权重系数为
这里Zk是规范化因子
如果第i个样本分类错误,则$y_{i} G_{k}\left(x_{i}\right)<0$,导致样本的权重在第k+1个弱分类器中增大,如果分类正确,则权重在第k+1个弱分类器中减少.
集合成强学习器
最后一个问题是集合策略。Adaboost分类采用的是加权表决法,最终的强分类器为
其中sign函数为符号函数:
回归问题
弱学习器误差
我们先看看回归问题的误差率的问题,对于第k个弱学习器,计算他在训练集上的最大误差
然后计算每个样本的相对误差
最终得到第k个弱学习器的 误差率
弱学习器权重
我们再来看看如何得到弱学习器权重系数α。这里有:
更新样本权重
对于更新更新样本权重D,第k+1个弱学习器的样本集权重系数为
集成强回归器
损失函数
我们的算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。也就是说,第k-1轮的强学习器为
而第k轮的强学习器为
上两式一比较可以得到
可见强学习器的确是通过前向分步学习算法一步步而得到的。
Adaboost损失函数为指数函数,即定义损失函数为
利用前向分步学习算法的关系可以得到损失函数为
令$w_{k j}=\exp \left(-y_{i} f_{k-1}(x)\right)$,它的值不依赖于$\alpha,G$,因此与最小化无关。
将这个式子带入损失函数,损失函数转化为
总结
这里对Adaboost算法的优缺点做一个总结。
Adaboost的主要优点有:
1)Adaboost作为分类器时,分类精度很高
2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
3)作为简单的二元分类器时,构造简单,结果可理解。
4)不容易发生过拟合
Adaboost的主要缺点有:
1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。