隨機森林算法原理剖析


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

  隨機森林是一種比較新的機器學習模型,經典的機器學習模型是神經網絡。神經網絡預測精確,但是計算量很大。

  2001年Breiman把分類樹組合成隨機森林(Breiman 2001a),即在變量(列)的使用和數據(行)的使用上進行隨機化,生成很多分類樹,再匯總分類樹的結果。隨機森林在運算量沒有顯著提高的前提下提高了預測精度。
隨機森林對多元公線性不敏感,結果對缺失數據和非平衡的數據比較穩健,可以很好地預測多達幾千個解釋變量的作用(Breiman 2001b),被譽為當前最好的算法之一(Iverson et al. 2008)。

  隨機森林顧名思義,是用隨機的方式建立一個森林,森林里面有很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關聯的。在得到森林之后,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬於哪一類(對於分類算法),然后看看哪一類被選擇最多,就預測這個樣本為那一類。

隨機森林算法原理:
  隨機森林是從原始訓練樣本集N中有放回地重復隨機抽取k個樣本生成新的訓練樣本集合,然后根據自助樣本集生成k個分類樹組成隨機森林,新數據的分類結果按分類樹投票多少形成的分數而定。其實質是對決策樹算法的一種改進,將多個決策樹合並在一起,每棵樹的建立依賴於一個獨立抽取的樣品,森林中的每棵樹具有相同的分布,分類誤差取決於每一棵樹的分類能力和它們之間的相關性。特征選擇采用隨機的方法去分裂每一個節點,然后比較不同情況下產生的誤差。能夠檢測到的內在估計誤差、分類能力和相關性決定選擇特征的數目。單棵樹的分類能力可能很小,但在隨機產生大量的決策樹后,一個測試樣品可以通過每一棵樹的分類結果經統計后選擇最可能的分類。

  在建立每一棵決策樹的過程中,有兩點需要注意采樣與完全分裂。首先是兩個隨機采樣的過程,random forest對輸入的數據要進行行、列的采樣。對於行采樣,采用有放回的方式,也就是在采樣得到的樣本集合中,可能有重復的樣本。假設輸入樣本為N個,那么采樣的樣本也為N個。這樣使得在訓練的時候,每一棵樹的輸入樣本都不是全部的樣本,使得相對不容易出現over-fitting。然后進行列采樣,從M個feature中,選擇m個(m << M)。之后就是對采樣之后的數據使用完全分裂的方式建立出決策樹,這樣決策樹的某一個葉子節點要么是無法繼續分裂的,要么里面的所有樣本的都是指向的同一個分類。一般很多的決策樹算法都一個重要的步驟——剪枝,但是這里不這樣干,由於之前的兩個隨機采樣的過程保證了隨機性,所以就算不剪枝,也不會出現over-fitting。

關於隨機:
(1)訓練每棵樹時,從全部訓練樣本中選取一個子集進行訓練(即bootstrap取樣)。用剩余的數據進行評測,評估其誤差;
(2)在每個節點,隨機選取所有特征的一個子集,用來計算最佳分割方式。

算法流程:
(1)訓練總樣本的個數為N,則單棵決策樹從N個訓練集中有放回的隨機抽取n個作為此單顆樹的訓練樣本(bootstrap有放回取樣)。
(2)令訓練樣例的輸入特征的個數為M,m遠遠小於M,則我們在每顆決策樹的每個節點上進行分裂時,從M個輸入特征里隨機選擇m個輸入特征,然后從這m個輸入特征里選擇一個最好的進行分裂。m在構建決策樹的過程中不會改變。
注意:要為每個節點隨機選出m個特征,然后選擇最好的那個特征來分裂。
注意:決策樹中分裂屬性的兩個選擇度量:信息增益和基尼指數。
(3)每棵樹都一直這樣分裂下去,直到該節點的所有訓練樣例都屬於同一類,不需要剪枝。由於之前的兩個隨機采樣的過程保證了隨機性,所以就算不剪枝,也不會出現over-fitting。

結果判定:
(1)目標特征為數字類型:取t個決策樹的平均值作為分類結果。
(2)目標特征為類別類型:少數服從多數,取單棵樹分類結果最多的那個類別作為整個隨機森林的分類結果。

預測:
  隨機森林是用隨機的方式建立一個森林,森林里面有很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關聯的。在得到森林之后,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬於哪一類,然后看看哪一類被選擇最多,就預測這個樣本為那一類。
  說明:通過bagging有放回取樣后,大約36.8%的沒有被采樣到的數據,我們常常稱之為袋外數據。這些數據沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM