【小白學ML】隨機森林 全解 (從bagging到variance)

【前言】:公衆號的AI初學者交流羣已經創建啦,公衆號後臺回覆【加羣】能夠加入。羣裏都是些一塊兒學習的朋友,你們學習路上,結個伴。node

【公衆號資源彙總】:煉丹圖書館 | AI初學者所須要的資料合集(視頻+PDF下載)
web

全文3155字,預計閱讀時間10min面試


文章目錄:算法

  • 1 隨機森林bootstrap

  • 2 bagging微信

  • 3 神祕的63.2%網絡

  • 4 隨機森林 vs baggingapp

  • 5 投票策略dom

  • 6 隨機森林的特色機器學習

    • 6.1 優勢

    • 6.2 bias 與 variance

    • 6.3 隨機森林下降誤差證實

爲何如今還要學習隨機森林?

隨機森林中仍有兩個未解之謎(對我來講)。隨機森林採用的bagging思想中怎麼獲得的62.3% 以及  隨機森林和bagging的方法是否有區別。

隨機森林(Random Forest)就是經過集成學習的思想將多棵決策樹集成的一種算法。基本單元是決策樹。隨機森林算法的提出也是爲了改善決策樹容易存在過擬合的狀況。

1 隨機森林

習慣上,咱們將衆多分類器(SVM、Logistic迴歸、決策樹等)所組成的「總的分類器」,叫作隨機森林。隨機森林有兩個關鍵詞,一個是「隨機」,一個是「森林」。森林就是成百上千棵樹,體現了集成的思想,隨機將會在下面總結到。

2 bagging

Bagging,其實就是bootstrap aggregating的縮寫, 二者是等價的,其核心就是有放回抽樣

【bagging具體步驟】

  1. 從大小爲n的樣本集中有放回地重採樣選出n個樣本;(沒錯就是n個樣本抽取n個)
  2. 在全部屬性上,對這n個樣本創建分類器(ID3信息增益、C4.5信息增益率、CART基尼係數、SVM、Logistic迴歸等)
  3. 重複以上兩步m次,即得到了m個分類器;
  4. 將預測數據放在這m個分類器上,最後根據這m個分類器的投票結果,決定數據屬於哪一類。

3 神祕的63.2%

通常被你們知曉的是:隨機森林中每一次採樣的比例是63.2%。 這個比例究竟是怎麼肯定的呢?

在某手的面試中,我被問到了這個相關的問題,奈何學藝不精,哎。後來苦苦研究15分鐘,終於獲得答案,如今分享給你們。


bagging的最初的說法實際上是:n個樣本從中有放回抽樣n次,這種條件下,勢必會有抽取到相一樣本的可能性,那麼抽取到不一樣樣本的指望值是多少呢?其實你們內心可能會有答案了,沒錯就是0.632n

咱們假設 表示第k次抽樣抽取到不一樣樣本的機率。那麼 則表示第k-1次抽樣抽取到不一樣樣本的機率。

  • 第k-1次抽樣到不一樣樣本的機率:
  • 第k-1次抽樣時,有 個樣本尚未被抽取
  • 第k次抽樣時,還有 的樣本沒有抽取
  • 所以
  • ,第一次抽樣的數據必定不會重複

所以k次放回抽樣的不一樣樣本的指望值爲:

利用等比數列的性質,獲得:

當n足夠大,而且k=n的狀況下,上面的公式等於

因此證實完畢,每一次bagging採樣重複抽取n次其實只有63.2%的樣本會被採樣到。


4 隨機森林 vs bagging

隨機森林(Random Forest)在Bagging基礎上進行了修改。 具體步驟能夠總結以下:

  1. 從訓練樣本集中採用Bootstrap的方法有放回地重採樣選出n個樣本,即每棵樹的訓練數據集都是不一樣的 ,裏面包含重複的訓練樣本(這意味着隨機森林並非按照bagging的0.632比例採樣 );

  2. 從全部屬性中有選擇地選出K個屬性,選擇最佳屬性做爲節點創建CART決策樹;

  3. 重複以上步驟m次,即創建了m棵CART決策樹

  4. 這m個CART造成隨機森林,經過投票表決分類結果,決定數據是屬於哪一類。

隨機森林(Random Forest)的隨機性主要體如今兩方面,一方面是樣本隨機,另外一方面是屬性隨機。樣本隨機的緣由是若是樣本不隨機,每棵樹的訓練數據都同樣,那麼最終訓練出的分類結果也是徹底同樣的。

5 投票策略

  1. 少數服從多數
  2. 一票否決
  3. 據說還有貝葉斯平均的方法。可是我沒有過多瞭解。通常仍是用少數服從多數的吧。

6 隨機森林的特色

6.1 優勢

  1. 在當前的算法中,具備極好的準確率
  2. 可以運行在大數據上
  3. 可以處理具備高維特徵的輸入樣本,不須要降維
  4. 可以計算各個特徵的重要度
  5. 可以防止過擬合
  6. 其實在一些大數據競賽中,隨機森林也是我第一個會嘗試的模型哦~

6.2 bias 與 variance

說到機器學習模型的偏差,主要就是bias和variance。

  • Bias:若是一個模型的訓練錯誤大,而後驗證錯誤和訓練錯誤都很大,那麼這個模型就是高bias。多是由於欠擬合,也多是由於模型是弱分類器。

  • Variance:模型的訓練錯誤小,可是驗證錯誤遠大於訓練錯誤,那麼這個模型就是高Variance,或者說它是過擬合。

這個圖中,左上角是低誤差低方差的,能夠看到全部的預測值,都會落在靶心,完美模型;

右上角是高誤差,能夠看到,雖然總體數據預測的好像都在中心,可是波動很大。

【高誤差vs高方差】

在機器學習中,由於誤差和方差不能兼顧,因此咱們通常會選擇高誤差、低方差的左下角的模型。穩定性是最重要的,寧肯全部的樣本都80%正確率,也不要部分樣本100%、部分50%的正確率。我的感受,穩定性是學習到東西的體現,高方差模型與隨機蒙的有什麼區別?

6.3 隨機森林下降誤差證實

上面的可能有些抽象,這裏用RandomForest(RF)來做爲例子:隨機森林是bagging的集成模型,這裏:

  • RF(x)表示隨機森林對樣本x的預測值;
  • B表示總共有B棵樹;
  • 表示第i棵樹所使用的訓練集,是使用bagging的方法,從全部訓練集中進行行採樣和列採樣獲得的子數據集。

這裏全部的 ,都是從全部數據集中隨機採樣的,因此能夠理解爲都是服從相同分佈的。因此不斷增長B的數量,增長隨機森林中樹的數量,是不會減少模型的誤差的。【我的感受,是由於無論訓練再多的樹,其實就那麼多數據,怎麼訓練都不會減小,這一點比較好理解】

【RF是如何下降誤差的?】 直觀上,使用多棵樹和bagging,是能夠增長模型的穩定性的。怎麼證實的?


咱們須要計算

假設不一樣樹的 之間的相關係數爲 ,而後每棵樹的方差都是 .

先複習一下兩個隨機變量相加的方差如何表示:

  • Cov(X,Y)表示X和Y的協方差。協方差和相關係數不同哦,要除以X和Y的標準差:

下面轉成B個相關變量的方差計算,是矩陣的形式:

很好推導的,能夠試一試。

這樣能夠看出來了,RF的樹的數量越多,RF方差的第二項會不斷減少,可是第一項不變。也就是說,第一項就是RF模型誤差的下極限了。

【總結】

  • 增長決策樹的數量B,誤差不變;方差減少;
  • 增長決策樹深度,誤差減少; 減少, 增長;
  • 增長bagging採樣比例,誤差減少; 增長, 增長;

【bagging vs boost】 以前的文章也提到過了boost算法。

GBDT中,在某種狀況下,是不斷訓練以前模型的殘差,來達到下降bias的效果。雖然也是集成模型,可是能夠想到,每個GBDT中的樹,所學習的數據的分佈都是不一樣的,這意味着在GBDT模型的方差會隨着決策樹的數量增多,不斷地增長。

  • bagging的目的:下降方差;
  • boost的目的:下降誤差
- END -

【機器學習煉丹術】的文章清單


<<小白學圖像>>

小白學目標檢測 | RCNN, SPPNet, Fast, Faster

小白學圖像 | BatchNormalization詳解與比較

小白學圖像 | Group Normalization詳解+PyTorch代碼

小白學圖像 | 八篇經典CNN論文串講

圖像加強 | CLAHE 限制對比度自適應直方圖均衡化

小白學卷積 | 深刻淺出卷積網絡的平移不變性

小白學卷積 | (反)卷積輸出尺寸計算

五分鐘瞭解:端側神經網絡GhostNet(2019)

五分鐘學會:焦點損失函數 FocalLoss 與 GHM

<<小白學算法>>

小白學排序 | 十大經典排序算法(動圖)

小白學優化 | 最小二乘法與嶺迴歸&Lasso迴歸

雜談 | 正態分佈爲何如此常見

Adam優化器爲何被人吐槽?

<<小白學機器學習>>

SVM三合一 | SVM優化推導 + 拉格朗日算子講解(KKT條件) + hingeLoss

工程能力UP | LightGBM的調參與並行

小白學XGB | XGBoost推導與牛頓法

評價指標 | 詳解F1-score與多分類MacroF1&MicroF1

小白學LGB | LightGBM = GOSS + histogram + EFB

小白學ML | Adaboost及手推算法案例

小白學ML | GBDT梯度提高樹

機器學習不得不知道的提高技巧:SWA與pseudo-label

<<小白學推薦>>

小白學推薦1 | 協同過濾 零基礎到入門

<<小白麪經>>

【小白麪經】八種應對樣本不均衡的策略

【小白麪經】之防止過擬合的全部方法

【小白麪經】梯度消失爆炸及其解決方法

【小白麪經】 判別模型&生成模型

其實上面全部專題中的內容都有可能出在面試中

<<小白學雜七雜八>>

小白寫論文 | 技術性論文結構剖析


  • 公衆號回覆【入羣】,加入AI愛好者大學生交流羣。你缺乏的可能只是一塊兒前行的同伴~

也能夠添加做者好友,進行交流學習經驗、求職經驗、競賽經驗、如何一頓飯吃兩頓的量的經驗、找女友經驗等。

好文!卑微做者,在線求贊!




本文分享自微信公衆號 - 機器學習煉丹術(liandanshu)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索