經典與統計學習

梯度提升(gradient boosting)

/ GRAY-dee-ent BOOS-ting /

梯度提升用一長串弱模型搭出一個強模型,每一個都在為上一個的錯誤「賠不是」。想像一個學生做習題集:第一遍錯了很多,於是他專挑做錯的題去鑽研;第二遍改對了一些,剩下一小堆錯誤留待下回攻克;如此往復。每個新模型都專門針對「迄今合計」仍然做錯的部分來訓練,整支隊伍便一次一處、有的放矢地變得更聰明。

具體而言,你通常用小小的決策樹作為弱學習器。第一棵樹做出一個粗糙的預測。然後你算出殘差——每個預測偏離了多少——並讓下一棵樹去擬合的不是原始目標,而是這些剩下的誤差。把它(縮小後)的修正加到合計預測上,重新算出新的、更小的誤差,再訓練一棵樹去擬合它們。「梯度」指的是用微積分給每棵樹指出最能減小誤差的方向;「提升」則是把這些弱學習器疊成一個強者的動作。

提升是面對日常表格資料時最準的技術之一,常常在資料科學競賽中奪冠。但它比隨機森林嬌氣:因為樹是一棵接一棵地去追錯誤,推得太狠,它最終會開始擬合雜訊——過擬合——所以你必須用一個小的學習率、淺一點的樹和提前停止來勒住它。它還是按順序訓練而非並行,這會讓它擬合得更慢。隨機森林是把彼此獨立的樹平均掉以削減方差;提升是把彼此依賴的樹疊加起來以削減偏差——同樣的食材,相反的策略。

預測房價。第1棵樹給一套實際值35萬美元的房子猜了30萬——差了+5萬。第2棵樹只在這些剩餘誤差上訓練,添上比如+3萬。現在差距只剩2萬。第3棵樹把它修到8千。幾百次微小修正之後,合計值就落到了接近真實價格的地方。

每棵樹都從「合計」剩下的誤差裡學習——一次修正接一次修正。

學習率就是煞車踏板:取得越小(讓每棵樹的修正算得越輕),通常泛化越好,但需要更多的樹。正因為提升是不知疲倦地追著誤差跑,如果你不及早叫停,它比隨機森林更容易過擬合。

又稱
gradient boosted treesGBMboosting梯度提升梯度提升树