在機器學習中,經常會有一些需要組合的方法:
- 比如集成學習,在分類器的構建中很重要,可以把多個分類器組合起來,構造一個更合理的分類器
- 比如線性回歸問題,可以把多個簡單模型組合在一起,可能比單個復雜的模型效果更好
在線性回歸問題中,經典的組合方法有很多,隨機化(比如random forest),Boosting(比如GBDT - Gradient Boosting Decision Tree,逐步梯度決策樹),現在學習Gradient Boosting方法。
boosting (逐步)
Boosting主要是一種思想,表示“知錯就改”。在上一步構造的模型的損失函數較大,但是已經不可挽回了,那么在下一步中構造一個糾錯模型函數,與上一步的模型相加,試圖將誤差往小調整。
對一份數據,建立M個模型(比如分類),一般這種模型比較簡單,稱為弱分類器(weak learner)每次分類都將上一次分錯的數據權重提高一點再進行分類,這樣最終得到的分類器在測試數據與訓練數據上都可以得到比較好的成績。
Paste_Image.png
上圖(圖片來自prml p660)就是一個Boosting的過程,綠色的線表示目前取得的模型(模型是由前m次得到的模型合并得到的),虛線表示當前這次模型。每次分類的時候,會更關注分錯的數據,上圖中,紅色和藍色的點就是數據,點越大表示權重越高,看看右下角的圖片,當m=150的時候,獲取的模型已經幾乎能夠將紅色和藍色的點區分開了。
Gradient Boosting 逐步梯度下降方法
Gradient Boosting是一種Boosting的方法,它主要的思想是,每一次新建立的模型是在之前建立的模型的損失函數的梯度下降方向。如果我們的模型能夠讓損失函數持續的下降,則說明我們的模型在不停的改進,而最好的方式就是讓損失函數在其梯度(Gradient)的方向上下降。
算法流程:
Paste_Image.png
推導過程省略