「小白學ML」隨機森林 大全解

【前言】:文章來自微信公眾號【機器學習煉丹術】

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

文章目錄:

1 隨機森林

2 bagging

3 神秘的63。2%

4 隨機森林 vs bagging

5 投票策略

6 隨機森林的特點

6。1 優點

6。2 bias 與 variance

6。3 隨機森林降低偏差證明

為什麼現在還要學習隨機森林?

隨機森林中仍有兩個未解之謎(對我來說)。隨機森林採用的bagging思想中怎麼得到的

62.3%

以及 隨機森林和bagging的方法是否有區別。

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

1 隨機森林

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

2 bagging

Bagging,其實就是bootstrap aggregating的縮寫

, 兩者是等價的,其核心就是

有放回抽樣

【bagging具體步驟】

從大小為n的樣本集中有放回地重取樣選出n個樣本;(沒錯就是n個樣本抽取n個)

在所有屬性上,對這n個樣本建立分類器(ID3資訊增益、C4。5資訊增益率、CART基尼係數、SVM、Logistic迴歸等)

重複以上兩步m次,即獲得了m個分類器;

將預測資料放在這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基礎上進行了修改。

具體步驟可以總結如下:

從訓練樣本集中採用Bootstrap的方法有放回地重取樣選出n個樣本,即

每棵樹的訓練資料集都是不同的

,裡面包含重複的訓練樣本(

這意味著隨機森林並不是按照bagging的0.632比例取樣

);

從所有屬性中有選擇地選出K個屬性,選擇最佳屬性作為節點建立CART決策樹;

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

這m個CART形成隨機森林,透過投票表決分類結果,決定資料是屬於哪一類。

隨機森林(Random Forest)的隨機性主要體現在兩方面,一方面是樣本隨機,另一方面是屬性隨機。樣本隨機的原因是如果樣本不隨機,每棵樹的訓練資料都一樣,那麼最終訓練出的分類結果也是完全一樣的。

5 投票策略

少數服從多數

一票否決

聽說還有貝葉斯平均的方法。但是我沒有過多瞭解。一般還是用少數服從多數的吧。

6 隨機森林的特點

6.1 優點

在當前的演算法中,具有極好的準確率

能夠執行在大資料上

能夠處理具有高維特徵的輸入樣本,不需要降維

能夠計算各個特徵的重要度

能夠防止過擬合

其實在一些大資料競賽中,隨機森林也是我第一個會嘗試的模型哦~

6.2 bias 與 variance

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

Bias:如果一個模型的訓練錯誤大,然後驗證錯誤和訓練錯誤都很大,那麼這個模型就是高bias。可能是因為欠擬合,也可能是因為模型是弱分類器。

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

「小白學ML」隨機森林 大全解

這個圖中,左上角是低偏差低方差的,可以看到所有的預測值,都會落在靶心,完美模型;

右上角是高偏差,可以看到,雖然整體資料預測的好像都在中心,但是波動很大。

【高偏差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個相關變數的方差計算,是矩陣的形式:

「小白學ML」隨機森林 大全解

很好推導的,可以試一試。

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

【總結】

增加決策樹的數量B,偏差不變;方差減小;

增加決策樹深度,偏差減小;減小,增加;

增加bagging取樣比例,偏差減小;增加,增加;

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

GBDT中,在某種情況下,是不斷訓練之前模型的殘差,來達到降低bias的效果。雖然也是整合模型,但是可以想到,每一個GBDT中的樹,所學習的資料的分佈都是不同的,這意味著在GBDT模型的方差會隨著決策樹的數量增多,不斷地增加。

bagging的目的:降低方差;

boost的目的:降低偏差

- END -