我爱编程机器学习与数据挖掘

Adaboost集成算法

2018-09-28  本文已影响6人  owolf

一、Adaboost算法原理

        从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

        使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树。

二、Adaboost二分类算法流程

三、AdaBoost二分类的实例

四、AdaBoost的损失函数(推导系数a和权重w)

        Adaboost算法还有另一个解释:Adaboost是模型为加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题。

        模型为加法模型好理解,我们的最终的强分类器是若干个弱分类器加权平均而得到的。

        前向分步学习算法也好理解,我们的算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。也就是说,第k-1轮的强学习器为:

        而第k轮的强学习器为:

        上两式一比较可以得到:

        可见强学习器的确是通过前向分步学习算法一步步而得到的。

         前向分步算法的损失函数是指数函数:

则Adaboost算法的损失函数为指数函数,即定义损失函数为:

利用前向分步学习算法的关系可以得到损失函数为:

五、Adaboost多元分类算法

        原理和二元分类类似,最主要区别在弱分类器的系数上。比如Adaboost SAMME算法,它的弱分类器的系数:

        其中R为类别数。从上式可以看出,如果是二元分类,R=2,和我们上面的二元分类算法中的弱分类器的系数一致。

六、Adaboost算法的正则化

        为了防止Adaboost过拟合,我们通常也会加入正则化项,这个正则化项我们通常称为步长(learning rate)。定义为ν,对于前面的弱学习器的迭代:

如果我们加上了正则化项,则有:

        ν的取值范围为0<ν≤1。对于同样的训练集学习效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。

参考文献:

《统计方法学》李航

Adaboost算法原理小结

上一篇下一篇

猜你喜欢

热点阅读