1. 程式人生 > >RF(隨機森林)演算法原理及其派生演算法

RF(隨機森林)演算法原理及其派生演算法

1.前言

整合學習有兩個流派,一個是boosting派系,它的特點是各個弱學習器之間有依賴關係。另一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合。本文就對整合學習中Bagging與隨機森林演算法做一個總結。
隨機森林是整合學習中可以和梯度提升樹GBDT分庭抗禮的演算法,尤其是它可以很方便的並行訓練,在如今大資料大樣本的的時代很有誘惑力。

2.bagging的原理

bagging整合學習方法可以利用下圖說明:


從上圖可以看出,Bagging的弱學習器之間的確沒有boosting那樣的聯絡。它的特點在“隨機取樣”。那麼什麼是隨機取樣?
隨機取樣(bootsrap)就是從我們的訓練集裡面採集固定個數的樣本,但是每採集一個樣本後,都將樣本放回。也就是說,之前採集到的樣本在放回後有可能繼續被採集到。對於我們的Bagging演算法,一般會隨機採集和訓練集樣本數m一樣個數的樣本。這樣得到的取樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有m個樣本訓練集做T次的隨機取樣,,則由於隨機性,T個取樣集各不相同。注意到這和GBDT的子取樣是不同的。GBDT的子取樣是無放回取樣,而Bagging的子取樣是放回取樣


對於一個樣本,它在某一次含m個樣本的訓練集的隨機取樣中,每次被採集到的概率是1/m。不被採集到的概率為1−1/m。如果m次取樣都沒有被採集中的概率是(1−1/m)^m。當m→∞m→∞時,(1−1/m)^m→ 1/e≃0.368。也就是說,在bagging每輪隨機取樣中,訓練集中大約有36.8%的資料沒有被取樣集採集中。

對於這部分大約36.8%的沒有被取樣到的資料,我們常常稱之為袋外資料(Out Of Bag, 簡稱OOB)。這些資料沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。
bagging對於弱學習器沒有限制,這和Adaboost一樣。但是最常用的一般也是決策樹和神經網路。
bagging的集合策略也比較簡單,對於分類問題,通常使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於迴歸問題,通常使用簡單平均法,對T個弱學習器得到的迴歸結果進行算術平均得到最終的模型輸出。
由於Bagging演算法每次都進行取樣來訓練模型,因此泛化能力很強

,對於降低模型的方差很有作用。當然對於訓練集的擬合程度就會差一些,也就是模型的偏倚會大一些。

3.bagging演算法流程

上一節我們對bagging演算法的原理做了總結,這裡就對bagging演算法的流程做一個總結。相對於Boosting系列的Adaboost和GBDT,bagging演算法要簡單的多。
輸入為樣本集D={(x1,y1),(x2,y2),...(xm,ym)},弱學習器演算法, 弱分類器迭代次數T。輸出為最終的強分類器f(x).
1)對於t=1,2...,T:

  • a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集Dm
  • b)用取樣集Dm訓練第m個弱學習器Gm(x)
2) 如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。

4.隨機森林演算法

理解了bagging演算法,隨機森林(Random Forest,以下簡稱RF)就好理解了。它是Bagging演算法的進化版,也就是說,它的思想仍然是bagging,但是進行了獨有的改進。我們現在就來看看RF演算法改進了什麼。   
首先,RF使用了CART決策樹作為弱學習器,這讓我們想到了梯度提示樹GBDT。第二,在使用決策樹的基礎上,RF對決策樹的建立做了改進,對於普通的決策樹,我們會在節點上所有的n個樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分,但是RF通過隨機選擇節點上的一部分樣本特徵,這個數字小於n,假設為nsub,然後在這些隨機選擇的nsub個樣本特徵中,選擇一個最優的特徵來做決策樹的左右子樹劃分。這樣進一步增強了模型的泛化能力。

如果nsub=nnsub=n,則此時RF的CART決策樹和普通的CART決策樹沒有區別。nsubnsub越小,則模型約健壯,當然此時對於訓練集的擬合程度會變差。也就是說nsubnsub越小,模型的方差會減小,但是偏倚會增大。在實際案例中,一般會通過交叉驗證調參獲取一個合適的nsubnsub的值。
除了上面兩點,RF和普通的bagging演算法沒有什麼不同, 下面簡單總結下RF的演算法。
輸入為樣本集D={(x1,y1),(x2,y2),...(xm,ym)},弱分類器迭代次數T。輸出為最終的強分類器f(x):

1)對於t=1,2...,T:

  • a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集Dm
  • b)用取樣集Dm訓練第m個決策樹模型Gm(x),在訓練決策樹模型的節點的時候, 在節點上所有的樣本特徵中選擇一部分樣本特徵,在這些隨機選擇的部分樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分

2) 如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。

5.隨機森林演算法推廣

由於RF在實際應用中的良好特性,基於RF,有很多變種演算法,應用也很廣泛,不光可以用於分類迴歸,還可以用於特徵轉換,異常點檢測等。下面對於這些RF家族的演算法中有代表性的做一個總結。

5.1 extra trees

extra trees是RF的一個變種, 原理幾乎和RF一模一樣,僅有區別有:
1)對於每個決策樹的訓練集,RF採用的是隨機取樣bootstrap來選擇取樣集作為每個決策樹的訓練集,而extra trees一般不採用隨機取樣,即每個決策樹採用原始訓練集
2)在選定了劃分特徵後,RF的決策樹會基於資訊增益,基尼係數,均方差之類的原則,選擇一個最優的特徵值劃分點,這和傳統的決策樹相同。但是extra trees比較的激進,他會隨機的選擇一個特徵值來劃分決策樹。
從第二點可以看出,由於隨機選擇了特徵值的劃分點位,而不是最優點位,這樣會導致生成的決策樹的規模一般會大於RF所生成的決策樹。也就是說,模型的方差相對於RF進一步減少,但是偏倚相對於RF進一步增大。在某些時候,extra trees的泛化能力比RF更好。

5.2 Totally Random Trees Embedding

Totally Random Trees Embedding(以下簡稱 TRTE)是一種非監督學習的資料轉化方法。它將低維的資料集對映到高維,從而讓對映到高維的資料更好的運用於分類迴歸模型。我們知道,在支援向量機中運用了核方法來將低維的資料集對映到高維,此處TRTE提供了另外一種方法。
TRTE在資料轉化的過程也使用了類似於RF的方法,建立T個決策樹來擬合數據。當決策樹建立完畢以後,資料集裡的每個資料在T個決策樹中葉子節點的位置也定下來了。比如我們有3顆決策樹,每個決策樹有5個葉子節點,某個資料特徵xx劃分到第一個決策樹的第2個葉子節點,第二個決策樹的第3個葉子節點,第三個決策樹的第5個葉子節點。則x對映後的特徵編碼為(0,1,0,0,0,     0,0,1,0,0,     0,0,0,0,1), 有15維的高維特徵。這裡特徵維度之間加上空格是為了強調三顆決策樹各自的子編碼。
對映到高維特徵後,可以繼續使用監督學習的各種分類迴歸演算法了。

6.隨機森林小結

作為一個可以高度並行化的演算法,RF在大資料時候大有可為。這裡也對常規的隨機森林演算法的優缺點做一個總結。
RF的主要優點有:
1)訓練可以高度並行化,對於大資料時代的大樣本訓練速度有優勢。個人覺得這是的最主要的優點。
2)由於可以隨機選擇決策樹節點劃分特徵,這樣在樣本特徵維度很高的時候,仍然能高效的訓練模型。
3)在訓練後,可以給出各個特徵對於輸出的重要性
4)由於採用了隨機取樣,訓練出的模型的方差小,泛化能力強。
5)相對於Boosting系列的Adaboost和GBDT, RF實現比較簡單。
6)對部分特徵缺失不敏感。
RF的主要缺點有:
1)在某些噪音比較大的樣本集上,RF模型容易陷入過擬合。
2)取值劃分比較多的特徵容易對RF的決策產生更大的影響,從而影響擬合的模型的效果。