&&機器學習實戰&&AdaBoost算法

1.概述

當做重要決定時,大家可能都會考慮吸取多個專家而不只是一個人的意見。機器學習也是。這就是元算法(meta algorithm)背後的思路。元算法是對其他算法進行組合的一種方式。AdaBoost是目前最流行的元算法。

單層決策樹(decision stump)分類器之上,應用AdaBoost分類器。

2.基於數據集多重抽樣的分類器

 前面介紹的五種不同的分類算法各有優缺點,將不同的分類器組合起來,這種結果稱爲集成方法或者元算法。使用集成方法時會有多種形式:可以是不同算法的集成,也可以是同一算法在不同設置下的集成,還可以是數據集不同部分分配給不同分類器之後的集成。

adaboost:

優點:泛化錯誤率低,易編碼,可以應用在大部分分類器上,無參數調整。

缺點:對離羣點敏感。

適用數據類型:數值型和標稱型數據。

3.bagging:基於數據隨機重抽樣的分類器構建方法

            自舉匯聚法(bootstrap aggregating),也稱bagging方法,是在原始數據集選擇S次後得到S個新數據集的一種技術。新數據集和原數據集的大小相等。每個數據集都是通過在原始數據集中隨機選擇一個樣本來進行替換而得到的。這裏的替換就意味着可以多次地選擇同一樣本。這一性質就允許新數據集中可以有重複的值,而原始數據集的某些值在新集合中則不再出現。

            在S個數據集建好之後,將某個學習算法分別作用於每個數據集就得到了S個分類器。當我們要對新數據進行分類時,就可以應用這S個分類器進行分類。於此同時,選擇分類器投票結果中最多的類別作爲最後的分類結果。

            當然,還有一些更先進的bagging方法,比如隨機森林(random forest)。

4.boosting

            boosting是一種與bagging很類似的技術。不論是boosting還是bagging,所使用的多個分類器的類型都是一致的。但是在前者當中,不同的分類器是通過串行訓練而獲得的,每個分類器都根據已訓練出的分類器的性能來進行訓練。boosting是通過集中關注被已有分類器錯分的那些數據來獲得新的分類器。

           並且,boosting分類的結果是基於所有分類器的加權求和結果的,因此boosting與bagging不太一樣。bagging中的分類器權重是相等的,而boosting中的分類器權重並不相等,每個權重代表的是其對應分類器在上一輪迭代中的成功度。

           boosting方法有多個版本,本章關注其中最流行版本adaboost。

5.訓練算法:基於錯誤提升分類器的性能

        能否使用弱分類器和多個實例來構建一個強分類器?

這是一個有趣的理論問題。這裏的”弱“意味着分類器的性能比隨機猜測要略好,但是也不會好太多。這就是說,在二分類情況下弱分類器的錯誤率會高於50%,而”強“分類器的錯誤率將會低很多。AdaBoost算法即脫胎於上述理論問題。

 

6.基於單層決策樹構建弱分類器

單層決策樹(decision stump,也稱決策樹樁)是一種簡單的決策樹,僅基於單個特徵來做決策,由於這棵樹只有一次分裂過程,因此它實際上就是一個樹樁。

通過使用多顆單層決策樹,我們就可以構建出一個能夠對該數據集完全正確分類的分類器。

此時,單層決策樹即所謂的弱分類器。

7.完整的AdaBoost算法的實現

完整僞代碼:

8.adaboost 和 svm

9.非均衡分類問題

在此類非均衡分類問題下,對不同分類器的性能進行可視化處理。

其他分類性能度量指標:錯誤率,正確率,召回率,ROC曲線。

錯誤率:指在所有測試樣例中錯分的樣例比例。實際上,這樣的度量錯誤掩蓋了樣例如何被分錯的事實。此時,混淆矩陣可以幫助人們更好地瞭解分類中的錯誤。

 

接下來,我們只考慮一個二類問題的混淆矩陣:

             TP:將一個正例判爲正例,真陽;

             FP:將一個反例判爲正例,假陽;

             TN:將一個反例判爲反例,真陰;

             FN:將一個正例判爲反例,假陰。

  正確率(precision):預測爲正例的樣本中的真正正例的比例,TP/(TP+NP)。

  召回率(recall):預測爲正例的真實正例佔所有真實正例的比例,TP/(TP+FN)。

  在召回率很大的分類器中,真正判錯的正例的數目並不多。構建一個同時使正確率和召回率最大的分類器是具有挑戰性的。

  ROC曲線(receiver operating characteristic curve):接收者操作特徵。

 

           在理想的情況下,最佳的分類器應該儘可能的處於左上角,這就意味着分類器在假陽率很低的同時獲得了很高的真陽率。例如在垃圾郵件的過濾中,這就相當於過濾了所有的垃圾郵件,但沒有將任何合法郵件誤認爲垃圾郵件而放入垃圾郵件的文件夾中。

          對不同的ROC曲線進行比較的一個指標是曲線下的面積(AREA UNSER THE CURVE,AUC)。AUC給出的是分類器的平均性能值,當然他不能完全代替對整條曲線的觀察。

  處理分均勻分類代價問題的方法:

1.調節分類器的閾值

2.代價敏感的學習(cost-sensitive learning)

3.對分類器的訓練數據進行改造。這可以通過欠抽樣或者過抽樣來實現。

過抽樣意味着複製樣例,而欠抽樣意味着刪除樣例。

 

10.小結

      多個分類器組合可能會進一步凸顯出單分類器的不足,比如過擬合問題。如果分類器之間差別顯著,那麼多個分類器組合就

可能會緩解這一問題。分類器之間的差別可以使算法本身或者是應用於算法上的數據的不同。

      AdaBoost以弱學習器作爲基分類器,並且輸入數據,使其通過權重向量進行加權。在第一次迭代當中,所有數據都等權重。但是在後續的迭代當中,前次迭代中分錯的數據的權重會增大。這種針對錯誤的調節能力正是AdaBoost的長處。

     實際上,AdaBoost函數可以應用於任意分類器,只要該分類器能夠處理加權數據即可。AdaBoost是十分強大,它能夠快速處理其他分類器很難處理的數據集。

    非均衡分類問題是指在分類器訓練時正例數目和反例數目不相等(相差很大)。該問題在錯分正例和反例的代價不同時也存在。文章介紹了通過過抽樣和欠抽樣方法來調節數據集中的正例和反例數目。另一種可能更好的非均衡問題的處理方法,就是在訓練分類器時將錯誤的代價考慮在內。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章