文章目錄
分類是資料採礦中的一個重要的應用領域,是被廣泛研究、誕生了大量各式各樣演算法的領域,如赫赫有名的k-近鄰,SVM,決策樹,神經網路,羅吉斯迴歸等等。
1 What?在90年的時候,Hansen和Salamon在PAMI上報告了一個現象[1],它們發現,對使用BackPropagation訓練的神經網路(Nueral Networks),組合起來的BP-NN無論是跟單個的BP-NN的平均表現,還是最佳表現,錯誤率都要低。如:當噪音變強後,組合起來的BP-NN相比單個的錯誤率更低。這是為什麼呢?這裡打一個比方,單個的學習器,我們把它類比為一個獨裁者。而組合起來的學習器(Ensemble methods),我們把它類比為一個決策委員會。前者由一個人來根據經驗來決策一個事件(對於迴歸問題,我們類比為預測一個數字)。後者有一系列的委員來決定。我們假設二者享有的經驗(訓練資料)是相同的。前者的個人能力可能比後者中的任意一個委員都要強大,但它也有它的缺陷。然而,對於後者,委員的各自能力或許不是很突出,但是各有所長,各有所短,對於一個事件,大家按照各自的優勢做出判斷,最後投票(可能是加權的投票)做出決定(對於迴歸問題,我們類比為對各自的預測值做平均,同樣,可能是加權的平均)。從人類社會的發展來看,後者更像一個民主國家,前者是一個獨裁的國家。無疑,後者更加有優勢,尤其是當經驗中有很多不靠譜的地方,或者是記憶不清的地方的時候。對這個決策委員會來說,我們更希望其中的委員要各有所長,優劣互補,這樣做出的決定更靠譜,如果委員都非常相似的話,這個委員會的價值就會大大地降低。同樣,我們或許還希望,根據各自的表現,對委員在投票或者預測中的說話分量產生影響,這樣,其中的精英會產生更大的影響。委員會就相當於ensemble methods。單個的委員就是一個weak learner。我們在ensemble中,常常使用decision stump[3]作為weak learner。decision stump是一個只有一層的決策樹,聽起來是相當地弱,但是組合起來就變得不那麼弱了。2 How?Ensemble Methods大致包括三種架構——Bagging,Boosting,Stacking。它們通常都比單獨的學習模型表現要好,它們也是無論對分類問題還是數值預測都是通用的模型。這三種模型在最近的一二十年中有了長足的發展,它們的效果也驚人地好。人們常常驚訝於為什麼它們的表現這麼好,在驚訝中又發現了新的方法表現更好。拿我們上面的例子來說,對於一個委員會,對於一些“打醬油的”委員,會產生噪音的委員,按人類的經驗很難說這樣的委員會作出好的決策或數值預測。然而,對於Bagging來說,添加隨機變數的學習器反而能夠提高整體的效果。這三種方法中,Boosting是表現最好的模型,它與有著廣泛研究基礎的加性模型(addictive
models)的統計技術有著相近的關係。這些模型有一個共同的缺點就是非常難以分析,它們組合了大量的甚至上百個獨立的模型,你不清楚它做出的決定是哪些模型貢獻的。下面我們介紹Boosting。2.1 Boosting03年Godel獎獲得者R.Schapire提出了第一個實用的Boosting演算法——AdaBoost[3]。Boost演算法與我們上面提到的委員會例子不太相同。而Bagging類似於委員會的例子,大家做出決定後來進行(加權)投票。Boost是一個迭代的演算法。在Weka中,它對應的類為AdaBoostM1。對於模型的建立演算法如下:1)對於每一個執行個體賦予相同的權重(1/n,確保權值加起來為1)。2)對所有加權的執行個體運行basic learner的演算法,將這個模型儲存下來。3)計算這個模型在加權的訓練集上的錯誤率e。如果e=0或者e>=0.5,停止產生模型。4)對於資料集中的每一個執行個體,如果它被這個模型正確分類,我們對它的權值:weight(i) = weight(i) - log(e/(1-e))。5)normalize所有執行個體的權值,使它們的和為1.6)返回2)這裡我們看到,對於正確分類的執行個體,它們的權值減小了,對於錯誤分類的執行個體,它們的權值增加了。這樣做的結果是後面的模型將重點關註上一個模型錯誤分類的執行個體。我們這裡假設基本的學習器支援加權值的執行個體。如若不然,我們可以通過加權值的resampling(weka中的Instances類的resampleWithWeights()方法可以做到)來從加權的執行個體集中產生未加權的執行個體集。我們以與執行個體成比例的機率將各個執行個體添加到新的集合中。這樣,高權重的執行個體將更可能重複地出現,低權重的執行個體很可能永遠不會被選中。當新的集合大小增長到與原集合一樣時,停止添加。這個就成為下一次學習器的訓練集。使用加權的resampling有一個缺陷就是低權重的執行個體幾乎不會被選擇到新的集合中去,在學習架構被應用前造成資訊的丟失。其實,這也可以說是一種優勢。當演算法產生一個錯誤率大於0.5的學習器時,如果加權的資料直接被使用的話,boosting就結束了。當使用resampling時,我們可以把這個resampled資料集丟棄,使用一個不同的隨機種子來重新resampling。實驗證明,使用resampling能夠比原來的方法迭代更多回合。研究者在對AdaBoost做研究時,發現了一個有趣的現象,當組合起來的分類器在訓練資料上的錯誤率已經降為0後繼續迭代,可以降低它在新資料上的錯誤率。這乍看起來有違奧卡姆剃刀定律。奧卡姆剃刀定律說,對於兩個對經驗資料表現一樣好的假設,就選擇簡單的那個。這個矛盾可以用分類器對它的預測的信賴度來解釋。我們通過這樣的方法來度量信賴度——對於真實類別預測的信賴度和除了真實類別最有可能預測的類別的信賴度間的差別,我們稱之為margin。margin越大,分類器預測真實類別的信心越大。實驗證明,boosting可以在訓練資料上的錯誤率跌至0時以後很長時間內可以提升margin。 LogitBoost[5]也是一個Boost演算法,與AdaBoost最小化的指數級的loss function[6]:相比,LogitBoost最小化的是一個對數級的Logistic Loss[5]:LogitBoost對基本的learner的錯誤分類沒有AdaBoost那麼敏感。所以,當訓練資料的類標籤裡有較多噪音時,LogitBoost更加合適。References:[1]Hansen, L.K., Salamon,
P,
Neural Networks Ensembles,PAMI(12), No. 10, October 1990, pp. 993-1001. [2]Wikipedia-Decison Stump,http://en.wikipedia.org/wiki/Decision_stump[3]Freund; Schapire (1999). "A Short Introduction to Boosting: introduction
to Adaboost[4]Jerome Friedman, Trevor Hastie and Robert Tibshirani. Additive logistic regression: a statistical view of
boosting. Annals of Statistics 28(2), 2000. 337-407.[5]Wikipedia-LogitBoost,http://en.wikipedia.org/wiki/LogitBoost[7]Wikipedia-AdaBoost,http://en.wikipedia.org/wiki/AdaBoost[8]Lan H. Witten,Eibe Frank,Mark A. Hall
Data Mining:Practical Machine Learning Tools and Techniques