提升方法
- 提升方法 AdaBoost 算法
- AdaBoost算法的訓(xùn)練誤差分析
- AdaBoost算法的解釋
- 提升樹
提升(boosting)方法是一種常用的統(tǒng)計(jì)學(xué)習(xí)方法,應(yīng)用廣泛且有效倒淫。在分類問題中庐舟,它通過改變訓(xùn)練樣本的權(quán)重,學(xué)習(xí)多個(gè)分類器伯襟,并將這些分類器進(jìn)行線性組合啃匿,提高分類的性能。
提升方法 AdaBoost 算法
- 提升方法基于這樣一種思想:對(duì)于一個(gè)復(fù)雜任務(wù)來說雷蹂,將多個(gè)專家的判斷進(jìn)行適當(dāng)?shù)木C合所得出的判斷伟端,要比其中任何一個(gè)專家單獨(dú)的判斷好。實(shí)際上匪煌,就是“三個(gè)臭皮匠頂個(gè)諸葛亮”的道理责蝠。
- 對(duì)于分類問題而言,給定一個(gè)訓(xùn)練樣本集萎庭,求比較粗糙的分類規(guī)則(弱分類器)要比求精確的分類規(guī)則(強(qiáng)分類器)容易得多霜医。提升方法就是從弱學(xué)習(xí)算法出發(fā),反復(fù)學(xué)習(xí)驳规,得到一系列弱分類器(又稱為基本分類器)肴敛,然后組合這些弱分類器,構(gòu)成一個(gè)強(qiáng)分類器吗购。大多數(shù)的提升方法都是改變訓(xùn)練數(shù)據(jù)的概率分布(訓(xùn)練數(shù)據(jù)的權(quán)值分布)医男,針對(duì)不同的訓(xùn)練數(shù)據(jù)分布調(diào)用弱學(xué)習(xí)算法學(xué)習(xí)一系列弱分類器。
- 這樣捻勉,對(duì)提升方法來說镀梭,有兩個(gè)問題需要回答:一是在每一輪如何改變訓(xùn)練數(shù)據(jù)的權(quán)值或概率分布;二是如何將弱分類器組合成一個(gè)強(qiáng)分類器贯底。關(guān)于第1個(gè)問題丰辣,AdaBoost的做法是,提高那些被前一輪弱分類器錯(cuò)誤分類樣本的權(quán)值禽捆,而降低那些被正確分類樣本的權(quán)值笙什。這樣一來,那些沒有得到正確分類的數(shù)據(jù)胚想,由于其權(quán)值的加大而受到后一輪的弱分類器的更大關(guān)注琐凭。于是,分類問題被一系列的弱分類器“分而治之”浊服。至于第2個(gè)問題统屈,即弱分類器的組合,AdaBoost采取加權(quán)多數(shù)表決的方法牙躺。具體地愁憔,加大分類誤差率小的弱分類器的權(quán)值,使其在表決中起較大的作用孽拷,減小分類誤差率大的弱分類器的權(quán)值吨掌,使其在表決中起較小的作用。
- 現(xiàn)在敘述 AdaBoost 算法。假設(shè)給定一個(gè)二類分類的訓(xùn)練數(shù)據(jù)集
其中膜宋,每個(gè)樣本點(diǎn)由實(shí)例與標(biāo)記組成窿侈。實(shí)例,標(biāo)記
秋茫,
是實(shí)例空間史简,
是標(biāo)記集合。
輸出:最終分類器
1>>
初始化訓(xùn)練數(shù)據(jù)的權(quán)值分布
2>>
對(duì)
a>>
使用具有權(quán)值分布的訓(xùn)練數(shù)據(jù)集學(xué)習(xí)肛著,得到基本分類器
假設(shè)訓(xùn)練數(shù)據(jù)集具有均勻的權(quán)值分布圆兵,即每個(gè)訓(xùn)練樣本在基本分類器的學(xué)習(xí)中作用相同。
b>>
計(jì)算在訓(xùn)練數(shù)據(jù)集上的分類錯(cuò)誤率
在加權(quán)的訓(xùn)練數(shù)據(jù)集上的分類誤差率是被
誤分類樣本的權(quán)值之和枢贿,由此可以看出數(shù)據(jù)權(quán)值分布
與基本分類器
的分類誤差率的關(guān)系衙傀。
c>>
計(jì)算的系數(shù)
這里的對(duì)數(shù)是自然對(duì)數(shù)。當(dāng)時(shí)萨咕,
统抬,并且
隨著
的減小而增大,所以分類誤差率越小的基本分類器在最終分類器中的作用越大危队。
d>>
更新訓(xùn)練數(shù)據(jù)集的權(quán)值分布
這里是規(guī)范化因子
它使成為一個(gè)概率分布聪建。
也可以寫成
由此可知,被基本分類器誤分類樣本的權(quán)值得以擴(kuò)大茫陆,而被正確分類樣本的權(quán)值卻得以縮小金麸。兩相比較,誤分類樣本的權(quán)值被放大
倍簿盅。
因此挥下,誤分類樣本在下一輪學(xué)習(xí)中起更大的作用。不改變所給的訓(xùn)練數(shù)據(jù)桨醋,而不斷改變訓(xùn)練數(shù)據(jù)權(quán)值的分布棚瘟,使得訓(xùn)練數(shù)據(jù)在基本分類器的學(xué)習(xí)中起不同的作用,這是AdaBoost的一個(gè)特點(diǎn)喜最。
3>>
構(gòu)建基本分類器的線性組合
得到最終分類器
線性組合實(shí)現(xiàn) M 個(gè)基本分類器的加權(quán)表決偎蘸。系數(shù)
表示了基本分類器
的重要性,這里瞬内,所有
之和并不為1迷雪。
的符號(hào)決定實(shí)例
的類,
的絕對(duì)值表示分類的確信度虫蝶。利用基本分類器的線性組合構(gòu)建最終分類器是 AdaBoost 的另一特點(diǎn)章咧。
AdaBoost算法的訓(xùn)練誤差分析
- AdaBoost 最基本的性質(zhì)是它能在學(xué)習(xí)過程中不斷減少訓(xùn)練誤差,即在訓(xùn)練數(shù)據(jù)集上的分類誤差率能真。AdaBoost 算法最終分類器的訓(xùn)練誤差界為
證明:
當(dāng)時(shí)赁严,
调限,因而
。因此可直接推導(dǎo)出前半部分误澳。
現(xiàn)推導(dǎo)后半部分如下
這一定理說明,可以在每一輪選取適當(dāng)?shù)?使得
最小秦躯,從而使訓(xùn)練誤差下降最快忆谓。
- 二類分類問題 AdaBoost 的訓(xùn)練誤差界
這里。
證明:
至于不等式
可先由和
在點(diǎn)
的泰勒展開式推出
進(jìn)而得到踱承。
- 二類分類問題,如果存在
倡缠,對(duì)所有
有
,則
這表明在此條件下 AdaBoost 的訓(xùn)練誤差是以指數(shù)速率下降的茎活。
- AdaBoost 具有
適應(yīng)性
昙沦,即它能適應(yīng)弱分類器各自的訓(xùn)練誤差率。這也是它的名稱(適應(yīng)的提升)的由來载荔,Ada 是Adaptive 的簡(jiǎn)寫盾饮。
AdaBoost算法的解釋
- AdaBoost 算法還有另一個(gè)解釋,即可以認(rèn)為 AdaBoost 算法是模型為加法模型懒熙、損失函數(shù)為指數(shù)函數(shù)丘损、學(xué)習(xí)算法為前向分步算法時(shí)的二類分類學(xué)習(xí)方法。
- 考慮加法模型
其中工扎,為基函數(shù)徘钥,
為基函數(shù)的參數(shù),
為基函數(shù)的系數(shù)肢娘。
在給定訓(xùn)練數(shù)據(jù)及損失函數(shù)的條件下呈础,學(xué)習(xí)加法模型
成為經(jīng)驗(yàn)風(fēng)險(xiǎn)極小化即損失函數(shù)極小化問題:
通常這是一個(gè)復(fù)雜的優(yōu)化問題。前向分步算法
(forward stagewise algorithm)求解這一優(yōu)化問題的想法是:因?yàn)閷W(xué)習(xí)的是加法模型橱健,如果能夠從前向后而钞,每一步只學(xué)習(xí)一個(gè)基函數(shù)及其系數(shù),逐步逼近優(yōu)化目標(biāo)函數(shù)式拘荡,那么就可以簡(jiǎn)化優(yōu)化的復(fù)雜度笨忌。具體地,每步只需優(yōu)化如下?lián)p失函數(shù):
-
前向分步算法
輸入:訓(xùn)練數(shù)據(jù)集官疲,損失函數(shù)
;基函數(shù)集
亮隙;
輸出:加法模型途凫。
1>>
初始化
2>>
對(duì)
a>>
極小化損失函數(shù)
得到參數(shù)
b>>
更新
3>>
得到加法模型
這樣,前向分步算法將同時(shí)求解從到
所有參數(shù)
的優(yōu)化問題簡(jiǎn)化為逐次求解各個(gè)
的優(yōu)化問題果元。
AdaBoost 算法是前向分歩加法算法的特例。這時(shí)犀盟,模型是由基本分類器組成的加法模型而晒,損失函數(shù)是指數(shù)函數(shù)。
提升樹
-
提升樹是以分類樹或回歸樹為基本分類器的提升方法阅畴。提升樹被認(rèn)為是統(tǒng)計(jì)學(xué)習(xí)中性能最好的方法之一倡怎。
- 以決策樹為基函數(shù)的提升方法稱為提升樹(boosting tree)。對(duì)分類問題決策樹是二叉分類樹贱枣,對(duì)回歸問題決策樹是二叉回歸樹监署。
- 提升樹模型可以表示為決策樹的加法模型
其中,表示決策樹纽哥;
為決策樹的參數(shù)钠乏;
為樹的個(gè)數(shù)。
- 提升樹算法采用前向分步算法春塌。首先確定初始提升樹
晓避,第
步的模型是
其中,為當(dāng)前模型只壳,通過經(jīng)驗(yàn)風(fēng)險(xiǎn)極小化確定下一顆決策樹的參數(shù)
够滑,
由于樹的線性組合可以很好地?cái)M合訓(xùn)練數(shù)據(jù),即使數(shù)據(jù)中的輸入與輸出之間的關(guān)系很復(fù)雜也是如此吕世,所以提升樹是一個(gè)高功能的學(xué)習(xí)算法彰触。
- 已知一個(gè)訓(xùn)練數(shù)據(jù)集
命辖,
况毅,
。在決策樹部分已經(jīng)討論了回歸樹問題尔艇。如果將輸入空間
劃分為
個(gè)互不相交的區(qū)域
尔许,并且在每個(gè)區(qū)域上確定輸出的常量
,那么樹可以表示為
其中终娃,參數(shù)表示樹的區(qū)域劃分和各區(qū)域上的常數(shù)味廊。
是回歸樹的復(fù)雜度即葉結(jié)點(diǎn)個(gè)數(shù)。
回歸問題提升樹使用以下前向分步算法:
在前向分步算法的第 m 步棠耕,給定當(dāng)前模型余佛,需求解
得到,即第 m 棵樹的參數(shù)窍荧。
當(dāng)采用平方誤差損失函數(shù)時(shí)辉巡,
其損失變?yōu)?br>
這里,是當(dāng)前模型擬合數(shù)據(jù)的
殘差
(residual)蕊退。所以郊楣,對(duì)回歸問題的提升樹算法來說憔恳,只需簡(jiǎn)單地?cái)M合當(dāng)前模型的殘差。這樣净蚤,算法是相當(dāng)簡(jiǎn)單的钥组。
- 回歸問題的提升樹算法
輸入:訓(xùn)練數(shù)據(jù)集今瀑,
程梦,
;
輸出:提升樹放椰。
1>>
初始化
2>>
對(duì)
a>>
計(jì)算殘差
b>>
擬合殘差學(xué)習(xí)一個(gè)回歸樹,得到
c>>
更新
3>>
得到回歸提升樹
- 提升樹利用加法模型與前向分歩算法實(shí)現(xiàn)學(xué)習(xí)的優(yōu)化過程愉粤。當(dāng)損失函數(shù)是平方損失和指數(shù)損失函數(shù)時(shí)砾医,每一步優(yōu)化是很簡(jiǎn)單的。但對(duì)一般損失函數(shù)而言衣厘,往往每一步優(yōu)化并不那么容易如蚜。針對(duì)這一問題,F(xiàn)reidman提出了
梯度提升(gradient boosting)算法
影暴。這是利用最速下降法的近似方法错邦,其關(guān)鍵是利用損失函數(shù)的負(fù)梯度在當(dāng)前模型的值
作為回歸問題提升樹算法中的殘差的近似值,擬合一個(gè)回歸樹型宙。
-
梯度提升算法
輸入:訓(xùn)練數(shù)據(jù)集,
妆兑,
魂拦;損失函數(shù)
;
輸出:回歸樹搁嗓。
1>>
初始化
估計(jì)使損失函數(shù)極小化的常數(shù)值芯勘,它是只有一個(gè)根結(jié)點(diǎn)的樹。
2>>
對(duì)
a>>
對(duì)腺逛,計(jì)算
計(jì)算損失函數(shù)的負(fù)梯度在當(dāng)前模型的值荷愕,將它作為殘差的估計(jì)。對(duì)于平方損失函數(shù)棍矛,它就是通常所說的殘差安疗;對(duì)于一般損失函數(shù),它就是殘差的近似值够委。
b>>
對(duì)擬合一個(gè)回歸樹茂契,得到第 m 棵樹的葉結(jié)點(diǎn)區(qū)域
,
估計(jì)回歸樹葉結(jié)點(diǎn)區(qū)域慨绳,以擬合殘差的近似值掉冶。
c>>
對(duì)真竖,計(jì)算
利用線性搜索估計(jì)葉結(jié)點(diǎn)區(qū)域的值,使損失函數(shù)極小化厌小。
d>>
更新
3>>
得到回歸樹