Gradient Boosting

Gradient Boosting介紹

之前一直知道Gradient Boosting Decision Tree(GBDT)很強大,但是對其中的原理細節知道的很少,這幾天終於把細節部分了解了一下。介紹主要參考Gradient Boosting。

Gradient Boosting(梯度提升)是一種集成弱學習模型的機器學習方法,例如GBDT就是集成了多個弱決策樹模型。

機器模型主要的目標是得到一個模型F,使得預測值hat{y}=F(x)與真實值y之間的誤差儘可能小,例如在線性回歸中,誤差的衡量標準就是(y-hat{y})^2。推廣到有監督學習中,模型的優化目標通常定義為最小化損失函數的期望E[L(y,F(x))],因而模型可以定義為hat{F}=argmin_FE[L(y,F(x))]

在Gradient Boosting中,採取分層學習的方法,通過m個步驟來得到最終模型F,其中第m步學習一個較弱的模型F_m,在第m+1步時,不直接優化F_m,而是學習一個基本模型h(x),使得其擬合殘差項y-F_m,這樣就會使m+1步的模型預測值F_{m+1}=F_{m}+h(x)更接近於真實值y,因而目標變成了如何找到h(x)=F_{m+1}-F_{m},最終就是要找到某類函數空間中的一組h(x)使得

F(x)=sum^{M}_{i=1}gamma_ih_i(x)+const

具體演算法的步驟可以由以下的方式定義,在第二步中可以看到,演算法將負梯度作為殘差值來學習基本模型h_m(x)(採用了梯度下降的思想,將損失函數看成是F(x)的函數)

Gradient Boosting Decision Tree(GBDT)

GBDT與上述演算法有稍許不同,它利用決策樹來學習基本模型,為樹中的每一片子區域R_{jm}學習一個殘差項gamma_{jm},具體演算法如下

GBDT訓練經驗方法

  1. 樹的深度J一般在[4,8]之間

  2. Shrinkage:定義學習率v,使得F_{m+1}=F_m+vcdotgamma_mh_m(x),其中vin(0,1]

  3. 使用隨機梯度提升的方法,速度更快,還可以使用OOB error指標來評估模型的效果

  4. 防止過擬合的幾種方法

    • 迭代次數M取一個較為合適的值
    • 如果決策樹的某次劃分使得節點上的實例數小於某個閾值,則丟棄該劃分
    • 樹的複雜度作為懲罰項

參考

  • Gradient boosting
  • 《The Elements of Statistical Learning》Trevor Hastie et al.

推薦閱讀:

機器學習實戰之決策樹(三)
某熊周刊系列:一周推薦外文技術資料(2.5)
機器是怎麼一步步看穿我們的
機器學習基礎:邏輯回歸

TAG:gbdt | 机器学习 | boosting |