机器学习技法笔记-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的
注意到这里讲到的都是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用来做人脸识别还能起到特征选择的作用