1. 程式人生 > >隨機森林(Random forest,RF)的生成方法以及優缺點

隨機森林(Random forest,RF)的生成方法以及優缺點

       隨機森林(Random Forest)是屬於整合學習的一種組合分類演算法(確切說是屬於bagging),整合學習的核心思想就是將若干個弱(基)分類器組合起來,得到一個分類效能顯著優越的強分類器。如果各弱分類器之前沒有強依賴關係、可並行生成,就可以使用隨機森林演算法。   隨機森林利用自主抽樣法(bootstrap)從原資料集中有放回地抽取多個樣本,對抽取的樣本先用弱分類器—決策樹進行訓練,然後把這些決策樹組合在一起,通過投票得出最終的分類或預測結果。

隨機森林的生成方法

  1. 從樣本集中通過重取樣的方式產生n個樣本。
  2. 建設樣本特徵數目為a,對n個樣本選擇a中的k個特徵,用建立決策樹的方式獲得最佳分割點。
  3. 重複m次,產生m棵決策樹。
  4. 多數投票機制進行預測。

隨機森林中的隨機是什麼意思?

     隨機森林中的隨機性主要體現在兩個方面:

  1. 隨機取樣:隨機森林在計算每棵樹時,從全部訓練樣本(樣本數為n)中選取一個可能有重複的大小同樣為n的資料集進行訓練(即booststrap取樣)。
  2. 特徵選取的隨機性:在每個節點隨機選取所有特徵的一個子集,用來計算最佳分割方式。

隨機森林的優點:

  1. 表現效能好,與其他演算法相比有著很大優勢。
  2. 隨機森林能處理很高維度的資料(也就是很多特徵的資料),並且不用做特徵選擇。
  3. 在訓練完之後,隨機森林能給出哪些特徵比較重要。
  4. 訓練速度快,容易做成並行化方法(訓練時,樹與樹之間是相互獨立的)。
  5. 在訓練過程中,能夠檢測到feature之間的影響。
  6. 對於不平衡資料集來說,隨機森林可以平衡誤差。當存在分類不平衡的情況時,隨機森林能提供平衡資料集誤差的有效方法。
  7. 如果有很大一部分的特徵遺失,用RF演算法仍然可以維持準確度。
  8. 隨機森林演算法有很強的抗干擾能力(具體體現在6,7點)。所以當資料存在大量的資料缺失,用RF也是不錯的
  9. 隨機森林抗過擬合能力比較強(雖然理論上說隨機森林不會產生過擬合現象,但是在現實中噪聲是不能忽略的,增加樹雖然能夠減小過擬合,但沒有辦法完全消除過擬合,無論怎麼增加樹都不行,再說樹的數目也不可能無限增加的。)
  10. 隨機森林能夠解決分類與迴歸兩種型別的問題,並在這兩方面都有相當好的估計表現。(雖然RF能做迴歸問題,但通常都用RF來解決分類問題)。
  11. 在建立隨機森林時候,對generlization error(泛化誤差)使用的是無偏估計模型,泛化能力強。

隨機森林的缺點:

  1. 隨機森林在解決迴歸問題時,並沒有像它在分類中表現的那麼好,這是因為它並不能給出一個連續的輸出。當進行迴歸時,隨機森林不能夠做出超越訓練集資料範圍的預測,這可能導致在某些特定噪聲的資料進行建模時出現過度擬合。(PS:隨機森林已經被證明在某些噪音較大的分類或者回歸問題上回過擬合)。
  2. 對於許多統計建模者來說,隨機森林給人的感覺就像一個黑盒子,你無法控制模型內部的執行。只能在不同的引數和隨機種子之間進行嘗試。
  3. 可能有很多相似的決策樹,掩蓋了真實的結果。
  4. 對於小資料或者低維資料(特徵較少的資料),可能不能產生很好的分類。(處理高維資料,處理特徵遺失資料,處理不平衡資料是隨機森林的長處)。
  5. 執行資料雖然比boosting等快(隨機森林屬於bagging),但比單隻決策樹慢多了。

PS:最後幾個重要的點

  1. RF採用多個決策樹的投票機制來改善決策樹。
  2. 為什麼不能用全樣本去訓練m棵決策樹?

        答:全樣本訓練忽視了局部樣本的規律,對於模型的泛化能力是有害的(如果有m個決策樹,那就需要m個一定數量的樣本集來訓練每一棵樹)

     3.產生n個樣本的方法,採用Bootstraping法,這是一種又放回的抽樣方法,產生n個樣本。

     4.最終採用Bagging的策略來獲得,即多數投票機制。