冒泡~七月的尾巴 小李又上線啦!
今天敘述一個(gè)實(shí)用的算法-adaboost算法,在進(jìn)入正題之前先敘述一下提升算法的一些基本思想和一些相關(guān)的概念乳讥。
提升算法
提升算法也稱為boosting算法柱查,它是將弱學(xué)習(xí)算法提升為強(qiáng)學(xué)習(xí)算法的一類算法,可用來提升弱分類器的準(zhǔn)確度云石。
接下來先看一下boosting的一個(gè)運(yùn)算過程。如下圖:
那么這里需要補(bǔ)充一下弱學(xué)習(xí)和強(qiáng)學(xué)習(xí)的概念唉工。
強(qiáng)學(xué)習(xí):在概率近似正確(Probably Approxi mately Correct/PAC)學(xué)習(xí)的框架中,一個(gè)概念或者類汹忠,如果存在一個(gè)多項(xiàng)式的學(xué)習(xí)算法能夠?qū)W習(xí)它淋硝,且正確率很高,稱為強(qiáng)可學(xué)習(xí)宽菜。
弱學(xué)習(xí):一個(gè)概念或者類谣膳,如果存在一個(gè)多項(xiàng)式的學(xué)習(xí)算法能夠?qū)W習(xí)它,且它的學(xué)習(xí)正確率僅僅比隨機(jī)猜測略好铅乡,則為弱可學(xué)習(xí)继谚。
推導(dǎo):在PAC學(xué)習(xí)框架下,一個(gè)概念是強(qiáng)可學(xué)習(xí)的充分必要條件是這個(gè)概念是弱可學(xué)習(xí)隆判。
故提升方法的關(guān)鍵在于如何將弱學(xué)習(xí)提升轉(zhuǎn)化為強(qiáng)學(xué)習(xí)犬庇?
那么通常情況下我們會(huì)想到弱學(xué)習(xí)互補(bǔ)從而來提升準(zhǔn)確度,這邊就會(huì)有兩個(gè)問題:①怎么去獲得不同的弱分類器侨嘀?②怎么去組合這些弱分類器臭挽?
那么通常對(duì)于問題一,我們可以使用不同的弱學(xué)習(xí)算法或者不同的訓(xùn)練集來解決咬腕。對(duì)于問題二欢峰,則可采用多專家組合【并行結(jié)構(gòu),所有的弱分類器都給出各自的預(yù)測結(jié)果,通過組合器把預(yù)測結(jié)果轉(zhuǎn)換為最終結(jié)果】纽帖,比如投票模型等宠漩,或者采用多級(jí)組合【串行結(jié)構(gòu),其中下一個(gè)分類器只在前一個(gè)分類器預(yù)測不夠準(zhǔn)的實(shí)例上進(jìn)行訓(xùn)練或檢測】懊直,比如級(jí)聯(lián)算法扒吁。從圖中可以看出室囊,Boosting算法的工作機(jī)制是首先用初始權(quán)重訓(xùn)練出一個(gè)弱學(xué)習(xí)器1雕崩,根據(jù)弱學(xué)習(xí)的學(xué)習(xí)誤差率表現(xiàn)來更新訓(xùn)練樣本的權(quán)重,使得之前弱學(xué)習(xí)器1學(xué)習(xí)誤差率高的訓(xùn)練樣本點(diǎn)的權(quán)重變高融撞,使得這些誤差率高的點(diǎn)在后面的弱學(xué)習(xí)器2中得到更多的重視盼铁。然后基于調(diào)整權(quán)重后的訓(xùn)練集來訓(xùn)練弱學(xué)習(xí)器2.,如此重復(fù)進(jìn)行尝偎,直到弱學(xué)習(xí)器數(shù)達(dá)到事先指定的數(shù)目T饶火,最終將這T個(gè)弱學(xué)習(xí)器通過集合策略進(jìn)行整合,得到最終的強(qiáng)學(xué)習(xí)器致扯。
【這實(shí)際上是一個(gè)不斷改變權(quán)重訓(xùn)練的迭代過程】
進(jìn)入正題adaboost
Adaboost
adaboost(adaptive Boosting)算法實(shí)際上就是boosting算法的一個(gè)升級(jí)版肤寝。該算法是Freund和Schapire于1995年對(duì)Boosting算法的改進(jìn)得到的,其算法原理是通過調(diào)整樣本權(quán)重和弱分類器權(quán)值急前,從訓(xùn)練出的弱分類器中篩選出權(quán)值系數(shù)最小的弱分類器組合成一個(gè)最終強(qiáng)分類器醒陆。與Boosting算法不同的是,它是使用整個(gè)訓(xùn)練集來訓(xùn)練弱學(xué)習(xí)機(jī)裆针,其中訓(xùn)練樣本在每次迭代的過程中都會(huì)重新被賦予一個(gè)權(quán)重,在上一個(gè)弱學(xué)習(xí)機(jī)錯(cuò)誤的基礎(chǔ)上進(jìn)行學(xué)習(xí)來構(gòu)建一個(gè)更加強(qiáng)大的分類器寺晌。通過下圖來了解AdaBoost算法的工作過程世吨。
訓(xùn)練樣本由兩個(gè)不同的種類(藍(lán)球和紅球)所組成械荷。在第一幅圖中所有的樣本都被賦予了相同的權(quán)重密强,通過訓(xùn)練集的訓(xùn)練正歼,我們可以獲取到一個(gè)單層的決策樹(代表圖中的虛線)乒验,它通過最小化代價(jià)函數(shù)(樣本不純度)來劃分兩類不同的樣本员辩,其中有兩個(gè)籃球和一個(gè)紅球被錯(cuò)誤的劃分轧膘。在第二次訓(xùn)練的過程中脚仔,兩被錯(cuò)誤劃分個(gè)籃球和一個(gè)被錯(cuò)誤劃分的紅色被賦予更大的權(quán)重(球變得更大)纵寝,同時(shí)還可以降低正確劃分樣本的權(quán)重攒岛,在本次訓(xùn)練的過程中更加專注于權(quán)重大的樣本赖临,也就是劃分錯(cuò)誤的樣本。通過重復(fù)這個(gè)過程灾锯,最后直至樣本劃分正確兢榨。然后,得到一個(gè)弱學(xué)習(xí)機(jī)的組合,通過多數(shù)投票的方式來決定最后的預(yù)測結(jié)果吵聪。
具體步驟
1凌那、以相同的初始值來初始化樣本的權(quán)重ω,并且樣本權(quán)重之和為1吟逝。
2帽蝶、在m輪boosting操作中,對(duì)第j輪做如下操作
3块攒、訓(xùn)練一個(gè)加權(quán)的弱學(xué)習(xí)機(jī):C(j)=train(X,y,ω)
4嘲碱、預(yù)測樣本類標(biāo)pred_y=predict(C(j),X)
5、計(jì)算權(quán)重錯(cuò)誤率ε=ω*(pred_y==y)
6局蚀、計(jì)算相關(guān)系數(shù)
7麦锯、更新權(quán)重8、歸一化權(quán)重琅绅,并保證權(quán)重之和為19扶欣、完成最終預(yù)測
具體例子:詳見AdaBoost算法詳細(xì)介紹
這邊插播一個(gè)在視頻上看到的例子:
其思想步驟:
代碼可參考: 機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之AdaBoost算法
——————————————
寫累了....感覺還有好多沒有寫全....
下次補(bǔ)上吧 周末愉快
七月輸出完成 八月再會(huì)!