統計學習方法——CART, Bagging, Random Forest, Boosting
本文從統計學角度講解了CART(Classification And Regression Tree), Bagging(bootstrap aggregation), Random Forest Boosting四種分類器的特點與分類方法,參考材料為密歇根大學Ji Zhu的pdf與組會上王博的講解。
- CART(Classification And Regression Tree)
思想:遞迴地將輸入空間分割成矩形 優點:可以進行變數選擇,可以克服missing data,可以處理混合預測
經過不斷分割可以得到最後的分類樹:
- 那麼怎麼分割才是最好的呢?即怎樣將輸入空間分割成矩形是最佳策略呢?這裡一般採用三中評價標準策略:
分裂時,找到使不純度下降最快的分裂變數和分裂點。
- 從結果可以看出CART可以通過變數選擇迭代地建立一棵分類樹,使得每次分類平面能最好地將剩餘資料分為兩類。
- classification tree非常簡單,但是經常會有noisy classifiers. 於是引入ensemble classifiers: bagging, random forest, 和boosting。
- 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
- Random forest(Breiman1999):
- 從樣本集中用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:
3. WIKI_Bagging (Bootstrap_aggregating)
關於Machine Learning更多的學習資料將繼續更新,敬請關注本部落格和新浪微博Sophia_qing。