機器學習-演算法-隨機森林分類(RandomForestClassifier)

Introduction

隨機森林是非常具有代表性的Bagging集成演算法

  • 所有的基評估器(base estimator)都是決策樹
  • 單個決策樹的準確率越高,隨機森林的準確率也會越高
    • Bagging是依賴於平均值多數決原則來決定集成結果的

DecisionTreeClassifier

1
2
3
4
5
class sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’, criterion=’gini’, 
max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,
max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None,
bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False,
class_weight=None)
  • 其大部分的參數幾乎與決策樹一致

重要參數

  • 其是使用bagging的集成算法都會有的重要參數

n_estimators

森林中樹木的數量(base estimator的數量)

  • 通常此值越大,模型效果往往越好
    • 任何模型都有決策邊界,其值達到一定程度時,精確性往往不在上升或開始波動
    • 其值越大,計算量與內存消耗量越大,訓練時間越長
    • 渴望在訓練難度和模型效果之間取得平衡

random_state

  • 隨機森林中的random_state,其控制的是森林生成的模式(生成一片固定的森林),而非讓一個森林之中只有一棵樹
    • 固定生成的每棵樹的random_state;但是森林中樹跟樹之間還是不一樣
  • 不像決策樹的random_state都是生成同一棵樹

bootstrap

bagging是通過樣本抽取後有放回的隨機抽樣技術來型成不同的訓練集
bootstrap就是用來控制抽樣技術的參數

  • 參數默認為True:有放回的隨機採樣技術
    • 通常這個參數不會被我們設置為False
  • 由於是有放回的抽樣技術,樣本可能在新的自助集中出現多次,其他樣本可能被忽略
  • 自助集大約平均會包含 63% 的原始數據
    • 表示會有37%的數據集被浪費掉,沒有參與建模,其被稱為袋外數據(out of bag data;oob)
      • 亦可以被用來作為集成算法的測試集使用
      • 亦指在使用隨機森林時,我們可以不劃分測試集和訓練集,只需要用袋外數據來測試模型
      • 當原始樣本數及n_estimators不夠大的時候,也很可能沒有數據落在袋外,便無法使用oob數據來測試模型

oob_score

  • 若希望用袋外數據測試,實例化時將oob_score設為True
    • RF_classifier = RandomForestClassifier(n_estimators=25,random_state=2,oob_score=True)
  • True時無須再劃分訓練集及測試集

重要屬性

estimators_

  • 使用estimator.estimators_查看森林中所有樹的狀況
  • 其返回每棵樹對象構建的參數,為一列表
    • 可以發現每棵樹只有random_state不同
  • 可使用列表的方式取出某棵樹,再利用.屬性的方式查看該樹的屬性
    • estimator.estimators_[0].random_state
      • 查看estimator模型裡第0顆樹的random_state之值

oobscore

  • 要是建模oob_scoreTrue時,可使用其屬性查看使用袋外數據測試的結果

重要接口

和其他演算法模型一樣,隨機森林仍有applyfitpredictscore等接口

predict_proba (predict probability)

返回每個測試樣本對應被分到每一類標籤的概率

  • 標籤有幾種不一樣的分類就會返回幾個概率
    • 二分類問題:數值大於0.5被分為1,小於0.5被分為0

傳統隨機森林是利用bagging規則,平均或多數決集成結果

  • sklearn中隨機森林是平均每個樣本對應的predict_proba返回的概率,得到一個平均概率,從而決定樣本的分類

Reference

  1. http://www.peixun.net/view/1281.html