1. 程式人生 > >scikit-learn /sklearn : 整合學習 之 隨機森林分類器(Forests of Randomized Tree)官方檔案翻譯

scikit-learn /sklearn : 整合學習 之 隨機森林分類器(Forests of Randomized Tree)官方檔案翻譯

整合學習 之 隨機森林分類器

  1. 整合學習的定義和分類。
  2. 隨機森林法的定義和分類。
  3. 隨機森林sklearn.ensemble.RandomForestClassifier()引數分類和含義。
  4. 附註:Bias和Variance的含義和關係。

一、整合學習 (Ensemble methods)的定義和分類

  • 含義:在指定了演算法模型的基礎上,相對於單個學習器,為了進一步提高演算法模型的泛化能力/魯棒性,整合多個“基學習器”、再綜合它們的結果的方法,我們稱之為整合學習。
  • 分類:

整合學習分為2種體系:

  1. 使用“平均”思想的演算法:其核心標準是先建立多個相互獨立的“基學習器”,然後將各個結果“平均”。一般而言,集ping成jun之後的結果比任意一個“基學習器”的結果更好,因為集ping成jun的方法可以降低Variance
    。                                                                 · 代表演算法有:Bagging MethodsForests of randomized trees,等。 
  2. 對應的使用“boosting/階梯”思想的演算法:每一個“基學習器”的結果,都是下一個“基學習器”的基礎。所有“基學習器”的目標功能一致,就是降低整合學習器的bias。                                                                                                                                                    · 代表演算法有:AdaBoosting
    Gradient Tree Boosting,等。

二、隨機森林random forest  的定義和分類

  • 含義:“隨機森林”喻指整合學習器,森林中的一棵樹樹喻指一個“基學習器”。通過採用有放回的抽放方法,從總樣本集中抽出n個子樣本集,分別訓練出n個“基學習器”,應用時分別從n個“基學習器”得到n個結果:                                                                      · 如果是classification,採用“投票”法選取得票最多的類作為整合學習器的結果;                                                                       ·如果是regression
    ,採用“平均”方法獲得均值作為整合學習器的結果。
  • 分類:在scikit-learn中,RandomForest的分類是sklearn.ensemble.RandomForestClassifier,迴歸是sklearn.ensemble.RrandomForestRegressor

三、sklearn.ensemble.RandomForestClassifier()引數

sklearn.ensemble.RandomForest連結:官方文件

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)
  • n_extimators:interger型引數,可選(預設值為10)。用來設定樹/“基學習器”的個數。                 

PS:版本0..20裡n_extimator預設值是10,版本0.22預設值為100.

  • criterion:string型引數,可選(預設值為“gini”)。用來設定split質量檢測的方法,節點判定方法有“gini”和“entropy”兩種。

  • max_depth:integer型,可選(預設值為“None”)。用來設定決策樹的層數。如果是“None”,決策樹的層數會一直拓深下去,直到所有的葉的純度為100%(純度概包含在於gini/entropy概念上),或者所有的葉包含的樣本數小於提前設定的min_samples_split數。

  • min_samples_split:或 int型,或 float型,可選(預設值為2)。用來設定分割內部結點的最小樣本數量:如果是int型,那麼將min_smaples_split作為最小值;如果是float,那麼min_samples_split是一個分數,ceil(min_samples_split*n_samples)是每次分割的最小樣本數。

  • min_samples_leaf:或int型,或float型,可選(預設值為1)。用來設定葉節點上最小的樣本數。無論分割節點在哪個層次,只有當左右分支中留有不低於min_samples_leaf數量的訓練樣本時,才會被考慮。尤其在迴歸的時候,它或許能有平滑模型的效果。如果是int型,那麼min_samples_leaf作為最小值;如果是float型,那麼min-samples_leaf是一個分數,ceil(min_smaples_leaf * n_samples)是每次分割的最小數。

  • min_weight_fraction_leaf:float型,可選(預設值為0)。用來設定葉節點上所需的(所有輸入樣本)總權重的最小加權分數。當沒有提供sample_weight是,樣品的權重相等。

  • mix_features:或int型,或float型,或string型,或None,可選(預設值為“auto”)。用來設定在尋找最佳分割點時的feature數。

如果是int型,那麼每個分割點處採用max_features;

如果是float型,max_reatures是一個分數,那麼int(max_features * n_features)是每次分割的數;

如果是“auto”/“sqrt”,那麼max_features=sqrt(n_featrues)

如果是“log2”,那麼max_features=log2(n_features)

如果是“None”,那麼max_features=n_features.

  • max_leaf_nodes:或int型,可選(預設值是“None”)。用來設定在生長決策樹時LeafNodes的引數。最好的節點被定義為不純度的降低。如果是“None”,那麼LeafNodes的數目沒有限制。

……未完。

四、Bias和Variance的含義和關係

bias and variance圖示:

簡單來說:

Error due to Bias(來自於Bias的誤差):該誤差是模型預測值得期望V.S真實值之間的差異。舉個栗子:如上圖所示,想象我們從原始樣本集中抽取N個子樣本集,得到N個模型,那麼對於某個點(圖中為靶心點)的預測可以得到N個點(預測值),預測點(預測值)的平均分佈(期望)和中心紅點(實際值)之間的差異就是Bias。

Error due to Variance(來自Var的誤差):該誤差是模型預測結果相對於真實值的離散程度。具體看上圖。

附註:誤了Var和Dias,還有一個無法消除的誤差,由於我們對其無可奈何、束手無策,在此不予討論。