042(11.7)初识AdaBoost


AdaBoost 即 Adaptive Boosting,通俗的讲,就是把许多“弱弱”的hypotheses(学习器)合并起来,变成很强的预测模型。

引入:bagging中原有的 Weightd Base Algorithm

首先,要说明,AdaBoost采用的是序列采样。
里面有提到自助采样和序列采样

Weightd Base 算法如下图,目的是最小化bootstrap-weighted error。

在这里插入图片描述
(每一个学习器的优化目标)

其中,u相当于是权重因子,当中第i个样本出现的次数越多的时候,那么对应的越大,表示在error function中对该样本的惩罚越多

所以,从另外一个角度来看bagging,它其实就是通过bootstrap的方式,来得到这些值(u),作为犯错样本的权重因子,再用base algorithn最小化 error function,得到不同的学习器。这个error function被称为bootstrap-weighted error。

示例如下:

在这里插入图片描述
这里u的选取方法是一般的计数方法,而后面提到的AdaBoost中的u的选取方法有所不同。

AdaBoost中样本权重u的选取

从集成学习的目的和特点可知,我们应使不同学习器之间的差别较为明显。那么如何选取u,从而实现这一点呢?

一个广为接受的答案是:“做好自己,互不干涉”,即学习器A的u用于A表现达标,但B的u用于A(样本一一对应位置),表现则不理想。

在这里插入图片描述
用数学表达式,进一步实现这种差别:

在这里插入图片描述
如果用学习器A训练,uB的表现(即error)近似为0.5的话,表明对的预测分类没有什么作用,就像抛硬币一样,是随机选择的。这样的做法就能最大限度地保证会与有较大的差异性。

要让上式等于0.5的话,一种简单的方法就是利用放大和缩小的思想,将犯错误的和没有犯错误的做相应的乘积操作,使得二者值变成相等,或是利用犯错的比例来做。

在AdaBoost中,常构造下图的尺度因子以达到上面的目的:
在这里插入图片描述

在这里插入图片描述
(适用于本次学习中的所有样本权重)

在这里插入图片描述
此外,还有一个小问题,初始的u应为多少?一般来说,为了保证第一次 bootstrap-weighted error 最小,如下设置即可:

在这里插入图片描述

AdaBoost 如何集成

在这里插入图片描述
继续探讨,假设我们选用线性组合法,则需确立组合系数α。我们需要制订一种算法,在得到每一个学习器时,便能得到对应的组合系数,不必在最后集成时重新计算。

考虑到α和错误率的相关性,简单的做法可以直接利用对数函数:

在这里插入图片描述
好处:

在这里插入图片描述

Adaptive Boosted Decision Tree

顾名思义,ABDT 即以决策树为基学习器的 AdaBoost 算法。

  • sampling:

    前面提到,AdaBoost算法为基学习器中每一个样本赋予权重u,但是在决策树模型中,例如C&RT算法中并没有引入u,该如何如何在决策树中引入这些权重呢?

    如果照本宣科,在决策树将当前分支下犯错误的点赋予权重,每层分支都这样做,会比较复杂,不易求解。为了简化运算,保持决策树算法本身的稳定性和封闭性,我们可以把决策树算法当成一个黑盒子,而从数据来源D’上做一些处理。

    由前文可知,权重u的赋值应反映对应样本出现的概率,为的是“放大错误”。那么可以根据u值,对原样本集D进行一次重新的随机sampling,也就是带权重的随机抽样。sampling之后,会得到一个新的D’,D’中每个样本出现的几率与它权重u所占的比例应该是差不多接近的。

    上面的做法可以概括为,把赋予权重u这一操作,转换为目的性的随机抽样。这种对数据本身进行修改而不更改算法结构的方法很重要!

  • 基学习器组合权重过大与剪枝:

    如果有一棵完全长成的树,由所有的样本训练得到。若每个样本都不相同,决策树不断切割分支,直到所有的都被完全分开,且最终得到它的Ein为0,则组合权重α为无穷大,与发挥集体智慧来得到优秀的模型G这一目的相矛盾。

在这里插入图片描述
在这里插入图片描述
解决方法:

1.对树部分修剪(pruned),比如只使用一部分样本,这在sampling的操作中已经起到这类作用;

2.限制树的高度(max_depth)。

AdaBoost的奥妙之处(GDBT 前言)

在这里插入图片描述
继续讨论,如果联系SVM相关知识,w与的乘积再除以w的长度就是margin,即点到边界的距离。另外,乘积项再与相乘,表示点的位置是在正确的那一侧还是错误的那一侧。所以,回过头来,这里的voting score实际上可以看成是没有正规化(没有除以w的长度)的距离,即可以看成是该点到分类边界距离的一种衡量

从效果上说,距离越大越好,也就是说voting score要尽可能大一些。

所以,我们算法的目的就是让 yn 与 voting score 的乘积为正,且越大越好。也就是说,如果 voting score 表现不错,那么相应 u(t+1) 应该是最小的。

在这里插入图片描述
那么在AdaBoost中,随着每轮学习的进行,每个样本的 ut 是逐渐减小的,直到u(T+1)最小。以上是从单个样本点来看的。总体来看,所有样本的之和应该也是最小的。

因此,我们的目标也可以理解为:

在这里插入图片描述
在这里插入图片描述
此外,可以说GBDT就是AdaBoost-DTree的regression版本,二者具有一定的相似性,以后会展开介绍。

小结

上面介绍的整个算法被称为Adaptive Boosting。它由三部分构成:base learning algorithm (各学习器),re-weighting factor(错误率) 和linear aggregation(α) 。

在这里插入图片描述
综上所述,完整的 AdaBoost 算法流程如下:

在这里插入图片描述


待理解之处:

在这里插入图片描述

参考资料:

  1. 机器学习技法8:AdaBoost
  2. 机器不学习:机器学习时代三大神器

猜你喜欢

转载自blog.csdn.net/u013598957/article/details/109550681