iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 28
0

前一天我們介紹了損失函數,今天來介紹隨機森林與梯度提升機。

前面介紹了線性和羅吉斯兩種機器學習常見的模型,今天要再教大家隨機森林和梯度提升機兩種,其中梯度提升機和隨機森林長得很類似,讓我們來看一下有什麼差別?

隨機森林

隨機森林(RF, random forest)是用隨機的方式建立許多決策樹,而很多的決策樹組合起來就變成一個森林,對於分類算法來說,對隨機森林輸入新的樣本,森林裡的每個決策樹就會把該樣本分類,以投票的方式看哪一類別被選擇最多次,就預測那一類的樣本。

隨機森林主要有以下幾個特點

  • 在迴歸或是分類問題都可以用隨機森林
  • 隨機森林的每一棵決策樹之間是沒有關聯的
  • 隨機森林可以在計算量沒有提高的情況下提高預測的準確度
  • 隨機森林中的每棵樹都希望不會過度生長並避免過度擬合
  • 組合多棵樹並添加隨機分配的培訓材料,以大大提高最終結果

隨機森林主要可以分成集成與分袋方法

集成方法:

  • 各種分類器之間必須存在差異。
  • 每個分類器的準確度必須大於0.5。

裝袋方法:

  • 因為每棵樹都取後放回,每個資料被選中機率是n分之1,沒被選中是1-(n分之1),選擇n次
    所以一筆資料在n次都沒被選中的機率是1-(n分之1)^n,當n來到無窮大時,機率近似e^(-1)=0.368
  • 63.2%的資料將作為訓練資料,36.8%的資料將作為測試資料,所以平常把訓練/測試資料集切分成0.7/0.3的由來是這樣。

集成與裝袋之間的差別

  • 集成是透過序列的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正
  • 裝袋是透過抽樣的方式來生成每一棵樹,樹與樹之間是獨立生成的

隨機森林的模型超參數

  • 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同
  • 可決定要生成數的數量,越多越不容易過擬合,但是運算時間會變長
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(
n_estimators=10, #決策樹的數量量
criterion="gini",
max_features="auto", #如何選取 features
max_depth=10,
min_samples_split=2,
min_samples_leaf=1
)

梯度提升機

梯度提升機在每一次生成樹時會修正前面樹預測的錯誤,並乘上學習率(learning rate)讓後面的樹能有更多學習的空間

隨機森林與梯度提升機的差別

  • 隨機森林的每一棵樹皆是獨立的樹,前一棵樹的結果不會影響下一顆
  • 梯度提升機因為下一棵樹是為了修正前一棵樹的錯誤,因此每一棵樹皆有相關聯

梯度提升機的模型超參數

可以決定要生成樹的數量,越多越不容易過擬合,但是運算時間會變長

from sklearn.ensemble import GradientBoostingClassifier
clf = GradientBoostingClassifier(
loss="deviance",
learning_rate=0.1, #每棵樹對最終結果的影響,應與 n_estimators 成反比
n_estimators=100 #決策樹的數量
)

參考資料與圖片來源


上一篇
[Day27] 認識損失函數
下一篇
[Day29] 機器學習實務——資料科學家的一天
系列文
透視Google Machine Learning的奧秘30

尚未有邦友留言

立即登入留言