1. 程式人生 > >機器學習筆記(3) 隨機森林

機器學習筆記(3) 隨機森林

random forest 和 extra-trees是對decison tree做ensemble而得到最終模型的兩種演算法.

閱讀本文前需要先了解一下

機器學習筆記1:決策樹

機器學習筆記2:整合學習

 

random_forest

決策樹在節點劃分上,在隨機的特徵子集中尋找最優劃分特徵.進一步增強了隨機性,抑制了過擬合.

class sklearn.ensemble.RandomForestClassifier(n_estimators=10criterion='gini'max_depth=Nonemin_samples_split=2

min_samples_leaf=1min_weight_fraction_leaf=0.0max_features='auto'max_leaf_nodes=Nonemin_impurity_decrease=0.0min_impurity_split=Nonebootstrap=Trueoob_score=Falsen_jobs=1random_state=Noneverbose=0warm_start=Falseclass_weight=None
)

隨機樹的隨機性體現在

  • 每一顆決策樹只學習部分的訓練資料
  • 決策樹在做節點劃分時,從某一特徵子集中選取出最優劃分特徵.而不是從全部特徵中選取.

 

extra-trees

class sklearn.ensemble.ExtraTreesClassifier(n_estimators=10criterion='gini'max_depth=Nonemin_samples_split=2min_samples_leaf=1min_weight_fraction_leaf=0.0

max_features='auto'max_leaf_nodes=Nonemin_impurity_decrease=0.0min_impurity_split=Nonebootstrap=Falseoob_score=Falsen_jobs=1random_state=Noneverbose=0warm_start=Falseclass_weight=None)

從名字就可以看出來,extra-trees,極限隨機樹們 =。=.  其實也是一個森林,只是這個森林裡的樹比random forest裡的樹還要更隨機.

相比與random forest  extra-trees進一步增大了隨機性。這種隨機性地增加體現在

  • 在節點劃分上,不光特徵是從特徵子集隨機取的,閾值也是隨機取的.

This usually allows to reduce the variance of the model a bit more, at the expense of a slightly greater increase in bias. 這種隨機性的引入,通常會導致模型的方差減小,代價就是偏差可能會略微升高.

 

這裡解釋一下機器學習中的偏差(bias)和方差(variance).

一圖勝千言

 

上圖的點可以理解為一個個的模型,

high bias意味著欠擬合,模型過於簡單了. low bias意味著準確率比較高.   這個相對好理解.  點離紅心越近,說明在訓練集上預測越準確.偏差越小.

high variance意味著過擬合,模型過於複雜,過分地去擬合訓練資料了,點很分散,一旦訓練資料發生一些變化,學習的結果將產生巨大變化.

更多細緻的討論見知乎上的這個回答

 

使用sklearn中的random forest和extra-trees

from sklearn.ensemble import RandomForestClassifier
rf_clf = RandomForestClassifier(n_estimators=500, oob_score=True, random_state=666, n_jobs=-1)
rf_clf.fit(X, y)

from sklearn.ensemble import ExtraTreesClassifier
et_clf = ExtraTreesClassifier(n_estimators=500, bootstrap=True, oob_score=True, random_state=666, n_jobs=-1)
et_clf.fit(X, y)