1. 程式人生 > >機器學習演算法6-AdaBoost元演算法

機器學習演算法6-AdaBoost元演算法

本文來自<machine learning in action>一書的讀書筆記

一. 什麼是元演算法(meta-algorithm)

元演算法就是對其他演算法進行組合的一種方式。也稱為整合演算法(ensemble method),例如bagging方法和boosting

法。它可以是不同演算法的整合;也可以是同一演算法在不同設定下的整合;還可以是資料集不同部分分配給不同分類

之後的整合。

二. boosting方法與bagging方法的區別

bagging方法:也稱為自舉匯聚法(bootstrap aggregating)。是從原始資料集中選擇S次後得到S個新資料集的一

技術。這S個數據集的大小和原始資料集的大小一樣。每個資料集都是在原始資料集上隨機選擇S次並替換得到的。

此,新的資料集可能有重複的樣本,原始資料集中的某些樣本也可能不在新的資料集中。S個資料集經訓練最後會

到S個分類器,應用這S個分類器對測試樣本進行分類,得到S個結果,選擇投票結果中最多的類別作為最後的分類

果。

boosting方法:與bagging方法很類似,說使用的多個分類器的型別是一樣的。bagging方法中,不同的分類器是

過序列訓練得到的,每個分類器都根據已訓練出的分類器的效能來進行訓練。boosting是通過集中關注被已有分類

器錯分的那些資料來獲得新的分類器。

另外,boosting分類結果是基於所有分類器的加權求和結果的,而bagging方法中的分類器權重是相等的,

boosting方法的權重並不相等,每個權重代表的是其對應分類器在上一輪迭代中的成功度。boosting方法有很多版

本,AdaBoost是其中一個比較優秀的版本。

三. AdaBoosting演算法(Adaptive boosting)

自適應boosting,對訓練資料中的每一個樣本賦予一個權重,這些權重構成了向量D。一開始,這些權重值被初

始化為相等值。首先,在訓練資料上訓練出一個弱分類器並計算該分類器的錯誤率,然後在同一資料集上再次訓練弱

分類器。在第二次訓練分類器時,將會重新調整每個樣本的權重,其中第一次分對的樣本的權重將會降低,而第一次

分錯的樣本權重將會提高。為了從所有的弱分類器中得到最終的分類結果,AdaBoost為每個分類器都分配了一個權重

值為alpha,這些alpha值是基於每個弱分類器的錯誤率進行計算的。其中,錯誤率為:

r = 未正確分類的樣本數目 / 所有樣本數目

而alpha的計算公式為:


計算出alpha值後,可以對權重向量D進行更新,更新規則為:

樣本被正確分類,那麼權重值更改為:


樣本未被正確分類,那麼權重值更改為:


AdaBoosting會不斷重複訓練和調整上述權重的過程,直至訓練錯誤率為0或者弱分類器的數目達到使用者指定值為止。

四.非均衡分類

監督學習中,使用錯誤率(測試樣本中錯分的樣例比例)來衡量分類器任務的成功程度,往往掩蓋了樣例如何被

錯分的實。而通常的分類問題上,往往存在非均衡分類,即做出某種決策導致的代價並不一樣。因此,我們還可以

採用以下標來衡量分類器的效能。

1.混淆矩陣(confusion matrix)可以幫助人們更好地瞭解分類中的錯誤,而錯誤率往往掩蓋了樣例如何被錯分的

實。

2.幾個概念:

若一個正例被判為正例,則認為產生了一個真正例(True Positive, TP, 也成真陽);如果一個反例正

地被判為反例,則認為產生了一個真反例(True Negative, TN, 也成為真陰);另外兩個分別被稱為偽反例(False 

Negative, 也成為假陰),和偽正例(False Positive, FP, 也成為假陽)。

因此,在分類中,當某個類別的重要性高於其他類別時,我們可以利用上述定義來定義出多個比錯誤率更好的新

指標。(1)正確率(Precision):它等於TP/(TP+FP),給出的是預測為正例的樣本中的真正正例的比例。(2)召回率

(Recall),它等於TP/(TP+FN),給出的是預測為正例的真實正例佔所有真實正例的比例。

3.ROC曲線(ROC curve):

ROC曲線代表接受者操作特徵(receiver operating characteristic)。其橫軸偽正例的比例(FP/(FP+TN))。

而縱軸是真正例的比例(TP/(TP+FN))。ROC曲線給出的是當 閾值變化時假陽例和真陰率的變化情況。對不同ROC曲

線進行比較的一個指標是曲線下的面積(Area Under the Curse:AUC)。AUC給出的分類器的平均效能值,當然並不能

完全代替整條曲線的觀察。一個完美分類器的AUC為1.0,而隨機才測的AUC為0.5。

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

即給出做出任意決策的代價表,通過計算總代價最小來選擇分類器型別。

在分類演算法中,很多可以引入代價資訊。在AdaBoost中,可以基於代價函式來調整錯誤權重向量D。在樸素貝葉

斯中,可以選擇具有最小期望代價而不是最大概率的類別作為最後的結果。在SVM中,可以在代價函式中對於不同的

類別選擇不同的引數C。

5.過抽樣(unsersampling)與欠抽樣(oversampling)

為了針對非均衡問題來調節分類器,可以對分類器的訓練資料進行改造。因此,可以通過欠抽樣和過抽樣實現。

過抽樣意味複製樣例,而欠抽樣意味著刪除樣例。通常的一種策略就是使用反例類別的欠抽樣與正例類別的過抽樣

相結合的方法。

另外,要對正例樣例進行過抽樣,我們可以複製已有樣例或者加入與已知樣例相似的點。一種是加入已有資料點

的插值點,但是這種做法會導致過擬合問題

五. 總結

本章介紹了boosting方法中最為流行的一個稱為AdaBoosting的演算法。AdaBoosting以弱學習器作為基礎分類器,

並且輸入資料,使其通過權重向量進行加權。在第一次迭代當中,所有資料都等權重。但是在後續的迭代中,前次迭

代中分錯的資料的權重會增大。這種針對錯誤的調節能力正是AdaBoost的長處。

以單層決策樹作為弱學習器構建了AdaBoost分類器。實際上,AdaBoosting函式可以應用於任意分類器,只要該

分類器能夠處理加權資料即可。AdaBoost演算法十分強大,它能夠快速處理其他分類器很難處理的資料集。