第7章 利用AdaBoost元算法提高分類性能

題外話

回家近二十天,一天都沒看書。。。

終于又回來了,終于有更新了。。。

慚愧,把書背回去又背回來。。。

暑假過完一本書的革命任務此時變得更加緊迫。。。


基于單層決策樹的AdaBoost訓練及測試

boosting是通過集中關注被已有分類器錯分的那些數據來獲得新分類器的。

具體不再贅述,書上很詳細,主要就是下面一張圖:


弱分類器組

兩步走:

一是基于單層決策樹的AdaBoost進行訓練得到各弱分類器的α和一個字典。

二是基于已獲得的各弱分類器的α和字典計算類別估計累計值對數據進行分類。

示例:

在病馬數據集上應用AdaBoost來分類,測試錯誤率達到穩定值,迭代次數過多會導致過擬合。

非均衡分類問題

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

前面幾章都是基于錯誤率來衡量分類器任務的成功程度。這種度量掩蓋了樣例如何被錯分的事實,現在引入一些指標:正確率,召回率,ROC曲線,AUC。(具體定義和分析不贅述,書上很詳細)

為了畫出ROC曲線,分類器必須提供每個樣例被判成陽性或陰性的可信程度值,而這些值在最后輸出成離散分類標簽時就被清除了。樸素貝葉斯能夠提供一個可能性,而在Logistic回歸中輸入到Sigmoid函數中的是一個數值,在AdaBoost和SVM中,都會計算出一個數值然后輸入到sign()函數中,所有這些數值都可以用于衡量給定分類器的預測強度。

為了創建ROC曲線,首先要將分類樣例按照其預測強度排序。先從排名最低的樣例開始,所有排名更低的樣例被判為反例,而所有排名更高的樣例被判為正例。然后,將其移到排名次低的樣例中,如果該樣例屬于正例,那么對真陽率進行修改,如果該樣例屬于反例,那么對假陽率進行修改。

PS:書上寫道:上述過程聽起來容易讓人混淆,但閱讀一下代碼就一目了然了。我想說:看了上面只是感覺混淆,看到代碼就是完全看不懂了。。。還是回頭看看周志華的西瓜書吧,還好有個印象知道大概意思,不然真是蒙了。

下圖:對病馬數據集訓練后,有10個弱分類器時AdaBoost算法性能結果


ROC曲線


AUC結果

下圖:對病馬數據集訓練后,有50個弱分類器時AdaBoost算法性能結果


ROC曲線


AUC結果

注:AUC是曲線下面積,它給出的是分類器平均性能,當然它不能完全替代對整條曲線的觀察,一個完美分類器的AUC是1.0,隨機猜測的AUC是0.5。

基于代價函數的分類器決策控制

用于處理非均衡分類的代價方法,有一種叫做 代價敏感的學習。就是分類正確和分類錯誤的代價值是不一樣的。這樣就可以選擇代價最小的分類器。

在AdaBoost中,可以基于代價函數來調整錯誤權重向量D。

在樸素貝葉斯中,可以選擇具有最小期望代價而不是最大概率的類別作為最后的結果。

在SVM中,可以在代價函數中對于不同的類別選擇不同的參數c。

處理非均衡問題的數據抽樣方法

另外一種針對非均衡問題調節分類器的方法,就是對分類器的訓練數據進行改造。這可以通過欠抽樣和過抽樣來實現。即用欠抽樣和過抽樣來調節數據集中的正例和反例數目。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容