算法之路--隨機森林

一:什麼是隨機森林

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

二:隨機森林的優缺點

優點

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

缺點

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

三:原理

隨機森林,指的是利用多棵樹對樣本進行訓練並預測的一種分類器。簡單來說,隨機森林就是由多棵CART(Classification And Regression Tree)構成的。對於每棵樹,它們使用的訓練集是從總的訓練集中有放回採樣出來的,這意味着,總的訓練集中的有些樣本可能多次出現在一棵樹的訓練集中,也可能從未出現在一棵樹的訓練集中。在訓練每棵樹的節點時,使用的特徵是從所有特徵中按照一定比例隨機地無放回的抽取的,假設總的特徵數量爲M,這個比例可以是sqrt(M),1/2sqrt(M),2sqrt(M)。
 

四:如何構建隨機森立

隨機森林大致過程如下:
1)從樣本集中有放回隨機採樣選出n個樣本;
2)從所有特徵中隨機選擇k個特徵,對選出的樣本利用這些特徵建立決策樹(一般是CART,也可是別的或混合);
3)重複以上兩步m次,即生成m棵決策樹,形成隨機森林;
4)對於新數據,經過每棵樹決策,最後投票確認分到哪一類。

五:訓練、預測

輸入:訓練集S,測試集T,特徵維數F

參數:生成的CART樹的數量t,每棵樹的深度d,每個結點用到的特徵數量f

終止條件:結點上的樣本數小於s,結點上的信息增益(比)小於m。(詳情:https://www.jianshu.com/p/d153130b813f

輸出:由CART組成的隨機森林

訓練:

(1). 從訓練集S中有放回的抽取大小和S一樣的訓練集S(i),作爲根結點的樣本,從根結點開始訓練。

(2).

  1.  若當前結點達到終止條件,則設置當前結點爲葉子結點。

            分類問題:葉子結點輸出爲當前結點樣本集合中數量最多的那一類C(j),概率P 爲C(j)佔當前樣本集的比例。

            迴歸問題:葉子結點輸出爲當前結點樣本集各個樣本值的均值。

  2. 若當前結點沒有到達終止條件,則從F維特徵中無放回的隨機選取f維特徵(滿足f<<F).利用這f維特徵,尋找分類效果最好(信息增益(比)最大)的一維特徵K及其閾值th,當前結點上的樣本的第K維特徵小於th的進左子樹,大於th的進右子樹。繼續訓練其他結點。

  3.  重複1,2直到所有結點都訓練過了或被標記爲葉子結點。(一個CART訓練完成)

  4.  重複1,2,3直到所有CART都被訓練過。
預測:

(1) 從當前樹的根結點開始,根據當前結點的第K維特徵的閾值,判斷是進入左子樹還是進入右子樹,直到到達某個葉子結點,並輸出預測值。

(2) 重複(1)直到所有t顆樹都輸出了預測值。

     分類問題:最終輸出爲所有樹中預測概率總和最大的那個類C(j) (概率相加對比)

     迴歸問題:最終輸出爲所有樹輸出的平均值。
 

六:參考

https://blog.csdn.net/wfei101/article/details/74840091

https://blog.csdn.net/y0367/article/details/51501780

發佈了23 篇原創文章 · 獲贊 20 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章