前面一節我們對集成學習做了宏觀介紹,這一節中,我們一起看一下集成學習中的Bagging和隨機森林究竟是什麼東西。
1 Bagging集成原理
目標:把下面的圈和方塊進行分類
實現過程:
- 採樣不同數據集
2)訓練分類器
3)平權投票,獲取最終結果
4)主要實現過程小結
2 隨機森林構造過程
在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的衆數而定。
隨機森林 = Bagging + 決策樹
例如, 如果你訓練了5個樹, 其中有4個樹的結果是True, 1個樹的結果是False, 那麼最終投票結果就是True
隨機森林夠造過程中的關鍵步驟(M表示特徵數目):
1)一次隨機選出一個樣本,有放回的抽樣,重複N次(有可能出現重複的樣本)
2) 隨機去選出m個特徵, m <<M,建立決策樹
- 思考
- 1.爲什麼要隨機抽樣訓練集?
- 如果不進行隨機抽樣,每棵樹的訓練集都一樣,那麼最終訓練出的樹分類結果也是完全一樣的
- 2.爲什麼要有放回地抽樣?
- 如果不是有放回的抽樣,那麼每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對“片面的”(當然這樣說可能不對),也就是說每棵樹訓練出來都是有很大的差異的;而隨機森林最後分類取決於多棵樹(弱分類器)的投票表決。
- 1.爲什麼要隨機抽樣訓練集?
3 包外估計 (Out-of-Bag Estimate)
在隨機森林構造過程中,如果進行有放回的抽樣,我們會發現,總是有一部分樣本我們選不到。
- 這部分數據,佔整體數據的比重有多大呢?
- 這部分數據有什麼用呢?
3.1 包外估計的定義
隨機森林的 Bagging 過程,對於每一顆訓練出的決策樹 ,與數據集 D 有如下關係:
…… | |||||
---|---|---|---|---|---|
* | |||||
* | * | ||||
* | * | ||||
…… | |||||
* | * |
對於星號的部分,即是沒有選擇到的數據,稱之爲 Out-of-bag(OOB)數據,當數據足夠多,對於任意一組數據 是包外數據的概率爲:
由於基分類器是構建在訓練樣本的自助抽樣集上的,只有約 63.2% 原樣本集出現在中,而剩餘的 36.8% 的數據作爲包外數據,可以用於基分類器的驗證集。
經驗證,包外估計是對集成分類器泛化誤差的無偏估計.
在隨機森林算法中數據集屬性的重要性、分類器集強度和分類器間相關性計算都依賴於袋外數據。
3.2 包外估計的用途
- 當基學習器是決策樹時,可使用包外樣本來輔助剪枝 ,或用於估計決策樹中各結點的後驗概率以輔助對零訓練樣本結點的處理;
- 當基學習器是神經網絡時,可使用包外樣本來輔助早期停止以減小過擬合 。
4 隨機森林api介紹
-
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
-
n_estimators:integer,optional(default = 10)森林裏的樹木數量120,200,300,500,800,1200
- 在利用最大投票數或平均值來預測之前,你想要建立子樹的數量。
-
Criterion:string,可選(default =“gini”)
- 分割特徵的測量方法
-
max_depth:integer或None,可選(默認=無)
- 樹的最大深度 5,8,15,25,30
-
max_features="auto”,每個決策樹的最大特徵數量
- If “auto”, then
max_features=sqrt(n_features)
. - If “sqrt”, then
max_features=sqrt(n_features)
(same as “auto”). - If “log2”, then
max_features=log2(n_features)
. - If None, then
max_features=n_features
.
- If “auto”, then
-
bootstrap:boolean,optional(default = True)
- 是否在構建樹時使用放回抽樣
-
min_samples_split 內部節點再劃分所需最小樣本數
- 這個值限制了子樹繼續劃分的條件,如果某節點的樣本數少於min_samples_split,則不會繼續再嘗試選擇最優特徵來進行劃分,默認是2。
- 如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則推薦增大這個值。
-
min_samples_leaf 葉子節點的最小樣本數
-
這個值限制了葉子節點最少的樣本數,如果某葉子節點數目小於樣本數,則會和兄弟節點一起被剪枝, 默認是1。
-
葉是決策樹的末端節點。 較小的葉子使模型更容易捕捉訓練數據中的噪聲。
-
一般來說,我更偏向於將最小葉子節點數目設置爲大於50。
-
-
min_impurity_split: 節點劃分最小不純度
-
這個值限制了決策樹的增長,如果某節點的不純度(基於基尼係數,均方差)小於這個閾值,則該節點不再生成子節點。即爲葉子節點 。
-
一般不推薦改動默認值1e-7。
-
-
-
上面決策樹參數中最重要的包括
- 最大特徵數max_features,
- 最大深度max_depth,
- 內部節點再劃分所需最小樣本數min_samples_split
- 葉子節點最少樣本數min_samples_leaf。
5 Bagging集成優點
Bagging + 決策樹/線性迴歸/邏輯迴歸/深度學習… = bagging集成學習方法
經過上面方式組成的集成學習方法:
- 均可在原有算法上提高約2%左右的泛化正確率
- 簡單, 方便, 通用
本節主要給大家介紹了Bagging和隨機森林的基本概念,在下一節,將會通過一個OTTO的電商案例,給大家展示,如何使用隨機森林api進行模型訓練。