04-10 Bagging和隨機森林

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython

Bagging算法和隨機森林

集成學習主要分紅兩個流派,其中一個是Boosting算法,另外一個則是本文要講的Bagging算法,Bagging算法
算法的弱學習器是沒有依賴關係的,所以弱學習之間能夠並行擬合。算法

Bagging算法中最著名的算法是隨機森林,因爲隨機森林的不容易過擬合性以及簡便性,能夠說是和梯度提高樹同名的算法。bootstrap

1、Bagging算法和隨機森林學習目標

  1. Bagging算法原理
  2. Bagging算法流程
  3. 隨機森林和Bagging算法區別
  4. 隨機森林流程

2、Bagging算法原理回顧

Bagging算法的弱學習器的訓練集是經過隨機採樣獲得的。經過\(T\)次的隨機採樣,咱們能夠經過自主採樣法(bootstrap sampling)獲得\(T\)個採樣集,而後對於這\(T\)個採樣集獨立的訓練出\(T\)個弱學習器,以後咱們經過某種結合策略將這\(T\)個弱學習器構形成一個強學習器。數據結構

在一個有\(m\)個樣本的訓練數據中隨機採樣,一個樣本每次被採樣的機率爲\({\frac{1}{m}}\),不被採集的機率爲\(1-{\frac{1}{m}}\),若是\(m\)次採樣都沒有采中的機率爲\((1-{\frac{1}{m}})^m\),當\(m\rightarrow{\infty}\)\((1-{\frac{1}{m}})^m\rightarrow{\frac{1}{e}}\approx0.368\),即在Bagging算法的隨機採樣中,大約有\(36.8%\)的數據沒有被採中。app

Bagging算法的結合策略,對於分類問題,通常使用相對多數投票法,即票數最多的類別即爲樣本預測類別;對於迴歸問題,通常使用簡單平均法,即對\(T\)個弱學習的輸出作算術平均獲得樣本預測值。dom

3、Bagging算法流程

3.1 輸入

\(m\)個樣本\(n\)個特徵的訓練數據集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);弱學習器迭代次數爲\(T\)機器學習

3.2 輸出

最終強學習器\(f(x)\)學習

3.3 流程

  1. 對訓練集進行第\(t\quad(t=1,2,\cdots,T)\)次隨機採樣,共採集\(m\)次,獲得有\(m\)個樣本的採樣集\(D_t\)
  2. 用採樣集\(D_t\)訓練第\(t\)個弱學習器\(G_t(x)\)
  3. 對於分類問題,使用相對多數投票法預測分類結果;對於迴歸問題,使用簡單平均法獲得預測值

4、隨機森林詳解

4.1 隨機森林和Bagging算法區別

隨機森林(random forest,RF)基於Bagging算法的思想,作了必定的改進,即對特徵進行了選擇。測試

RF使用CART決策樹做爲弱學習器,可是RF對普通的CART決策樹作了改進,普通的CART樹選擇最優特徵做爲決策樹劃分的條件;RF的CART決策樹則是在訓練數據的\(n\)個特徵中隨機選擇\(n_{sub}\)特徵,通常狀況下\(n_{sub}<n\),而後在這\(n_{sub}\)個特徵中選擇最優特徵做爲決策樹劃分的條件。

若是\(n_{sub}=n\),則RF的決策樹爲普通的決策樹;\(n_{sub}\)越小,則模型魯棒性越好,模型方差也會減少,但模型對訓練集的擬合程度會變差,反之,模型的誤差會變小,模型對訓練集的泛化能力會變差。

5、隨機森林拓展

RF在實際應用中不只能解決分類和迴歸問題,還能夠用於特徵轉換、異常點檢測等。

5.1 Extra Trees

Extra Trees和RF的區別有如下兩點:

  1. 對於每一個決策樹的訓練集,RF採用的隨機採樣集;對於extra trees,每一個決策樹採用原始數據集
  2. RF會基於基尼係數、信息熵的方式,選擇一個最優的特徵值劃分;extra teees則會隨機選擇一個特徵值劃分特徵數

以上兩點致使extra trees生成的隨機森林的決策樹規模通常會大於RF。便可以必定程度的減少模型的方差,加強模型的泛化能力。

# 使用ExtraTree判斷特徵重要性程度
from sklearn.datasets import make_friedman1
from sklearn.ensemble import ExtraTreesRegressor

X, y = make_friedman1(n_samples=100, n_features=10, random_state=0)

# 經過ExtraTreesRegressor模型獲取每一個特徵的重要性
et = ExtraTreesRegressor(n_estimators=10)
et = et.fit(X, y)
print('10個特徵各自的重要性:{}'.format(et.feature_importances_))
10個特徵各自的重要性:[0.11488041 0.12557425 0.08477273 0.45483849 0.09753123 0.01384401
 0.0364967  0.0256125  0.01965904 0.02679065]

5.2 Totally Random Trees Embedding

Totally Random Trees Embedding(TRTE)是一種無監督學習的數據轉換方式,它能夠將低維的數據集映射到高維,在支持向量機中使用了核技巧將低維的數據映射到高維,TRTE提供了不一樣於核技巧的方法。

TRTE首先會構成一個相似RF的隨機森林模型,模型定下來後模型中\(T\)個決策樹的葉子節點位置也會被肯定。

如今假設咱們有3棵決策樹,每一個決策樹有4個葉子節點,某個數據特徵\(x\)劃分到第1個決策樹的第1個葉子節點,第2棵決策樹的第2個節點,第3棵決策樹的第4個節點,則\(x\)映射後的特徵編碼爲\((1,0,0,0\quad0,1,0,0\quad0,0,0,1)\),由此既能夠獲得12維的高維特徵。

5.3 Isolation Forest

Isolation Forest(IForest)能夠檢測異常點。

IForest相似於RF,但在隨機採樣的時候,IForest隨機採樣的數量並非\(m\)個,而是遠遠小於訓練集個數,由於IForest的做用是檢測異常點,若是採樣過多正確樣本會掩蓋掉異常點。

在劃分特徵的時候,IForest對劃分特徵隨機選擇一個劃分閾值,並隨機選擇一個特徵劃分決策樹。

因爲IForest的樣本數過少,IForest也會選擇一個較小的最大決策樹深度控制決策樹的深度。

將測試樣本\(x\)擬合到\(T\)棵決策樹,計算每顆決策樹上該樣本的葉子節點的深度\(h_t(x)\),從而計算出平均高度,則樣本點\(x\)的異常機率爲
\[ s(x,m) = 2^{-{\frac{h(x)}{c(m)}}} \]
其中\(m\)爲樣本個數,\(c(m)\)的表達式爲
\[ c(m) = 2\ln(m-1)+\xi-2{\frac{m-1}{m}} \]
其中\(\xi\)爲歐拉常數,\(s(x,m)\)的取值範圍是\([0,1]\),取值越接近1,測試樣本點是異常點的機率越大。

6、隨機森林流程

6.1 輸入

\(m\)個樣本\(n\)個特徵的訓練數據集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);弱學習器迭代次數爲\(T\)

6.2 輸出

最終強學習器\(f(x)\)

6.3 流程

  1. 對訓練集進行第\(t\quad(t=1,2,\cdots,T)\)次隨機採樣,共採集\(m\)次,獲得有\(m\)個樣本的採樣集\(D_t\)
  2. 用採樣集\(D_t\)訓練第\(t\)個決策樹模型\(G_t(x)\),在訓練決策樹模型的時候,從\(n\)個特徵中隨機選擇\(n_{sub}\)個特徵,而後從\(n_{sub}\)個特徵中選擇最優的特徵做爲劃分決策樹的條件。
  3. 對於分類問題,使用相對多數投票法預測分類結果;對於迴歸問題,使用簡單平均法獲得預測值

7、隨機森林優缺點

7.1 優勢

  1. 因爲弱學習器之間不存在依賴關係,因此能夠並行訓練模型,這對於大數據很是有優點
  2. 既能夠解決迴歸問題又能夠解決分類問題,靈活
  3. 因爲在生成模型的時候,能夠自由選擇特徵的劃分,能夠必定程度解決特徵維度較高的問題
  4. RF至關於AdaBoost和GBDT,簡單,看數學公式推導量就知道了
  5. 由多個不存在依賴關係的弱學習器結合而成,因此對部分特徵缺失不敏感

7.2 缺點

  1. 因爲決策樹模型對特徵進行了選擇,所以取值劃分較多的特徵,會影響RF模型擬合的效果

8、小結

集成學習到這也算是告一段落了,相信你們對Boosting和Bagging算法有了很清晰的瞭解,對於Boosting中的AdaBoost和GBDT,因爲邏輯較爲複雜,能夠多看一看;對於Bagging中的隨機森林,隨機森林自己並非很難理解,只要可以很自如的運用隨機森林的一些拓展算法便可。

相關文章
相關標籤/搜索