scikit-learn /sklearn : 整合學習 之 隨機森林分類器(Forests of Randomized Tree)官方檔案翻譯
整合學習 之 隨機森林分類器
- 整合學習的定義和分類。
- 隨機森林法的定義和分類。
- 隨機森林sklearn.ensemble.RandomForestClassifier()引數分類和含義。
- 附註:Bias和Variance的含義和關係。
一、整合學習 (Ensemble methods)的定義和分類
- 含義:在指定了演算法模型的基礎上,相對於單個學習器,為了進一步提高演算法模型的泛化能力/魯棒性,整合多個“基學習器”、再綜合它們的結果的方法,我們稱之為整合學習。
- 分類:
整合學習分為2種體系:
- 使用“平均”思想的演算法:其核心標準是先建立多個相互獨立的“基學習器”,然後將各個結果“平均”。一般而言,集ping成jun之後的結果比任意一個“基學習器”的結果更好,因為集ping成jun的方法可以降低Variance
- 對應的使用“boosting/階梯”思想的演算法:每一個“基學習器”的結果,都是下一個“基學習器”的基礎。所有“基學習器”的目標功能一致,就是降低整合學習器的bias。 · 代表演算法有:AdaBoosting
二、隨機森林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,還有一個無法消除的誤差,由於我們對其無可奈何、束手無策,在此不予討論。