Random forests, 隨機森林,online random forests


Random Forests (隨機森林)

隨機森林的思想很簡單,百度百科上介紹的隨機森林算法比較好理解。

在機器學習中,隨機森林是一個包含多個決策樹的分類器, 並且其輸出的類別是由個別樹輸出的類別的眾數而定。 Leo Breiman和Adele Cutler發展出推論出隨機森林的算法。 而 "Random Forests" 是他們的商標。 這個術語是1995年由貝爾實驗室的Tin Kam Ho所提出的隨機決策森林(random decision forests)而來的。這個方法則是結合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"" 以建造決策樹的集合。

學習算法

  根據下列算法而建造每棵樹:
       1. 用 N 來表示訓練例子的個數,M表示變量的數目。
       2. 我們會被告知一個數 m ,被用來決定當在一個節點上做決定時,會使用到多少個變量。m應小於M
       3. 從N個訓練案例中以可重復取樣的方式,取樣N次,形成一組訓練集(即bootstrap取樣。)。並使用這棵樹來對剩余預測其類別,並評估其誤差。
       4. 對於每一個節點,隨機選擇m個基於此點上的變量。根據這 m 個變量,計算其最佳的分割方式。
      5. 每棵樹都會完整成長而不會剪枝(Pruning)(這有可能在建完一棵正常樹狀分類器后會被采用)。
 

  優點

  隨機森林的優點有:
       1. 對於很多種資料,它可以產生高准確度的分類器。
       2. 它可以處理大量的輸入變量。
       3. 它可以在決定類別時,評估變量的重要性。
       4. 在建造森林時,它可以在內部對於一般化后的誤差產生不偏差的估計。
       5. 它包含一個好方法可以估計遺失的資料,並且,如果有很大一部分的資料遺失,仍可以維持准確度。
       6. 它提供一個實驗方法,可以去偵測 variable interactions 。
       7. 對於不平衡的分類資料集來說,它可以平衡誤差。
       8. 它計算各例中的親近度,對於數據挖掘、偵測偏離者(outlier)和將資料視覺化非常有用。
       9. 使用上述。它可被延伸應用在未標記的資料上,這類資料通常是使用非監督式聚類。也可偵測偏離者和觀看資料。
       10. 學習過程是很快速的。
 

  缺點

      1. 隨機森林已經被證明在某些噪音較大的分類或回歸問題上會過擬
       2. 對於有不同級別的屬性的數據,級別划分較多的屬性會對隨機森林產生更大的影響,所以隨機森林在這種數據上產出的屬性權值是不可信的。
 
 
mahout實現random forests:https://cwiki.apache.org/MAHOUT/random-forests.html  
 
 
 
online Random Forests  (在線隨機森林)
 
這是一片09年,ICCV 上的文章,效果和離線的random forest差不多,特別的牛。可以做分類,葉可以做預測,
 
這里介紹的主要是在線隨機決策樹,其思想主要是:每棵樹可以在線分裂。每個葉子分裂的條件是預測的數量要達到一定的值和每個葉子節點信息。
每個樹的生長主要通過預測的樣本(在線接受的樣本),每棵樹的葉子節點分裂主要根據該節點的熵或Gini

                                          or     

學過決策樹和信息論的,對這個概念都有了解。其中j表示第j棵樹,i表示第i個分類結果。K表示總的分類數。

對有一個給定的結合S(在線預測中給定),每棵樹上葉子節點Pj的的概率可以表示為:

如果要在Pj葉子節點分類,那么,得到二個葉子節點的概率可以用下式表示:

                                                                                and             

解釋一下 Pjls,l為left,s為測試集合。所以Pjls表示為在集合S中Pj葉子節點的分列的左節點。同理,Pjrs表示為在集合S中Pj葉子節點的分列的右節點。

那么,每棵樹上葉子節點Pj分裂必須符合以下二個條件:

        1. 落在葉子節點Pj的個數必須大於一個常數(可以人工設定)

        2. 葉子節點的Gini必須大於一個常數(可以人工設定),Gini計算公式如下:

以上步驟就完成整個樹的更新。

 

下面給出了在線隨機森林算法的流程:

步驟3. 用個possion分布確定從采樣的次數,其原理見online boosting: http://www.cnblogs.com/liqizhou/archive/2012/05/10/2494145.html

步驟6. u代表分類的類別。

步驟7. j代表第t棵樹上葉子節點。

步驟8. 統計第j個葉子節點的數目和計算Gini

步驟9. 判斷條件是否分裂的二個條件。

步驟10. 在符合條件的葉子節點中,選擇一個Gini最大的葉子節點作為分類節點。

以上就是online Random forests 的主要思想。

這個程序特別牛,我跑了一下,挺牛逼的,效果沒比offline mode差不多。如果你需要做online learning的話十分推薦。


 以上是我個人的理解,如有錯誤,請留言告訴我,本人感激不盡。

作者:BIGBIGBOAT/Liqizhou


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM