和決策樹模型類似,scikit-learn中的随機森林模型也提供了基于普通Decision Tree的Random Forest學習器和基于随機化Extra Tree的ExtraTrees學習器。
鑒于Decision Tree和Extra Tree差别甚小,本文以Random Forest為例進行介紹。
1. 模型的主要參數
在Random Forest中,存在兩大類型的參數,分别為架構參數和單棵決策樹參數
其中,單棵決策樹參數參照先前介紹的決策樹模型,而架構參數包括:
模型參數 | Parameter含義 | RandomForestClassifier | RandomForestRegressor |
n_estimators | 子樹數量 | 随機森林中決策樹的數量,其值越大模型的表現越優秀,但計算量也越大 | |
bootstrap | 有無放回采樣 | 預設為True,即采用有放回式采樣,進而可以不劃分驗證集,用這些袋外資料進行驗證(見參數oob_score)。而在Extratrees中該值預設為False,即選取全量樣本進行訓練。 | |
oob_score | 袋外評分 | 即是否采用袋外資料進行模型的驗證評估,預設為True。 |
2. 模型的主要方法
随機森林模型中涉及到衆多子決策樹的綜合評估,是以其無法像普通Decision Tree模型一樣提供
apply
方法API。
模型方法 | 含義 | 備注 |
fit | 模型訓練 | 支援Decison Tree中的sample_weight參數 |
predict | 預測結果 | 傳回綜合各子決策樹結果後的分類值或者回歸值,分類值為比重最高的分類,回歸值為葉子節點均值的平均值 |
predict_proba | 分類預測機率值 | 僅在classifier中有該方法,傳回各分類的機率值 |
predict_log_proba | 分類預測對數值 | 僅在classifier中有該方法,傳回各分類的對數機率值 |
3. 模型的主要屬性
模型屬性 | 含義 | 備注 |
estimators_ | 估計器清單 | 傳回由n_estimators個子決策樹構成的清單 |
classes_ | 樣本分類結果 | 适用于classifer的單分類結果,傳回各樣本的分類預測值 |
n_classes_ | 樣本分類結果 | 适用于classifer的多分類結果,傳回各樣本的多分類預測值 |
feature_importances_ | 特征權重 | 基于gini數得到各特征的特征重要性 |
oob_score_ | 含義 | 袋外資料的總的評估結果 |
oob_decision_function_ | 含義 | 每個袋外資料的評估結果 |
注意,相較于單棵決策樹的feature_importances_,随機森林模型中的feature_importances_是對各子決策樹結果的平均。
4. 模型的可視化
不同于單棵決策樹可以進行有效的可視化,随機森林模型由于子學習器衆多,是以無法進行有效的可視化。即使可以對其中的每棵決策樹進行單獨的可視化,但考慮到随機性的影響,意義并不大。
5. 模型的調參
(1)調整n_estimators參數
(2)按照決策樹模型的調參順序進行調整,詳見決策樹模型。