一般來說痹愚,Ensemble模型適合于過擬合的模型,包括bagging和boosting.
3.1 Bagging
其中Bagging是單獨(dú)訓(xùn)練每個分類器古劲,然后用平均或者投票的方法組合袱贮,boosting的方法則是分類器之前存在強(qiáng)依賴腮鞍,前一個分類器預(yù)測的解構(gòu)會影響后一個分類器。隨機(jī)森林就是DT的bagging耗跛。
在相同的深度下吆寨,隨機(jī)森林并不會比決策樹好很多,但會讓分類的結(jié)果更平滑
3.2 Boosting
boosting的目的是用迭代的方法提高弱分類器的性能(improving weak classifier)
boosting的架構(gòu)如下:
首先獲取到第一個分類器拧廊,然后用第二個分類器去help,如果與很像监徘,則可能對幫助的有限,我們更希望是的補(bǔ)充吧碾。bagging的時候不同分類器用的dataset的原有數(shù)據(jù)集重采樣得到的凰盔,而在boosting時,不同dataset用到的數(shù)據(jù)集則是原數(shù)據(jù)集然后乘一個weight,這樣總的損失函數(shù)就是
其中代表任意一種衡量預(yù)測值和真實(shí)值的損失函數(shù)倦春。
adaboost的思路就是户敬,假設(shè)有k個弱分類器,先用一組帶權(quán)重的數(shù)據(jù)集訓(xùn)練,然后更改每組訓(xùn)練數(shù)據(jù)的權(quán)重得到睁本,這時新的帶權(quán)重的數(shù)據(jù)集在上的performance會變差尿庐,這時候訓(xùn)練使得新的數(shù)據(jù)集在上的performance變好。所謂表現(xiàn)差呢堰,就是正確率低抄瑟,錯誤率高,用下邊的式子來計(jì)算錯誤率:
其中為符號函數(shù)枉疼,即兩者不相等時取1皮假,否則取0, 則表示歸一化權(quán)重:
這是因?yàn)槊看斡?xùn)練的數(shù)據(jù)集所用的權(quán)重加起來并不為1,因此需要?dú)w一化骂维。這個式子看起來并不太好理解惹资,為什么能表示錯誤率呢?我們舉個簡單的例子航闺,假設(shè)權(quán)重為1褪测,這時候,也就是個樣本潦刃,上式的分母就是侮措,假設(shè)分類器讓個樣本分類錯誤,這時上邊表達(dá)式的分子就是福铅,當(dāng)然就是錯誤率啦萝毛。另一個角度也可以從概率的角度理解,可以表示對于每個樣本預(yù)測錯誤的概率滑黔,然后加權(quán)平均就是第一個分類器的錯誤率啦(這種解釋有點(diǎn)粗糙笆包,僅幫助理解)环揽。
注意,對于二分類庵佣,錯誤率歉胶,多分類的話,下邊的公式也只介紹二類的情況巴粪。接下來把數(shù)據(jù)集從權(quán)重從變到通今,使得
這是因?yàn)椋顮€的二分類器肛根,隨機(jī)猜也有50%的準(zhǔn)確率辫塌,我們要使的性能變差,就讓對權(quán)重的訓(xùn)練數(shù)據(jù)的錯誤率升到0.5即可派哲。
那如何讓錯誤率提升呢臼氨,也就是讓分類效果變差呢?很簡單的方法就是芭届,讓分類器對于分類正確的那些數(shù)據(jù)储矩,我們給它更少的權(quán)重,對于分類錯誤的數(shù)據(jù)則給更大的權(quán)重褂乍。一個形象的例子如下:
假設(shè)剛開始的權(quán)重都是1持隧,其中第1,3逃片,4組訓(xùn)練數(shù)據(jù)分類正確屡拨,那的錯誤率就是0.25,然后呢褥实,對于分類正確的數(shù)據(jù)洁仗,我們把訓(xùn)練集數(shù)據(jù)要乘的權(quán)重調(diào)低到,把分類錯誤的第二組數(shù)據(jù)的權(quán)重調(diào)高到這時候的錯誤率就升高到0.5了性锭。總結(jié)規(guī)律就是:
- 如果能正確分類某個數(shù)據(jù)叫胖,也就是草冈,則把新訓(xùn)練數(shù)據(jù)的權(quán)重減小為原來的權(quán)重除以:
- 如果錯誤分類某個數(shù)據(jù),也就是瓮增,則把新訓(xùn)練數(shù)據(jù)的權(quán)重增大為原來的權(quán)重乘:
那怎么求呢怎棱?
其實(shí)就是把上式中分類錯誤的展開成,分類正確的展開乘然后解方程即可绷跑,經(jīng)過一系列化簡可以得到:
也就是那些分類錯誤的數(shù)據(jù)的權(quán)重的和要等于分類正確的數(shù)據(jù)的權(quán)重的和拳恋,在經(jīng)過推導(dǎo)得到為:
從上邊可以看出,要更新數(shù)據(jù)的權(quán)重時砸捏,對于上一輪迭代分類錯誤的數(shù)據(jù)谬运,我們要增加權(quán)重也就是乘一個數(shù)隙赁,對于上一輪迭代分類正確的數(shù)據(jù),我們要減小權(quán)重也就是除一個數(shù)梆暖,有沒有辦法都用乘法表示呢伞访?只需要把權(quán)重取對數(shù)即可,因?yàn)槿?shù)后原來的函數(shù)仍然保持之前的單調(diào)性轰驳,除此之外厚掷,取完對數(shù),之前的乘除運(yùn)算就可以變成加減運(yùn)算级解。上述取對數(shù)后就變成:
這樣更新的權(quán)重就都可以用乘法來表示
- 如果能正確分類某個數(shù)據(jù)冒黑,權(quán)重減小為
- 如果錯誤分類某個數(shù)據(jù),權(quán)重增加為
用一個式子表示的更新就是
當(dāng)預(yù)測值和真實(shí)值相同時勤哗,否則取1
綜上抡爹,二分類的Adaboost算法就可以概況為:
輸入:
其中, 初始權(quán)重為
- 對于弱分類器
a. 用帶權(quán)重的數(shù)據(jù)訓(xùn)練弱分類器t
b. 計(jì)算第t個弱分類器的分類錯誤率(公式見上)
c. 用分類錯誤率計(jì)算權(quán)重要乘的數(shù)
d. 用更新數(shù)據(jù)集的權(quán)重 - 訓(xùn)練得到一系列的弱分類器
最后的強(qiáng)分類器就為:
這里的就是前邊用錯誤率計(jì)算出的
組合的策略從直觀上解釋就是錯誤率低的分類器權(quán)重更高,反之權(quán)重更低俺陋。
至此adaboost講完