機器學習演算法6-AdaBoost元演算法
本文來自<machine learning in action>一書的讀書筆記
一. 什麼是元演算法(meta-algorithm)
元演算法就是對其他演算法進行組合的一種方式。也稱為整合演算法(ensemble method),例如bagging方法和boosting
方法。它可以是不同演算法的整合;也可以是同一演算法在不同設定下的整合;還可以是資料集不同部分分配給不同分類
器之後的整合。
二. boosting方法與bagging方法的區別
bagging方法:也稱為自舉匯聚法(bootstrap aggregating)。是從原始資料集中選擇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演算法十分強大,它能夠快速處理其他分類器很難處理的資料集。