8. 机器学习技法--Adaptive Boosting

Lecture 8:Adaptive Boosting

8.1 Motivation of Boosting

     本小节是通过 2 个例子来说明 Boosting 是什么。第一个例子是教小朋友识别苹果,第二个例子是 2D 空间下的 2 分类问题。

    在第一个例子中,每次提出算法判断标准都和之前的不同。在第二个例子中采用的 decision stump,也等于每次算法判断标准不同。这个是不是就是 Boosting 算法(aggregation 算法)所要求的 Diversity ?

            图 8-1 分别根据形状、颜色、根茎辨别苹果

图 8-2 Boosting with Decision Stump 

图 8-3 更复杂的 Boostring with Decision Stump

8.2 Diversity by Re-weighting

     回忆一下,我们在上一节讨论 Aggregation 时提到了希望求出的 $g_{t}$ Diversity。但是没有提到如何让 $g_{t}$ Diversity。本小节给出一种求 Diversity $g_{t}$ 的方法。

先回忆一下,上一节提到的 bootstrap 过程是怎么样的。bootstrap 后的 in-sample 可以看出在整个训练集上 in-sample error with coefficient。如图 8-4 所示

                                     图 8-4 

        图 8-4 表达出的意思,对计算出的模型而言。不同样本点的受关注程度是不同的。 

       比如在 SVM 中那些 away from boundary or some one on boundary 的样本不受关注、部分 on boundary point 起一些作用、在 fat boundary 内的 point 提供正比于远离 boundary 距离的贡献。

       以及在 LR 算法中,每个样本的的 possibility 不同。

       以及在样本不均衡和代价不平衡时不同类别的点的贡献也不同相同。

       每个样本贡献不同是合理的,因为某个点的信息熵基本上不同的。携带信息熵多的点就应该被关注,携带信息熵低的点就应该减少关注Q1(完全是个人 YY)!

       现在,我们来讨论一下如何根据 $g_{t}$ 求出 $g_{t+1}$,如图 8-5 所示。

                          图 8-5

 什么才叫 $g_{t}$ 和  $g_{t+1}$ diff 最大呢?就是让 $g_{t+1}$ 的系数用于 $g_{t}$ 的结果最接近瞎猜的结果,即 $\frac{1}{2}$(会不会存在$g_{t}$ 和 $g_{t+x}$ 很接近甚至相等?类似有限群的概念 )。如图8-6所示

                图 8-6

 上述算法的具体一种可行方法如图 8-7所示,另外一种可行方法如图 8-8 所示

                                         图  8-8 

                                        图 8-9

      对于 $g_{1}$,我们让所有的样本的系数都一样(如果是无限的样本呢?)。然后逐步迭代,求出所有的 g (什么时候停止呢?)。

我们已经能计算出 $g_{t}$,但是我们该如何计算 $\alpha_{t}$ 呢?如果每个 $\alpha$ 都相等,则 $E_{in}$ 不一定是最小的(比如某个 $g_{t}$ 的 E 很小,那么 $g_{t+1}$ 就会很接近 $\frac{1}{2}$)。

8.3 Adaptive Boosting Algorithm

 Adaptive Boosting 是一种 linear Aggregation on the fly 算法,它除了有 8.2 小节提到的算法的优点还能在线算出 $\alpha_{t}$。如图 8-10 所示

                                  8-10

最关键的是,$g_{t}$ 的系数 $\alpha_{t}$ 能根据 $g_{t}$ 的表现进行 scale upQ2,如图 8-11 所示

                                图  8-11 

 

在第 7 节中,我们讨论了 aggregation 算法 hypothesis 的 VC Dimension 会很大。现在我们来看下 adaptive aggregation 的 VC Dimension,有下图所示的公式

                                图  8-12

8.4 Adaptive Boosting in Action

现在我们来 Adaptive Boosting 应用的例子,我们用简单的 decision stump 来分类图 8-13 所示的数据,单一的decision stump 分类能力是很弱的。采用 adaptive boosting 后最终的分类边界如图 8-14 所示

                 图 8-13

                  图 8-14

adaboost-stump 还是工业上第一个实时人脸识别的算法Q4,如图 8-15 所示

                                   图 8-15

adaboost-stump 是不是很厉害,但是在下一节还会学到更厉害的算法。先上图为敬

                                   图 8-16

 最后贴图总结

                              图 8-17

题外话:

Q1: 不知道自己 YY 的那段话是不是对的?个人感觉 8.2 节应该放到 7.3 节讲解。

Q2:一直很困惑,Aggregation 算法需要 diversity。万一算出一堆表现极差的算法,用于 aggregation 岂不完蛋。现在有 scale 系数,可以抑制这个问题!

Q3: Adaptive boosting 是最小化 in-sample error 还是 验证集上的错误呢?看了本节视频和《统计学习方法》中的例子都是 mini 训练集上上的错误(第 7 节上讨论了用验证集错误来选择,真是很奇怪)

Q4:这个例子的最大启示是,用 adaboost-stump 用于 feature selection 。我还是缺乏项目经验,只会套用别人的做法还不会也不敢提出自己的想法!

Q5:图 8-5 描述的算法,从道理上来说是对的。但是如何操作呢?我觉得只有对某些特别的算法如树形算法才有用。后续接触的 adaptive boost 算法也确实是基于树形算法(应该是可以作用于那些基于样本部分特征集算出来的 $g$)

Q6:问个很有趣的问题,Adaboost 为什么叫 Adaptive boosting ? The Answer to This Question is: 每个新的模型都会基于前一个模型的表现结果进行调整,这也就是为什么AdaBoost是自适应(adaptive)的原因 (源自知乎)

T1: Adaboost 应该算是 boosting 算法,但是从本节的算法描述来看。怎么看都像是 bagging 算法。等第 11 节的课程解惑

T2:图 8-10 还有一张类似的图,如下图所示

 

                                                                           图  T2-1

关键词:re-weight 

 

posted @ 2018-01-10 19:59  tmortred  阅读(243)  评论(0)    收藏  举报