天天看點

機器學習算法面試—口述(2):Adaboost算法及常見問題

這個系列是為了應對找工作面試時面試官問的算法問題,是以隻是也謝算法的簡要介紹,後期會陸續補充關于此算法的常見面試的問題!

AdaBoost是一種疊代算法,針對同一訓練集訓練處不同的分類器(弱分類器),将前面訓練的分類器以某種方式組合起來,組合成一個強分類器。算法是通過改變資料的分布來實作的。每次訓練分類器是參考

1、某樣本在上個分類器的分類過程中是否被正确分類

2、上個分類器的準确率

AdaBoost是Adaptive Boosting的縮寫,Adaptive在于:前一個分類器分錯的樣本會得到增強,加強後的全體樣本會用于下一次分類器的訓練,每一輪加入一個新的弱分類器,知道達到某個預定的足夠小的的錯誤率或達到預定的最大疊代次數。

具體點說,AdaBoost的步驟如下:

1、初始化訓練資料的權值分布。開始時,權重都賦予一樣;

2、訓練弱分類器。如果某個樣本正确分類,那麼其在下一次的分類過程中的權值會被降低,反之則會升高

3、組合成強分類器。增大分類效果好的分類器占的權重,降低分類效果差的分類器占的權重。

(當然,上面的都是一些文字性的東西,比較抽象,比如增大權重到底是怎麼做的,這就需要記憶一些公式了)

詳細步驟:

1、訓練集:(x1, y1), (x2, y2),......, (xn, yn);剛開始每個樣本都賦予一個等值的權重1/n;

2、使用一些特征,得到一個基本分類器,計算其分類的錯誤率:e = 錯誤分類 / 樣本數,根據得到的錯誤率可以計算這個分類器在最終的分類中占的權重:a = 1/2 * ln((1-e) / e);

3、更新資料的權值分布(剛開始時都為1 / n);

機器學習算法面試—口述(2):Adaboost算法及常見問題

由(2)知e < 0.5,則a > 0,如果錯誤分類指數a次方大于1,則下次訓練時樣本的權重會增大,正确分類樣本的權值下次會變小。

之後再組合得到的各個弱分類器

機器學習算法面試—口述(2):Adaboost算法及常見問題

從這個式子也可以看出前面(3)中說的增大分類效果好的分類器占的權重,降低分類效果差的分類器占的權重。錯誤率e越小,a越大,也即在整個分類中占的權重越大。

其實AdaBoost的主要問題在于如何得到各個弱分類器,這就需要對問題有一個充分的了解,弱分類器的獲得可以是一些特征的組合得到的結果,也可以是單個特征的結果!一般開始做的時候是将一些強特征或其組合來獲得分類器(比如區分人種用膚色這個強特征)。

繼續閱讀