天天看點

Python3入門機器學習之11.5 Ada Boosting 和 Gradient Boosting

Python3入門機器學習

11.5 Ada Boosting 和 Gradient Boosting

Boosting概述:

內建多個模型,每個模型都在嘗試增強(Boosting)整體的效果。

1.Ada Boosting:

Python3入門機器學習之11.5 Ada Boosting 和 Gradient Boosting

Ada Boosting是這樣的一個思路,以簡單的回歸問題為例:

首先我們有原始的資料集,我們可以用某一種學習方法對原始的資料集進行學習,學習完成之後,顯然所有的算法都會犯錯誤,相應的我們得到将資料點分成深色、淺色的結果。其中淺色的點就是被我們的模型近乎毫無差别的預測成功的點,而深色的點和我們得到的模型差距比較遠。是以,我們形成的新的樣本點中資料和資料之間産生了權重的差别。我們讓在上一個模型中沒有被很好學習的點的權值增大一些,而在上一個模型中已經被很好學習的點的權值減小一些,這樣形成的新的樣本資料我們再使用某一種學習算法進行學習。由于有權值上的差距,是以我們第二次的學習結果也變了。過程如上圖,以此類推…在這個過程中,我們每一次生成的子模型都是想辦法彌補上一次模型沒有被成功預測的那些樣本點,換句話說就是每一個子模型都在推動(Boost)上一個模型所犯的錯誤。經過這個過程,Ada Boosting也可以生成很多子模型,最終用這些子模型綜合投票,作為Ada Boosting這個模型整體最終的學習結果。

2.Gradient Boosting:

如:

訓練一個模型m1,産生錯誤e1,針對e1訓練第二個模型m2,産生錯誤e2。

換句話說m2的作用就是能夠預測出我們的模型m1犯的錯誤是什麼,也就是說對于m2來說它的樣本相應的輸出值是m1所犯的這些錯誤,這樣我們訓練出的m2拟合e1資料。

針對e2訓練第二個模型m3,産生錯誤e3…

最終預測結果是:m1+m2+m3+…

Python3入門機器學習之11.5 Ada Boosting 和 Gradient Boosting