iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 13
0
AI & Data

Python機器學習介紹與實戰系列 第 13

DAY[13]-機器學習(4)競賽常勝軍(xgboost&lightgbm)

接下來要介紹的是數據競賽中最常見到的兩個模型,xgboost以及lightgbm。這兩個模型都是基於前一篇文章所提到的Boosting演算法,基於決策樹來形成的一種整體學習。

要詳細介紹兩者的差別,我們需要先簡單介紹一下決策樹是怎麼「剪枝」的。

剪枝

決策樹有一個非常重要的後處理過程,為了避免無用的節點過多,導致對樣本過擬合,因此決策樹會針對較無用的節點進行剪枝,這個較無用的節點是根據以下的標準來評斷。

不純度(熵)

不純度是分類好壞的一個衡量標準,藉由節點分類之後群體的不純度下降,作為分裂節點的基準。

資訊增益

當節點分裂後,母節點與子節點可以進行不純度的比較,若是不純度下降,表示這個節點的資訊增益為正,而資訊增益越大越好。

怎麼剪枝

當每個節點有著資訊增益的具體數值可以計算之後,就可以來評估這個分裂該不該保留,因為越複雜的模型容易導致過擬合,並且預測速度也會較慢,因此適當的剪枝是必要的。在xgboost當中,參數gamma即是調整資訊增益大小的項目,越高則表示剪枝越嚴格,越低則會保留更多節點,預測值為0。

xgboost與lightgbm

介紹完剪枝之後,我們就可以來了解兩者之間最主要的差異「訓練速度」,同樣是相對耗時的boosting演算法,兩者的訓練速度可以差距非常大,其中有個原因就是因為剪枝。

xgboost採取先生長所有特徵之後再回頭剪枝,遍歷所有特徵所以會導致生長速度緩慢。
xgboost
lightgbm則是針對資訊增益大的特徵,先將葉子生長到指定深度再回頭剪枝,較容易過擬合但是速度較快。
lightgbm
參考資料

使用模型

這兩個模型並沒有在scikit-learning的套件當中,要使用這兩個模型要另外安裝xgboost以及lightgbm兩個套件。

在這裡也教使用者使用一個較迅速安裝套件的方法,不必每次都要開啟anaconda進行套件的安裝

!pip install xgboost # 安裝 xgboost 
!pip install lightgbm # 安裝 lightgbm

使用模型則與之前所使用的十分類似,但有相對較複雜的使用方法,這裡僅示範與之前相同的模式。

from xgboost import XGBRegressor
xgbr = XGBRegressor()
xgbr.fit(dummies,data.target)

上一篇
DAY[12]-機器學習(3)整體學習
下一篇
DAY[14]-機器學習(5) 變異(variance)與偏誤(bias)
系列文
Python機器學習介紹與實戰30

尚未有邦友留言

立即登入留言