機器學習技法總結(五)Adaptive Boosting, AdaBoost-Stump,決策樹


上一講主要利用不同模型計算出來的g。採用aggregation來實現更好的g。假設還沒有做出來g。我們能夠採用bootstrap的方法來做出一系列的“diversity”的data出來。然后訓練出一系列的g。比方PLA來說,盡管模型一樣,就是直線對二維平面的切割,模型都為直線,那么我們利用bootstrap來做出不同的數據,然后計算出不同的g,然后融合后就能夠得到非常好的效果。或者也能夠通過調整PLA的初始值來訓練,得到一堆g,最后融合(parameter diversity,random initial。。。


以下主要講一下一個更加強的機器學習的技法:Adaptive boosting。

以下以老師教小孩認識蘋果的過程,將標識蘋果的特征(形狀(圓的),顏色(紅的、綠的)。。

等等),一個同學說蘋果形狀是如何,還有一個同學說蘋果顏色是如何,然后還有其它同學說蘋果還有其它特征,就這樣一次次的給蘋果添加特征,然后聯合起來就能讓同學們都能非常好的認出蘋果了(蘋果的概念就非常豐富了)。

先從bootsrapping開始引入adaptive boosting,利用bootstrap來生成u,然后就比較像是Re-weighting process,用來優化Re-Weight Ein_u(h)為最小。

pic3

就是小u相應着data中數據點被抽樣的次數,怎樣得到g(t)與g(t+1)是有差異的呢?調整這個u(weight)來使得得到的g(t)在下一輪表現非常不好。這樣g(t+1)就與g(t) diversity了。

做出u(t+1)在g(t)上的加權error大致等於擲硬幣的概率0.5就好了。


在數學上僅僅須要讓犯錯誤的u之和與沒有犯錯的u之和相等就能夠得到0.5。處理方法:將錯誤的點乘以對的比率。讓正確的點乘以錯的比率,例如以下圖所看到的:


在數學上。通過將factor規則化,scale up incorrect , scale down correct(有點類似PLA,對錯誤放大,然后進行調整,就像老師教學生認識蘋果一樣,賈同學說了蘋果是圓形的,可是他在橘子上犯錯了,那就放大蘋果與橘子的區別,對顏色。通過顏色分別,加強對蘋果認識)例如以下所看到的:


我們通過bootstrap中不同的u得到了一系列小g。那么u的更新過程就例如以下圖來進行。最后將小g合並得到非常好的非常強非常豐富的G。



能夠利用線性aggregation的方法來融合全部的g。得到G。

所以,這個線性的權重怎樣衡量呢?我們能夠用g的表現性能來進行決定alpha。算法設計的時候,用來衡量的話採用了ln()來做,當推斷的概率為0.5時。就像是擲硬幣一樣。這樣權重計算就為0,我們不選這種沒用的g,當犯錯誤的概率為0時,計算出的權重為無窮大,這樣也是合理的啊。


這樣從理論上分析一下。Adaboost有何優點呢?我們知道VC bound來進行,僅僅要我們得到的小g比亂猜做的好一點。通過逐步的(AdaBoost + 演算法)。我們就能夠在T=O(log(N))次的逐步演進就能夠得到Ein(G)=0,同一時候依據VC bound 我們能夠看出upper bound也非常小,即Eout也能保證非常小,從而實現比較好的性能。


所以。我們僅僅須要一個可以比亂猜好一點的“weak” base 學習算法A,通過adaboost就行做到最好的G。一個很好的用於adaboost的演算法---decision stump(決策樹)。decision stump是利用單一的feature進行切割,二維平面上就是一條條垂直或水平的線。由於它僅僅在一個維度下進行切割。

所以,假設單獨的decision stump就是一個比較弱的分類器。那么結合了adaboost呢?以下就給出幾個樣例


盡管單個decision stump是一個“weak”的分類器,就是說它的分界線是簡單的直線,可是通過adaboost,就行擬合、逼近一個很細膩的邊界。

邊界的擬合過程就是vote的結果,而adaboost的過程,就是通過逐步的放大錯誤。糾正錯誤,最后通過vote來實現邊界的融合。

從而做出很復雜邊界的過程。並且這個過程由於有VC bound的理論指導,在一定程度上可以遏制overfitting,所以Adaboost是一種很有效的方法逐步增強的融合方法,


上面是一個比較簡單的sample。那么以下的樣例就是比較復雜的邊界,你說用decision stump可以做出來sine波的形狀嗎?以下的結果就說明了這個過程。


它實際上就做出了非線性的擬合過程。AdaBoost-Stump在實際的project應用中就是世界上首個實時人臉識別:

實際上AdaBoost-Stump具備了特征選擇的能力。這方面能夠聯想到deep learning中的一些知識。


回頭能夠採用opencv利用AdaBoost來對人臉進行識別的程序學習一下。以便更好地掌握AdaBoost在詳細的處理中的應用。














免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM