Random Forest(4個構造步驟+10個優缺點)

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

隨機森林是一種由決策樹構成的集成算法,他在很多情況下都能有不錯的表現。

本文將介紹隨機森林的基本概念、4 個構造步驟、4 種方式的對比評測、10 個優缺點和 4 個應用方向。

什麼是隨機森林?

隨機森林屬於 集成學習 中的 Bagging(Bootstrap AGgregation 的簡稱) 方法。如果用圖來表示他們之間的關係如下:

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

決策樹 – Decision Tree

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

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

詳細瞭解決策樹,可以看看《一文看懂決策樹 – Decision tree(3個步驟+3種典型算法+10個優缺點)》

隨機森林 – Random Forest | RF

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

隨機森林是由很多決策樹構成的,不同決策樹之間沒有關聯。

當我們進行分類任務時,新的輸入樣本進入,就讓森林中的每一棵決策樹分別進行判斷和分類,每個決策樹會得到一個自己的分類結果,決策樹的分類結果中哪一個分類最多,那麼隨機森林就會把這個結果當做最終的結果。

構造隨機森林的 4 個步驟

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

  1. 假如有N個樣本,則有放回的隨機選擇N個樣本(每次隨機選擇一個樣本,然後返回繼續選擇)。這選擇好了的N個樣本用來訓練一個決策樹,作為決策樹根節點處的樣本。
  2. 當每個樣本有M個屬性時,在決策樹的每個節點需要分裂時,隨機從這M個屬性中選取出m個屬性,滿足條件m << M。然後從這m個屬性中採用某種策略(比如說信息增益)來選擇1個屬性作為該節點的分裂屬性。
  3. 決策樹形成過程中每個節點都要按照步驟2來分裂(很容易理解,如果下一次該節點選出來的那一個屬性是剛剛其父節點分裂時用過的屬性,則該節點已經達到了葉子節點,無須繼續分裂了)。一直到不能夠再分裂為止。注意整個決策樹形成過程中沒有進行剪枝。
  4. 按照步驟1~3建立大量的決策樹,這樣就構成了隨機森林了。

隨機森林的優缺點

優點

  1. 它可以出來很高維度(特徵很多)的數據,並且不用降維,無需做特徵選擇
  2. 它可以判斷特徵的重要程度
  3. 可以判斷出不同特徵之間的相互影響
  4. 不容易過擬合
  5. 訓練速度比較快,容易做成並行方法
  6. 實現起來比較簡單
  7. 對於不平衡的數據集來說,它可以平衡誤差。
  8. 如果有很大一部分的特徵遺失,仍可以維持準確度。

缺點

  1. 隨機森林已經被證明在某些噪音較大的分類或迴歸問題上會過擬合。
  2. 對於有不同取值的屬性的數據,取值劃分較多的屬性會對隨機森林產生更大的影響,所以隨機森林在這種數據上產出的屬性權值是不可信的

隨機森林 4 種實現方法對比測試

隨機森林是常用的機器學習算法,既可以用於分類問題,也可用於迴歸問題。本文對 scikit-learn、Spark MLlib、DolphinDB、XGBoost 四個平臺的隨機森林算法實現進行對比測試。評價指標包括內存佔用、運行速度和分類準確性。

測試結果如下:

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

測試過程及說明忽略,感興趣的可以查看原文《隨機森林算法 4 種實現方法對比測試:DolphinDB 速度最快,XGBoost 表現最差》

隨機森林的 4 個應用方向

一文看懂隨機森林 - Random Forest(4個構造步驟+10個優缺點)

隨機森林可以在很多地方使用:

  1. 對離散值的分類
  2. 對連續值的迴歸
  3. 無監督學習聚類
  4. 異常點檢測


分享到:


相關文章: