【前言】:文章來自微信公衆号【機器學習煉丹術】
全文3155字,預計閱讀時間10min
文章目錄:
為什麼現在還要學習随機森林?
随機森林中仍有兩個未解之謎(對我來說)。随機森林采用的bagging思想中怎麼得到的62.3% 以及 随機森林和bagging的方法是否有區别。
随機森林(Random Forest)就是通過集成學習的思想将多棵決策樹集成的一種算法。基本單元是決策樹。随機森林算法的提出也是為了改善決策樹容易存在過拟合的情況。
1 随機森林習慣上,我們将衆多分類器(SVM、Logistic回歸、決策樹等)所組成的“總的分類器”,叫做随機森林。随機森林有兩個關鍵詞,一個是“随機”,一個是“森林”。森林就是成百上千棵樹,體現了集成的思想,随機将會在下面總結到。
2 baggingBagging,其實就是bootstrap aggregating的縮寫, 兩者是等價的,其核心就是有放回抽樣。
【bagging具體步驟】
3 神秘的63.2%
- 從大小為n的樣本集中有放回地重采樣選出n個樣本;(沒錯就是n個樣本抽取n個)
- 在所有屬性上,對這n個樣本建立分類器(ID3信息增益、C4.5信息增益率、CART基尼系數、SVM、Logistic回歸等)
- 重複以上兩步m次,即獲得了m個分類器;
- 将預測數據放在這m個分類器上,最後根據這m個分類器的投票結果,決定數據屬于哪一類。
一般被大家知曉的是:随機森林中每一次采樣的比例是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,或者說它是過拟合。
這個圖中,左上角是低偏差低方差的,可以看到所有的預測值,都會落在靶心,完美模型;
右上角是高偏差,可以看到,雖然整體數據預測的好像都在中心,但是波動很大。
【高偏差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 -
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!