Random Forests (隨機森林)
隨機森林的思想很簡單,百度百科上介紹的隨機森林算法比較好理解。
在機器學習中,隨機森林是一個包含多個決策樹的分類器, 並且其輸出的類別是由個別樹輸出的類別的眾數而定。 Leo Breiman和Adele Cutler發展出推論出隨機森林的算法。 而 "Random Forests" 是他們的商標。 這個術語是1995年由貝爾實驗室的Tin Kam Ho所提出的隨機決策森林(random decision forests)而來的。這個方法則是結合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"" 以建造決策樹的集合。
學習算法
優點
缺點
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