机器学习技法笔记-Lecture 8 Adaptive boosting

Adaboost算法

通过对上一轮g犯的错误的强调,来学习下一轮的g,得到多个差异的g后进行线性组合得到G。

假设对不同的点,犯得错有不同的权重,最后的Ein是一个带权重的err求和

上一节讲到的bagging,如果同一个样本点被重复抽样,其实也就是有个类似u_n的权重。

现在通过类似的思路,用re-weight来给每个样本赋权重,目的是得到不同的g。

在第t轮,每个样本点有权重u_n(t),最小化Ein得到 g_t。怎么样才能让g_t 与下一轮的 g_(t+1) diverse 呢?

首先我们肯定的是g_(t+1)在u_n(t+1)下是表现最好的,如果g_t在这个下面表现不好,那么它俩就是diverse的。

接下来的问题就是 如何构造 u_n(t+1) 让 它俩diverse?  一个思路是 在 u_(t+1) 下,g_t的表现基本等于乱猜

对上式进行改写,就是让 方块和圆圈相等

比如在 t 轮的时候,7337个样本(就是u_n(t)的求和,想象成re-sample)上g_t有1126个判错了,其余判正确了,那么在下一轮,对1126错的权重进行放大,其余的缩小。epsilon_t是当前犯错的比例,对错误的样本,乘以(1-epsilon_t)。

注意这里的错误率是在u_n上的平均

做一个scale,当我们的分类器比随机好一点时,在下一轮错误的点就会被放大

初始的u可以选择1/N. 得到一系列g后,如何将它们融合为G呢?最好不要uniform,可以使用linear或non-linear的方式。

下面是标准的 Adaboost算法,提供了一种融合为G的方式,使用linear aggregation,能够在得到每一个g的时候就得到它的aggregation权重。权重与g的成正比。因为g越好,菱形越大,那么也希望融合中这个g的重要性较大。

注意到这里讲到的都是classification。

另外算法A找到的g是使带有权重的Ein最小,而不是优化epsilon(对u取了平均的Ein)。(但是u其实是相当于已知的,求和是一个常数,所以最小化Ein和最小化epsilon是不是其实没有差别?)

又想了一下,Ein是error的衡量,平均后epsilon是error rate的衡量。一直以来算法A都是对error最小化来求g,没毛病。这里可以看做是对re-sample的data的error求最小。

Adaboost的理论保证

只要每个g都比随机的好一点,那么最后Adaboost的结果就是好的。

例子中adaboost用来做人脸识别还能起到特征选择的作用

原文地址:https://www.cnblogs.com/akanecode/p/7055158.html