Categories
程式開發

隨機森林原理介紹與適用情況(綜述篇)


一句話介紹

隨機森林是一種集成算法(Ensemble Learning),它屬於Bagging類型,通過組合多個弱分類器,最終結果通過投票或取均值,使得整體模型的結果具有較高的精確度和泛化性能。其可以取得不錯成績,主要歸功於“隨機”和“森林”,一個使它具有抗過擬合能力,一個使它更加精準。

隨機森林原理介紹與適用情況(綜述篇) 1

Bagging結構

裝袋

Bagging也叫自舉匯聚法(bootstrap aggregating),是一種在原始數據集上通過有放回抽樣重新選出k個新數據集來訓練分類器的集成技術。它使用訓練出來的分類器的集合來對新樣本進行分類,然後用多數投票或者對輸出求均值的方法統計所有分類器的分類結果,結果最高的類別即為最終標籤。此類算法可以有效降低bias,並能夠降低variance。

【自助法】它通過自助法(bootstrap)重採樣技術,從訓練集裡面採集固定個數的樣本,但是每採集一個樣本後,都將樣本放回。也就是說,之前採集到的樣本在放回後有可能繼續被採集到。 【OOB】在Bagging的每輪隨機採樣中,訓練集中大約有36.8%的數據沒有被採樣集採集中。對於這部分沒採集到的數據,我們常常稱之為袋外數據(Out Of Bag,簡稱OOB)。這些數據沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。 【隨機性】對於我們的Bagging算法,一般會對樣本使用boostrap進行隨機採集,每棵樹採集相同的樣本數量,一般小於原始樣本量。這樣得到的採樣集每次的內容都不同,通過這樣的自助法生成k個分類樹組成隨機森林,做到樣本隨機性。 【輸出】Bagging的集合策略也比較簡單,對於分類問題,通常使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於回歸問題,通常使用簡單平均法,對T個弱學習器得到的回歸結果進行算術平均得到最終的模型輸出。

隨機森林

隨機森林(Random Forest,RF)是Bagging算法的一種,其實在介紹完Bagging算法之後,隨機森林幾乎是呼之欲出的,RF相對於Bagging只是對其中一些細節做了自己的規定和設計。

【弱分類器】首先,RF使用了CART決策樹作為弱學習器。換句話說,其實我們只是將使用CART決策樹作為弱學習器的Bagging方法稱為隨機森林。 【隨機性】同時,在生成每棵樹的時候,每個樹選取的特徵都僅僅是隨機選出的少數特徵,一般默認取特徵總數m的開方。而一般的CART樹則是會選取全部的特徵進行建模。因此,不但特徵是隨機的,也保證了特徵隨機性。 【樣本量】相對於一般的Bagging算法,RF會選擇採集和訓練集樣本數N一樣個數的樣本。 【特點】由於隨機性,對於降低模型的方差很有作用,故隨機森林一般不需要額外做剪枝,即可以取得較好的泛化能力和抗過擬合能力(Low Variance)。當然對於訓練集的擬合程度就會差一些,也就是模型的偏倚會大一些(High Bias),僅僅是相對的。

CART樹

隨機森林的弱分類器使用的是CART數,CART決策樹又稱分類回歸樹。當數據集的因變量為連續性數值時,該樹算法就是一個回歸樹,可以用葉節點觀察的均值作為預測值;當數據集的因變量為離散型數值時,該樹算法就是一個分類樹,可以很好的解決分類問題。

但需要注意的是,該算法是一個二叉樹,即每一個非葉節點只能引伸出兩個分支,所以當某個非葉節點是多水平(2個以上)的離散變量時,該變量就有可能被多次使用。同時,若某個非葉節點是連續變量時,決策樹也將把他當做離散變量來處理(即在有限的可能值中做劃分)

特徵選擇

特徵選擇目前比較流行的方法是信息增益、增益率、基尼係數和卡方檢驗。這裡主要介紹基於基尼係數(GINI)的特徵選擇,因為隨機森林采用的CART決策樹就是基於基尼係數選擇特徵的。

基尼係數的選擇的標準就是每個子節點達到最高的純度,即落在子節點中的所有觀察都屬於同一個分類,此時基尼係數最小,純度最高,不確定度最小。

對於一般的決策樹,假如總共有K類,樣本屬於第k類的概率為:pk,則該概率分佈的基尼指數為:

隨機森林原理介紹與適用情況(綜述篇) 2

基尼指數越大,說明不確定性就越大;基尼係數越小,不確定性越小,數據分割越徹底,越乾淨。

對於CART樹而言,由於是二叉樹,可以通過下面的表示:

隨機森林原理介紹與適用情況(綜述篇) 3

在我們遍歷每個特徵的每個分割點時,當使用特徵A=a,將D劃分為兩部分,即D1(滿足A=a的樣本集合),D2(不滿足A=a的樣本集合) 。則在特徵A=a的條件下D的基尼指數為:

隨機森林原理介紹與適用情況(綜述篇) 4

Gini(D):表示集合D的不確定性。

Gini(A,D):表示經過A=a分割後的集合D的不確定性。

隨機森林中的每棵CART決策樹都是通過不斷遍歷這棵樹的特徵子集的所有可能的分割點,尋找Gini係數最小的特徵的分割點,將數據集分成兩個子集,直至滿足停止條件為止。

抗過擬合

首先,正如Bagging介紹中提到的,每個樹選取使用的特徵時,都是從全部m個特徵中隨機產生的,本身已經降低了過擬合的風險和趨勢。模型不會被特定的特徵值或者特徵組合所決定,隨機性的增加,將控制模型的擬合能力不會無限提高。

第二,與決策樹不同,RF對決策樹的建立做了改進。對於普通的決策樹,我們會在節點上所有的m個樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分。但是RF的每個樹,其實選用的特徵是一部分,在這些少量特徵中,選擇一個最優的特徵來做決策樹的左右子樹劃分,將隨機性的效果擴大,進一步增強了模型的泛化能力。

假設每棵樹選取msub個特徵,msub越小,此時模型對於訓練集的擬合程度會變差,偏倚增加,但是會泛化能力更強,模型方差減小。 msub越大則相反。在實際使用中,一般會將msub的取值作為一個參數,通過開啟oob驗證或使用交叉驗證,不斷調整參數以獲取一個合適的msub的值。

優點總結

由於採用了集成算法,本身精度比大多數單個算法要好在測試集上表現良好,由於兩個隨機性的引入,使得隨機森林不容易陷入過擬合(樣本隨機,特徵隨機)在工業上,由於兩個隨機性的引入,使得隨機森林具有一定的抗噪聲能力,對比其他算法具有一定優勢由於樹的組合,使得隨機森林可以處理非線性數據,本身屬於非線性分類(擬合)模型它能夠處理很高維度(feature很多)的數據,並且不用做特徵選擇,對數據集的適應能力強:既能處理離散型數據,也能處理連續型數據,數據集無需規範化訓練速度快,可以運用在大規模數據集上可以處理缺省值(單獨作為一類),不用額外處理由於有袋外數據(OOB),可以在模型生成過程中取得真實誤差的無偏估計,且不損失訓練數據量在訓練過程中,能夠檢測到feature間的互相影響,且可以得出feature的重要性,具有一定參考意義由於每棵樹可以獨立、同時生成,容易做成並行化方法由於實現簡單、精度高、抗過擬合能力強,當面對非線性數據時,適於作為基準模型

參考目錄

[1] https://www.cnblogs.com/pinard/p/6156009.html”[2] https://www.cnblogs.com/maybe2030/p/4585705.html”[3] https://www.cnblogs.com/liuwu265/p/4688403.html”[4] http://blog.csdn.net/qq_30189255/article/details/5153244

鏈接:https://www.jianshu.com/p/a779f0686acc

來源:簡書