统计学习方法——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,可以處理混合預測 ? ? ? ? ?缺點:不穩定
? ???example: 對于下面的數據,希望分割成紅色和綠色兩個類,原本數據生成是這樣的: Red class: x1^2+x2^2>=4.6 Green class: otherwise
經過不斷分割可以得到最后的分類樹:
- 那么怎么分割才是最好的呢?即怎樣將輸入空間分割成矩形是最佳策略呢?這里一般采用三中評價標準策略:
分裂時,找到使不純度下降最快的分裂變量和分裂點。
- 從結果可以看出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.
下圖是Bagging的選擇策略,每次從N個數據中采樣n次得到n個數據的一個bag,總共選擇B次得到B個bags,也就是B個bootstrap samples.- 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:
1.?http://cos.name/2011/12/stories-about-statistical-learning/
2.?WIKI_Boosting
3.?WIKI_Bagging?(Bootstrap_aggregating)
4.?WIKI_CART
from:?http://blog.csdn.net/abcjennifer/article/details/8164315
總結
以上是生活随笔為你收集整理的统计学习方法——CART, Bagging, Random Forest, Boosting的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聚类算法K-Means, K-Medoi
- 下一篇: 空间金字塔Spatial Pyramid