小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

360doc個(gè)人圖書(shū)館

 Clay*more 2020-06-24
AdaBoost基本原理與算法描述

Y學(xué)習(xí)使我快樂(lè)V 2018-08-21 19:59:33  11303  收藏 28
分類(lèi)專(zhuān)欄: 機(jī)器學(xué)習(xí)
版權(quán)
一. 前言
最近在看集成學(xué)習(xí)方法,前面已經(jīng)對(duì)XGBoost的原理與簡(jiǎn)單實(shí)踐做了介紹,這次對(duì)AdaBoost算法做個(gè)學(xué)習(xí)筆記,來(lái)鞏固自己所學(xué)的知識(shí),同時(shí)也希望對(duì)需要幫助的人有所幫助。

關(guān)于集成學(xué)習(xí)主要有兩大分支,一種是bagging方法,一種是boosting方法。

bagging方法的弱學(xué)習(xí)器之間沒(méi)有依賴(lài)關(guān)系,各個(gè)學(xué)習(xí)器可以并行生成,最終通過(guò)某種策略進(jìn)行集成得到強(qiáng)學(xué)習(xí)器(比如回歸問(wèn)題用所有弱學(xué)習(xí)器輸出值的平均值作為預(yù)測(cè)值;分類(lèi)問(wèn)題使用投票法,即少數(shù)服從多數(shù)的方法來(lái)得到最終的預(yù)測(cè)值;也可以使用學(xué)習(xí)法,即每個(gè)弱學(xué)習(xí)器的輸出值作為訓(xùn)練數(shù)據(jù)來(lái)重新學(xué)習(xí)一個(gè)學(xué)習(xí)器,而該學(xué)習(xí)器的輸出值作為最終的預(yù)測(cè)值,代表方法有stacking方法,感興趣的同學(xué)可以自己去了解一下)。bagging方法采用自助采樣法,即在總樣本中隨機(jī)的選取m個(gè)樣本點(diǎn)作為樣本m1,然后放回,繼續(xù)隨機(jī)選取m個(gè)樣本點(diǎn)作為樣本m2,如此循環(huán)下去直到選取的樣本個(gè)數(shù)達(dá)到預(yù)設(shè)定值n,對(duì)這n個(gè)樣本進(jìn)行學(xué)習(xí),生成n個(gè)弱學(xué)習(xí)器。隨機(jī)森林算法就是bagging方法的代表算法。

boosting方法的若學(xué)習(xí)器之間有強(qiáng)的依賴(lài)關(guān)系,各個(gè)弱學(xué)習(xí)器之間串行生成。它的工作機(jī)制是初始給每個(gè)樣本賦予一個(gè)權(quán)重值(初始權(quán)重值一般是1/m,m表示有m個(gè)樣本),然后訓(xùn)練第一個(gè)弱學(xué)習(xí)器,根據(jù)該弱學(xué)習(xí)器的學(xué)習(xí)誤差率來(lái)更新權(quán)重值,使得該學(xué)習(xí)器中的誤差率高的訓(xùn)練樣本點(diǎn)(所有的訓(xùn)練樣本點(diǎn))的權(quán)重值變高,權(quán)重值高的訓(xùn)練樣本點(diǎn)在后面的弱學(xué)習(xí)器中會(huì)得到更多的重視,以此方法來(lái)依次學(xué)習(xí)各個(gè)弱學(xué)習(xí)器,直到弱學(xué)習(xí)器的數(shù)量達(dá)到預(yù)先指定的值為止,最后通過(guò)某種策略將這些弱學(xué)習(xí)器進(jìn)行整合,得到最終的強(qiáng)學(xué)習(xí)器。boosting方法的代表算法有AdaBoost和boosting tree算法,而AdaBoost算法就是本文接下來(lái)要介紹的算法。

在介紹AdaBoost之前,要先搞清楚boosting系列算法主要解決的一些問(wèn)題,如下:

弱學(xué)習(xí)器的權(quán)重系數(shù)如何計(jì)算?
樣本點(diǎn)的權(quán)重系數(shù)如何更新?
學(xué)習(xí)的誤差率如何計(jì)算?
最后使用的結(jié)合策略是什么?
下面我們就來(lái)看看AdaBoost是如何解決以上問(wèn)題的。

二. AdaBoost基本原理介紹
2.1 AdaBoost分類(lèi)問(wèn)題
以二分類(lèi)為例,假設(shè)給定一個(gè)二類(lèi)分類(lèi)的訓(xùn)練數(shù)據(jù)集,其中表示樣本點(diǎn),表示樣本對(duì)應(yīng)的類(lèi)別,其可取值為{-1,1}。AdaBoost算法利用如下的算法,從訓(xùn)練數(shù)據(jù)中串行的學(xué)習(xí)一系列的弱學(xué)習(xí)器,并將這些弱學(xué)習(xí)器線性組合為一個(gè)強(qiáng)學(xué)習(xí)器。AdaBoost算法描述如下:

輸入:訓(xùn)練數(shù)據(jù)集

輸出:最終的強(qiáng)分類(lèi)器G(x)

(1) 初始化訓(xùn)練數(shù)據(jù)的權(quán)重分布值:( 表示第m個(gè)弱學(xué)習(xí)器的樣本點(diǎn)的權(quán)值)


(2) 對(duì)M個(gè)弱學(xué)習(xí)器,m=1,2,...,M:

(a)使用具有權(quán)值分布的訓(xùn)練數(shù)據(jù)集進(jìn)行學(xué)習(xí),得到基本分類(lèi)器  ,其輸出值為{-1,1};

(b)計(jì)算弱分類(lèi)器在訓(xùn)練數(shù)據(jù)集上的分類(lèi)誤差率,其值越小的基分類(lèi)器在最終分類(lèi)器中的作用越大。


                        其中,取值為0或1,取0表示分類(lèi)正確,取1表示分類(lèi)錯(cuò)誤。

(c)計(jì)算弱分類(lèi)器的權(quán)重系數(shù):(這里的對(duì)數(shù)是自然對(duì)數(shù))


一般情況下的取值應(yīng)該小于0.5,因?yàn)槿舨贿M(jìn)行學(xué)習(xí)隨機(jī)分類(lèi)的話,由于是二分類(lèi)錯(cuò)誤率等于0.5,當(dāng)進(jìn)行學(xué)習(xí)的時(shí)候,錯(cuò)誤率應(yīng)該略低于0.5。當(dāng)減小的時(shí)候的值增大,而我們希望得到的是分類(lèi)誤差率越小的弱分類(lèi)器的權(quán)值越大,對(duì)最終的預(yù)測(cè)產(chǎn)生的影響也就越大,所以將弱分類(lèi)器的權(quán)值設(shè)為該方程式從直觀上來(lái)說(shuō)是合理地,具體的證明為上式請(qǐng)繼續(xù)往下讀。

(d)更新訓(xùn)練數(shù)據(jù)集的樣本權(quán)值分布:


對(duì)于二分類(lèi),弱分類(lèi)器的輸出值取值為{-1,1},的取值為{-1,1},所以對(duì)于正確的分類(lèi) ,對(duì)于錯(cuò)誤的分類(lèi),由于樣本權(quán)重值在[0,1]之間,當(dāng)分類(lèi)正確時(shí)取值較小,而分類(lèi)錯(cuò)誤時(shí)取值較大,而我們希望得到的是權(quán)重值高的訓(xùn)練樣本點(diǎn)在后面的弱學(xué)習(xí)器中會(huì)得到更多的重視,所以該上式從直觀上感覺(jué)也是合理地,具體怎樣合理,請(qǐng)往下讀。

                  其中,是規(guī)范化因子,主要作用是將的值規(guī)范到0-1之間,使得。


(3) 上面我們介紹了弱學(xué)習(xí)器的權(quán)重系數(shù)α如何計(jì)算,樣本的權(quán)重系數(shù)W如何更新,學(xué)習(xí)的誤差率e如何計(jì)算,接下來(lái)是最后一個(gè)問(wèn)題,各個(gè)弱學(xué)習(xí)器采用何種結(jié)合策略了,AdaBoost對(duì)于分類(lèi)問(wèn)題的結(jié)合策略是加權(quán)平均法。如下,利用加權(quán)平均法構(gòu)建基本分類(lèi)器的線性組合:


     得到最終的分類(lèi)器:


以上就是對(duì)于AdaBoost分類(lèi)問(wèn)題的介紹,接下來(lái)是對(duì)AdaBoost的回歸問(wèn)題的介紹。

2.2 AdaBoost回歸問(wèn)題
AdaBoost回歸問(wèn)題有許多變種,這里我們以AdaBoost R2算法為準(zhǔn)。

(1)我們先看看回歸問(wèn)題的誤差率問(wèn)題,對(duì)于第m個(gè)弱學(xué)習(xí)器,計(jì)算他在訓(xùn)練集上的最大誤差:


然后計(jì)算每個(gè)樣本的相對(duì)誤差:(計(jì)算相對(duì)誤差的目的是將誤差規(guī)范化到[0,1]之間)

                        ,  顯然 

這里是誤差損失為線性時(shí)的情況,如果我們用平方誤差,則,如果我們用指數(shù)誤差,則

最終得到第k個(gè)弱學(xué)習(xí)器的誤差率為:

                    ,表示每個(gè)樣本點(diǎn)的加權(quán)誤差的總和即為該弱學(xué)習(xí)器的誤差。

(2)我們?cè)賮?lái)看看弱學(xué)習(xí)器的權(quán)重系數(shù)α,如下公式:


(3)對(duì)于如何更新回歸問(wèn)題的樣本權(quán)重,第k+1個(gè)弱學(xué)習(xí)器的樣本權(quán)重系數(shù)為:


其中是規(guī)范化因子:

(4)最后是結(jié)合策略,和分類(lèi)問(wèn)題不同,回歸問(wèn)題的結(jié)合策略采用的是對(duì)加權(quán)弱學(xué)習(xí)器取中位數(shù)的方法,最終的強(qiáng)回歸器為:

                  ,其中是所有的中位數(shù)(m=1,2,...,M)。

這就是AdaBoost回歸問(wèn)題的算法介紹,還有一個(gè)問(wèn)題沒(méi)有解決,就是在分類(lèi)問(wèn)題中我們的弱學(xué)習(xí)器的權(quán)重系數(shù)是如何通過(guò)計(jì)算嚴(yán)格的推導(dǎo)出來(lái)的。

2.3 AdaBoost前向分步算法
在上兩節(jié)中,我們介紹了AdaBoost的分類(lèi)與回歸問(wèn)題,但是在分類(lèi)問(wèn)題中還有一個(gè)沒(méi)有解決的就是弱學(xué)習(xí)器的權(quán)重系數(shù)是如何通過(guò)公式推導(dǎo)出來(lái)的。這里主要用到的就是前向分步算法,接下來(lái)我們就介紹該算法。

從另一個(gè)角度講,AdaBoost算法是模型為加法模型,損失函數(shù)為指數(shù)函數(shù),學(xué)習(xí)算法為前向分步算法時(shí)的分類(lèi)問(wèn)題。其中,加法模型表示我們的最終得到的強(qiáng)分類(lèi)器是若干個(gè)弱分類(lèi)器加權(quán)平均得到的,如下:


損失函數(shù)是指數(shù)函數(shù),如下:


學(xué)習(xí)算法為前向分步算法,下面就來(lái)介紹AdaBoost是如何利用前向分布算法進(jìn)行學(xué)習(xí)的:

(1)假設(shè)進(jìn)過(guò)m-1輪迭代前向分布算法已經(jīng)得到:



在第m輪的迭代得到,和.


目標(biāo)是使前向分布算法得到的和使在訓(xùn)練數(shù)據(jù)集T上的指數(shù)損失最小,即



上式即為我們利用前向分步學(xué)習(xí)算法得到的損失函數(shù)。其中,。因?yàn)榧炔灰蕾?lài)也不依賴(lài)于G,所以在第m輪迭代中與最小化無(wú)關(guān)。但依賴(lài)于,隨著每一輪的迭代而發(fā)生變化。

上式達(dá)到最小時(shí)所取的和就是AdaBoost算法所得到的和。

(2)首先求分類(lèi)器:

我們知道,對(duì)于二分類(lèi)的分類(lèi)器G(x)的輸出值為-1和1,表示預(yù)測(cè)錯(cuò)誤,表示正確,每個(gè)樣本點(diǎn)都有一個(gè)權(quán)重值,所以對(duì)于一個(gè)弱分類(lèi)器的輸出則為:,我們的目標(biāo)是使損失最小化,所以我們的具有損失最小化的第m個(gè)弱分類(lèi)器即為:

   其中,

為什么用表示一個(gè)弱分類(lèi)器的輸出呢?因?yàn)槲覀兊腁daBoost并沒(méi)有限制弱學(xué)習(xí)器的種類(lèi),所以它的實(shí)際表達(dá)式要根據(jù)使用的弱學(xué)習(xí)器類(lèi)型來(lái)定。

此分類(lèi)器即為Adaboost算法的基本分類(lèi)器,因?yàn)樗鞘沟趍輪加權(quán)訓(xùn)練數(shù)據(jù)分類(lèi)誤差率最小的基本分類(lèi)器。

(3)然后就是來(lái)求,

將代入損失函數(shù)(1)式中,得:


我們的目標(biāo)是最小化上式,求出對(duì)應(yīng)的。







由于,

注意:這里我們的樣本點(diǎn)權(quán)重系數(shù)并沒(méi)有進(jìn)行規(guī)范化,所以

(2)式為:   

則我們的目標(biāo)是求:


上式求偏導(dǎo),并令偏導(dǎo)等于0,得:

       ,進(jìn)而得到:

       ,求得:,其中為誤差率:


(4)最后看樣本權(quán)重的更新。

利用前面所講的,以及權(quán)值 

可以得到如下式子:


這樣就得到了我們前面所講的樣本權(quán)重更新公式。

2.4 AdoBoost算法的正則化
為了防止過(guò)擬合,AdaBoost算法中也會(huì)加入正則化項(xiàng),這個(gè)正則化項(xiàng)我們稱(chēng)之為步長(zhǎng)也就是學(xué)習(xí)率。定義為v,對(duì)于前面的弱學(xué)習(xí)器的迭代有:


加入正則化項(xiàng),就變成如下:


v的取值范圍為(0,1]。對(duì)于同樣的訓(xùn)練集學(xué)習(xí)效果,較小的v意味著我們需要更多的弱學(xué)習(xí)器的迭代次數(shù)。通常我們用學(xué)習(xí)率和迭代最大次數(shù)一起來(lái)決定算法的擬合效果。

到這里,我們的AdaBoost算法介紹完畢。

三. AdaBoost算法流程描述
3.1 AdaBoost分類(lèi)問(wèn)題的算法流程描述
關(guān)于AdaBoost的分類(lèi)問(wèn)題,sklearn中采用的是SAMME和SAMME.R算法,SAMME.R算法是SAMME算法的變種。sklearn中默認(rèn)采用SAMME.R,原因是SAMME.R算法比SAMME算法收斂速度更快,用更少的提升迭代次數(shù)實(shí)現(xiàn)了更低的測(cè)試誤差。接下來(lái)我們先介紹AdaBoost的分類(lèi)算法流程,可以將二元分類(lèi)算法視為多元分類(lèi)算法的一個(gè)特例。

3.1.1 SAMME算法流程描述:
輸入:樣本集,輸出為,弱分類(lèi)器的迭代次數(shù)為M,樣本點(diǎn)的個(gè)數(shù)為N。

輸出:最終的強(qiáng)分類(lèi)器

(1)初始化樣本點(diǎn)的權(quán)重為:


(2)對(duì)于m=1,2,..,M

       (a)使用帶有權(quán)重的樣本來(lái)訓(xùn)練一個(gè)弱學(xué)習(xí)器;

       (b)計(jì)算弱分類(lèi)器的分類(lèi)誤差率:


       (c)計(jì)算弱分類(lèi)器的系數(shù):

                      ,

         其中,K表示K元分類(lèi),可以看出當(dāng)K=2時(shí),,余下的與我們二元分類(lèi)算法所描述的弱分類(lèi)器系數(shù)一致。

       (d)更新樣本的權(quán)重分布:


(3)構(gòu)建最終的強(qiáng)分類(lèi)器:


3.1.2 SAMME.R算法流程描述:
輸入:樣本集,輸出為,弱分類(lèi)器的迭代次數(shù)為M,樣本點(diǎn)的個(gè)數(shù)為N。

輸出:最終的強(qiáng)分類(lèi)器

(1)初始化樣本點(diǎn)的權(quán)重為:


(2)對(duì)于m=1,2,..,M

       (a)使用帶有權(quán)重的樣本來(lái)訓(xùn)練一個(gè)弱學(xué)習(xí)器;

       (b)獲得帶有權(quán)重分類(lèi)的概率評(píng)估:

                  ,

               其中表示第m個(gè)弱學(xué)習(xí)器將樣本分為第k類(lèi)的概率。k=1,2,...,K,K表示分類(lèi)的類(lèi)別個(gè)數(shù)。

       (c) 使用加權(quán)概率推導(dǎo)出加法模型的更新,然后將其應(yīng)用于數(shù)據(jù):

                   ,

       (d)更新樣本點(diǎn)權(quán)重系數(shù):


       (e)標(biāo)準(zhǔn)化樣本點(diǎn)權(quán)重;

(3)構(gòu)建最終的強(qiáng)分類(lèi)器:

                   ,表示使最大的類(lèi)別即為我們所預(yù)測(cè)的類(lèi)別。

3.2 AdaBoost回歸問(wèn)題的算法流程描述
在sklearn中,回歸使用的算法為 AdaBoost.R2算法,具體的流程描述如下:

輸入:樣本集,輸出為,弱分類(lèi)器的迭代次數(shù)為M,樣本點(diǎn)的個(gè)數(shù)為N。

輸出:最終的強(qiáng)分類(lèi)器

(1)初始化樣本點(diǎn)的權(quán)重為:


(2)對(duì)于m=1,2,..,M

(a)使用具有權(quán)重的樣本集來(lái)訓(xùn)練數(shù)據(jù),得到弱學(xué)習(xí)器

(b)計(jì)算訓(xùn)練集上的最大誤差

             ,

(c)計(jì)算每個(gè)樣本點(diǎn)的相對(duì)誤差:

         如果是線性誤差:則

         如果是平方誤差,則

         如果是指數(shù)誤差,則

(d)計(jì)算回歸誤差率:


(c)計(jì)算弱學(xué)習(xí)器的系數(shù):


(d)更新樣本集的權(quán)重分布:

        ,其中是規(guī)范化因子,

(3)構(gòu)建最終的強(qiáng)學(xué)習(xí)器:

                   ,其中是所有的中位數(shù)(m=1,2,...,M)。

四. AdaBoost算法的優(yōu)缺點(diǎn)
4.1 優(yōu)點(diǎn)
(1)不容易發(fā)生過(guò)擬合;

(2)由于AdaBoost并沒(méi)有限制弱學(xué)習(xí)器的種類(lèi),所以可以使用不同的學(xué)習(xí)算法來(lái)構(gòu)建弱分類(lèi)器;

(3)AdaBoost具有很高的精度;

(4)相對(duì)于bagging算法和Random Forest算法,AdaBoost充分考慮的每個(gè)分類(lèi)器的權(quán)重;

(5)AdaBoost的參數(shù)少,實(shí)際應(yīng)用中不需要調(diào)節(jié)太多的參數(shù)。

4.2 缺點(diǎn)
(1)AdaBoost迭代次數(shù)也就是弱分類(lèi)器數(shù)目不太好設(shè)定,可以使用交叉驗(yàn)證來(lái)進(jìn)行確定。

(2)數(shù)據(jù)不平衡導(dǎo)致分類(lèi)精度下降。

(3)訓(xùn)練比較耗時(shí),每次重新選擇當(dāng)前分類(lèi)器最好切分點(diǎn)。

(4)對(duì)異常樣本敏感,異常樣本在迭代中可能會(huì)獲得較高的權(quán)重,影響最終的強(qiáng)學(xué)習(xí)器的預(yù)測(cè)準(zhǔn)確性。

五. 參考文獻(xiàn)/博文
(1)李航,《統(tǒng)計(jì)學(xué)習(xí)方法》 第八章

(2)Multi-class AdaBoost 論文

(3)Boosting for Regression Transfer AdaBoost回歸論文

(4)https://www.cnblogs.com/pinard/p/6133937.html
————————————————
版權(quán)聲明:本文為CSDN博主「Y學(xué)習(xí)使我快樂(lè)V」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_24519677/java/article/details/81910112

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多