統計學習方法——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)
- 那麼怎麼分割纔是最好的呢?即怎樣將輸入空間分割成矩形是最佳策略呢?這裏一般採用三中評價標準策略:
- 從結果可以看出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 bootstrap resampled versions of the training data, and classify by majority vote.
- Random forest(Breiman1999):
- 從樣本集中用Bootstrap採樣選出n個樣本,預建立CART
- 在樹的每個節點上,從所有屬性中隨機選擇k個屬性,選擇出一個最佳分割屬性作爲節點
- 重複以上兩步m次,i.e.build m棵CART
- 這m個CART形成Random Forest
- 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/
3. WIKI_Bagging (Bootstrap_aggregating)
4. WIKI_CART