提升方法
- 提升方法 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>>
得到回歸樹