統計學習方法——CART, Bagging, Random Forest, Boosting

統計學習方法——CART, Bagging, Random Forest, Boosting


本文轉自:http://blog.csdn.net/abcjennifer/article/details/8164315

本文從統計學角度講解了CART(Classification And Regression Tree), Bagging(bootstrap aggregation), Random Forest Boosting四種分類器的特點與分類方法,參考材料爲密歇根大學Ji Zhu的pdf與組會上王博的講解。


  • CART(Classification And Regression Tree
         Breiman, Friedman, Olshen & Stone (1984), Quinlan (1993)
         思想:遞歸地將輸入空間分割成矩形
         優點:可以進行變量選擇,可以克服missing data,可以處理混合預測
         缺點:不穩定

     example:
對於下面的數據,希望分割成紅色和綠色兩個類,原本數據生成是這樣的:
Red class: x1^2+x2^2>=4.6
Green class: otherwise










經過不斷分割可以得到最後的分類樹:



  • 那麼怎麼分割纔是最好的呢?即怎樣將輸入空間分割成矩形是最佳策略呢?這裏一般採用三中評價標準策略:

分裂時,找到使不純度下降最快的分裂變量和分裂點。

  • 從結果可以看出CART可以通過變量選擇迭代地建立一棵分類樹,使得每次分類平面能最好地將剩餘數據分爲兩類。
  • classification tree非常簡單,但是經常會有noisy classifiers. 於是引入ensemble classifiers: bagging, random forest, 和boosting。
一般的, Boosting > Bagging > Classification tree(single tree)






  • Bagging (Breiman1996): 也稱bootstrap aggregation

Bagging的策略:

         - 從樣本集中用Bootstrap採樣選出n個樣本

         - 在所有屬性上,對這n個樣本建立分類器(CART or SVM or ...)

         - 重複以上兩步m次,i.e.build m個分類器(CART or SVM or ...)

         - 將數據放在這m個分類器上跑,最後vote看到底分到哪一類


Fit many large trees to bootstrap resampled versions of the training data, and classify by majority vote.

下圖是Bagging的選擇策略,每次從N個數據中採樣n次得到n個數據的一個bag,總共選擇B次得到B個bags,也就是B個bootstrap samples.










  • Random forest(Breiman1999):
隨機森林在bagging基礎上做了修改。

         - 從樣本集中用Bootstrap採樣選出n個樣本,預建立CART

         - 在樹的每個節點上,從所有屬性中隨機選擇k個屬性,選擇出一個最佳分割屬性作爲節點

         - 重複以上兩步m次,i.e.build m棵CART

         - 這m個CART形成Random Forest


隨機森林可以既可以處理屬性爲離散值的量,比如ID3算法,也可以處理屬性爲連續值的量,比如C4.5算法。
這裏的random就是指
         1. Bootstrap中的隨機選擇子樣本   
         2. Random subspace的算法從屬性集中隨機選擇k個屬性,每個樹節點分裂時,從這隨機的k個屬性,選擇最優的

結果證明有時候Random Forest比Bagging還要好。今天微軟的Kinect裏面就採用了Random Forest,相關論文Real-time Human Pose Recognition in Parts from Single Depth Images是CVPR2011的best paper。






  • Boosting(Freund & Schapire 1996):

Fit many large or small trees to reweighted versions of the training data. Classify by weighted majority vote.

首先給個大致的概念,boosting在選擇hyperspace的時候給樣本加了一個權值,使得loss function儘量考慮那些分錯類的樣本(i.e.分錯類的樣本weight大)。

怎麼做的呢?

         - boosting重採樣的不是樣本,而是樣本的分佈,對於分類正確的樣本權值低,分類錯誤的樣本權值高(通常是邊界附近的樣本),最後的分類器是很多弱分類器的線性疊加(加權組合),分類器相當簡單。




AdaBoost和RealBoost是Boosting的兩種實現方法。general的說,Adaboost較好用,RealBoost較準確。

下面是AdaBoost進行權值設置與更新的過程:




以下是幾個算法的性能比較:




對於多類分類(Multi-class),generalization~是類似的過程:

比如對數據進行K類分類,而不通過每次二類分類總共分K-1次的方法,我們只需要每個弱分類器比random guessing好(i.e. 準確率>1/K)


多類分類算法流程:



多類分類器loss function的設計:






===============補充===============

數據挖掘的十大算法,以後可以慢慢研究:

C4.5

K-Means

SVM

Apriori

EM

PageRank

AdaBoost

kNN

NaiveBayes

CART





===============總結===============

Boosting可以進行變量選擇,所以最開始的component可以是簡單變量。

Boosting可能會overfit,因此在比較早的時候就停下來是正則化boosting的一個方法。

期待更多朋友一起補充……





Reference:

1. http://cos.name/2011/12/stories-about-statistical-learning/

2. WIKI_Boosting

3. WIKI_Bagging (Bootstrap_aggregating)

4. WIKI_CART

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