本文首發(fā)自 產(chǎn)品經(jīng)理的人工智能知識庫
原文地址:《一文看懂隨機森林 - Random Forest(附 4 個構(gòu)造步驟+10 個優(yōu)缺點)》

隨機森林是一種由決策樹構(gòu)成的集成算法,他在很多情況下都能有不錯的表現(xiàn)。
本文將介紹隨機森林的基本概念、4 個構(gòu)造步驟、4 種方式的對比評測、10 個優(yōu)缺點和 4 個應(yīng)用方向。
什么是隨機森林?
隨機森林屬于 集成學習 中的 Bagging(Bootstrap AGgregation 的簡稱) 方法。如果用圖來表示他們之間的關(guān)系如下:

決策樹 - Decision Tree

在解釋隨機森林前,需要先提一下決策樹。決策樹是一種很簡單的算法,他的解釋性強,也符合人類的直觀思維。這是一種基于if-then-else規(guī)則的有監(jiān)督學習算法,上面的圖片可以直觀的表達決策樹的邏輯。
隨機森林 - Random Forest | RF

隨機森林是由很多決策樹構(gòu)成的,不同決策樹之間沒有關(guān)聯(lián)。
當我們進行分類任務(wù)時,新的輸入樣本進入,就讓森林中的每一棵決策樹分別進行判斷和分類,每個決策樹會得到一個自己的分類結(jié)果,決策樹的分類結(jié)果中哪一個分類最多,那么隨機森林就會把這個結(jié)果當做最終的結(jié)果。
構(gòu)造隨機森林的 4 個步驟

- 假如有N個樣本,則有放回的隨機選擇N個樣本(每次隨機選擇一個樣本,然后返回繼續(xù)選擇)。這選擇好了的N個樣本用來訓練一個決策樹,作為決策樹根節(jié)點處的樣本。
- 當每個樣本有M個屬性時,在決策樹的每個節(jié)點需要分裂時,隨機從這M個屬性中選取出m個屬性,滿足條件m << M。然后從這m個屬性中采用某種策略(比如說信息增益)來選擇1個屬性作為該節(jié)點的分裂屬性。
- 決策樹形成過程中每個節(jié)點都要按照步驟2來分裂(很容易理解,如果下一次該節(jié)點選出來的那一個屬性是剛剛其父節(jié)點分裂時用過的屬性,則該節(jié)點已經(jīng)達到了葉子節(jié)點,無須繼續(xù)分裂了)。一直到不能夠再分裂為止。注意整個決策樹形成過程中沒有進行剪枝。
- 按照步驟1~3建立大量的決策樹,這樣就構(gòu)成了隨機森林了。
隨機森林的優(yōu)缺點
優(yōu)點
- 它可以出來很高維度(特征很多)的數(shù)據(jù),并且不用降維,無需做特征選擇
- 它可以判斷特征的重要程度
- 可以判斷出不同特征之間的相互影響
- 不容易過擬合
- 訓練速度比較快,容易做成并行方法
- 實現(xiàn)起來比較簡單
- 對于不平衡的數(shù)據(jù)集來說,它可以平衡誤差。
- 如果有很大一部分的特征遺失,仍可以維持準確度。
缺點
- 隨機森林已經(jīng)被證明在某些噪音較大的分類或回歸問題上會過擬合。
- 對于有不同取值的屬性的數(shù)據(jù),取值劃分較多的屬性會對隨機森林產(chǎn)生更大的影響,所以隨機森林在這種數(shù)據(jù)上產(chǎn)出的屬性權(quán)值是不可信的
隨機森林 4 種實現(xiàn)方法對比測試
隨機森林是常用的機器學習算法,既可以用于分類問題,也可用于回歸問題。本文對 scikit-learn、Spark MLlib、DolphinDB、XGBoost 四個平臺的隨機森林算法實現(xiàn)進行對比測試。評價指標包括內(nèi)存占用、運行速度和分類準確性。
測試結(jié)果如下:

測試過程及說明忽略,感興趣的可以查看原文《隨機森林算法 4 種實現(xiàn)方法對比測試:DolphinDB 速度最快,XGBoost 表現(xiàn)最差》
隨機森林的 4 個應(yīng)用方向

隨機森林可以在很多地方使用:
- 對離散值的分類
- 對連續(xù)值的回歸
- 無監(jiān)督學習聚類
- 異常點檢測