本文參考整理了Coursera上由NTU的林軒田講授的《機(jī)器學(xué)習(xí)技法》課程的第八章的內(nèi)容,主要講解了Adaptive Boosting的引入動(dòng)機(jī)、如何通過加權(quán)example來獲得多樣的假設(shè)函數(shù)、AdaBoost的偽代碼實(shí)現(xiàn)及其在現(xiàn)實(shí)生活中的應(yīng)用等。文中的圖片都是截取自在線課程的講義。
歡迎到我的博客跟蹤最新的內(nèi)容變化。
如果有任何錯(cuò)誤或者建議,歡迎指出,感激不盡!
--
本系列文章已發(fā)八章,前七章的地址如下:
- 一、線性SVM
- 二、SVM的對(duì)偶問題
- 三、Kernel SVM
- 四、Soft-Margin SVM
- 五、Kernel Logistic Regression
- 六、Support Vector Regression
- 七、Blending and Bagging
Motivation of Boosting
一個(gè)簡(jiǎn)單類比
想像一個(gè)小學(xué)老師教小學(xué)生如何分辨一張圖片是否是一個(gè)蘋果的場(chǎng)景,老師在網(wǎng)絡(luò)上搜集了很多蘋果的圖片。
10張?zhí)O果的圖片
10張非蘋果的圖片
你怎樣描述一個(gè)蘋果的特征?
- Michael:
蘋果是圓形的
藍(lán)色部分表示錯(cuò)誤識(shí)別為蘋果的例子或者沒有正確識(shí)別出蘋果的例子。
課堂已經(jīng)獲得的特征:
- 蘋果是圓形的(Michael)
老師可能會(huì)把錯(cuò)誤的例子舉出來,把分類正確的例子縮小,把錯(cuò)誤的例子放大,投入更大的關(guān)注,再尋找特征。
- Tina:
蘋果是紅色的
課堂已經(jīng)獲得的特征:
- 蘋果圓圓的(Michael)
- 蘋果紅紅的(Tina)
老師繼續(xù)放大錯(cuò)誤的,縮小正確的
老師:的確,大部分蘋果是紅色的,但是只靠圓形和紅色來區(qū)分蘋果還是有可能犯錯(cuò),你有其他的建議嗎?Joey?
- Joey:
蘋果也可能是綠色的
課堂已經(jīng)獲得的特征:
- 蘋果圓圓的(Michael)
- 蘋果紅紅的(Tina)
- 蘋果可能是綠色的(Joey)
老師繼續(xù)放大錯(cuò)誤的,縮小正確的
- Jessica:
蘋果上面有莖
課堂已經(jīng)獲得的特征:
- 蘋果圓圓的(Michael)
- 蘋果紅紅的(Tina)
- 蘋果可能是綠色的(Joey)
- 蘋果上面有莖(Jessica)
通過不斷集中于分類不太完美的例子,尋找新的特征描述,我們得到了比原來更加豐富的對(duì)蘋果的認(rèn)知,這就是逐步增強(qiáng)法(adaptive boosting)的原理所在。
Motivation
對(duì)應(yīng)到我們的adaptive boosting algorithm的概念中
學(xué)生:代表一些很簡(jiǎn)單的hypotheses gt(就像垂直/水平分隔線)
班級(jí):整個(gè)班級(jí)有很多學(xué)生,就是一個(gè)復(fù)雜的hypothesis G(就像下圖中黑色的實(shí)線),就是灰線的aggregation。
老師:一個(gè)循循善誘的學(xué)習(xí)算法,它使得學(xué)生去專注于犯過錯(cuò)的關(guān)鍵樣例中。
下一節(jié),我們將介紹逐步增強(qiáng)法的數(shù)學(xué)形式。
Diversity of Re-weighting
Bootstrapping as Re-weighting Process
Bagging的核心就是bootstrapping
在base algorithm中獲得gt的要求可能如下
既然兩筆(X1,y1)一樣,不妨寫成更簡(jiǎn)潔的形式
我們給每筆資料添加一個(gè)權(quán)重u
顯然,兩種表示方式等價(jià)。
這樣,Bagging所做的就是通過bootstrapping產(chǎn)生這些u
base algorithm嘗試最小化bootstrap-weighted error.
Weighted Base Algorithm
Bagging中u都是整數(shù),但既然u是權(quán)重,自然可以推廣到全體實(shí)數(shù)。
如何求解帶有權(quán)重的Ein最小化問題呢?
SVM
比如,在SVM中,我們使用C來表示0/1錯(cuò)誤的權(quán)重,加上權(quán)重u后
un就會(huì)跑到αn的上限位置,因此求解weighted SVM是容易的。
Logistic Regression
SGD抽樣時(shí)候的概率大小不同,被抽到的概率與un成正比。
因此,把un放到algorithm中,不是特別困難。如果你學(xué)過《機(jī)器學(xué)習(xí)基石》的第8章,可能記得我們講過class-weighted,不同類別的錯(cuò)誤代價(jià)不同,現(xiàn)在不是+1或-1哪一種更重要,而是哪一個(gè)點(diǎn)更重要,即example-weighted是class-weighted的擴(kuò)展。
因此,求解weighted base algorithm不是困難點(diǎn),先想象我們已經(jīng)會(huì)做這件事情了。
Re-weighting for More Diverse Hypothesis
既然,我們的base algorithm會(huì)根據(jù)u回傳g,那么,我們希望g越不一樣越好,怎樣的u能保證這一點(diǎn)?
how to re-weight for more diverse hypotheses?
如果gt對(duì)于u(t+1)表現(xiàn)很差,那么像gt的hypotheses都不會(huì)被傳回作為g(t+1),因此g(t+1)和gt差別就很大。
表現(xiàn)很差如何衡量?
gt對(duì)u(t+1)的預(yù)測(cè)錯(cuò)誤的概率,和隨便猜的幾率差不多,即1/2(樣本平衡的狀態(tài)下)。
Optimal Re-weighting
我們需要
一種可能的方法是重新放縮權(quán)重
如果第t輪錯(cuò)誤率為εt,正確率則為1-εt。
'最優(yōu)的'重新放縮方法是正確的點(diǎn)所對(duì)應(yīng)的un乘上錯(cuò)誤率εt,錯(cuò)誤的點(diǎn)的un乘上正確率(1-εt)。
Adaptive Boosting Algorithm
Scaling Factor
定義放縮因子則
與上節(jié)的放縮效果等價(jià)。
◇t告訴了我們更多物理意義,比如如果◇t>=1,則當(dāng)且僅當(dāng)εt<=1/2
base algorithm應(yīng)該比亂猜的效果好,則εt<=1/2,則◇t應(yīng)該大于1,也就是錯(cuò)誤的真的被放大了,正確的真的被縮小了,也就是我們之前講的"放大錯(cuò)誤、縮小正確",正如剛才的類比中的老師所做的事情。
A Preliminary Algorithm
- 希望g1能對(duì)Ein最優(yōu),即un(1) = 1/N
- G(X)如何aggregate這些g呢?
- uniform g1做好了D1,但g2在D1上應(yīng)該做得很糟,一人一票,也許不會(huì)做得很好
- linear,non-linear? as you wish
接下來,介紹一種在計(jì)算g中順便將g線性融合的特殊算法。
Linear Aggregation on the Fly
α怎么計(jì)算?
- 希望好的g能多給一點(diǎn)票,即α大一點(diǎn),而壞的g的α小一點(diǎn)。
- 那么什么是好的g?
好的g,Ein(u)比較小,錯(cuò)誤率ε比較小,那么◇比較大,那么αt應(yīng)該是某個(gè)單調(diào)函數(shù)(◇t),設(shè)計(jì)該演算法的人使用了單調(diào)函數(shù)ln()。
即
如果ε=1/2,則◇t=1 ==> αt = 0 (對(duì)于壞的gt的權(quán)重為0)
如果ε=0,則◇t=∞ ==> αt = ∞ (好的g有更大的權(quán)重)
因此,adaptive boosting = 弱弱的base learning algorithm A(學(xué)生) + 最優(yōu)的重新加權(quán)因子◇t(老師) + '神奇的'線性aggregation系數(shù)αt(班級(jí))。
Adaptive Boosting (AdaBoost) Algorithm
AdaBoost:三個(gè)臭皮匠,勝過諸葛亮。
AdaBoost的理論保證
VC bound
- 第一項(xiàng)可以做得很小,理論已經(jīng)證明 Ein(G) = 0 after T = O(log N)輪。(如果總有εt<=ε<1/2,即base algorithm比"亂猜"表現(xiàn)好)
- 第二項(xiàng)T很小、N很大,則整體也很小
則Eout(G)也很小,則實(shí)際表現(xiàn)很好。
從boosting的角度看待AdaBoost:
只要base algorithm A稍微比"亂猜"好一點(diǎn),那么通過AdaBoost + A就可以使它變得很強(qiáng)(Ein = 0 && Eout 很小)。
Adaptive Boosting In Action
decision stump
一個(gè)流行的選擇:決策樁
它是在某個(gè)單一的feature上的正/負(fù)向射線,有三個(gè)參數(shù)(feature i、threshold θ、direction s)。
可以通過枚舉(i,θ,s)的組合,真的做到最好。
物理意義:2D平面上的垂直/水平線。
優(yōu)化效率:O(d*NlogN)
decision stump如果單獨(dú)用,大部分情況下太弱了,但配合AdaBoost可以變強(qiáng),且允許有效率地最小化Ein(u)。
A Simple Data Set
'Teacher'-like algorithm works!
A Complicated Data Set
邊界是一個(gè)類似sin的形狀
AdaBoost-Stump: non-linear yet efficient
AdaBoost-Stump in Application
世界上第一個(gè)'實(shí)時(shí)'人臉識(shí)別程序
- AdaBoost-Stump作為核心模型,從24*24的小圖塊的162336個(gè)可能性中選擇出來關(guān)鍵的圖案,然后進(jìn)行線性aggregation,即通過AdaBoost-Stump來進(jìn)行特征選擇。
- 修改了線性融合G,提前排除非人臉部分。
AdaBoost-Stump: efficient feature selection and aggregation。
Mind Map Summary
我們講過了Bagging,它是Learning Uniform Aggregation;我們講過了AdaBoost,它是Learning Linear Aggregation。在下一章,我們將介紹一種Learning Conditional Aggregation的方法,即決策樹(Decision Tree),敬請(qǐng)關(guān)注。