在認識Adaboost演算法之前,我們必須了解機器學習的眾多演算法中,有一個分支是集成式學習(或稱作整體學習),但這裡有一個重要的觀念提醒,集成學習雖然歸屬於機器學習,他是一種「訓練思路」,並不是某種具體的方法或者算法。當我們使用一種分類器無法達到很良好的預測結果時,除了改使用其他類型的分類器,可以將數個分類器的預測結果綜合考慮,藉此達到分類的效果,這即是集成式學習,用白話來說就是「三個臭皮匠勝過一個諸葛亮」的概念。

我們以答一題是非題來舉例,假如我們使用一枚硬幣來決定答案要答O是還是X,此時答對的機率是50%(答錯機率為50%),但如果這時候我們使用兩枚硬幣來決定答案,此時答對的機率是 1-(50%*50%)=75%(答錯機率變為25%),以此類推,當我們硬幣的數目來到 5 枚,答對的機率是 1-(50%)5=96.875%(答錯的機率為3.125%)。隨著硬幣的個數增加,答對這一題是非題的機率也隨之增加(答錯機率也會隨之下降,50%à25%à3.125%),這時候硬幣就是所謂的分類器,把多個分類器的結果作為分類的依據就是集成式學習。集成式學習可分為三個部分,(1) Bagging(2) Boosting(3) Stacking

 

1.jpg

 

        Bagging的基本概念是從訓練資料(training data)中隨機抽取(取出後放回,n<N)樣本訓練多個分類器(使用者可以決定要幾個分類器),每個分類器彼此式獨立的,每個分類器的重要性也一樣(權重一致),最後用投票方式(Majority vote)得到最終結果,這種抽樣的方法在統計上稱為bootstrap(拔靴法)

 

2.jpg

 

Boosting的基本概念是將許多弱的分類器(weak classifier)進行合成變成一個強分類器(Strong classifier),和Bagging不同的是分類器之間是有關聯性的,透過將舊分類器分錯的資料權重提高,然後加權後的訓練樣本再用來訓練新的分類器,這樣新的分類器就會學習到前一個分類器錯誤的分類資料(misclassified data)的特性,進而提升分類結果。

 

3.jpg

 

Stacking,相較於baggingboosting都是用同質學習器的做法,該方法考慮的是異質弱學習器,並行地學習它們,並通過訓練一個「元模型」將它們組合起來,根據不同弱模型的預測結果輸出一個最終的預測結果。相較於bagging boosting 主要考慮的是同質弱學習器,Stacking 考慮的是異質弱學習器(將不同學習算法組合在一起的方法)。

 

4.jpg

 

                前面簡單介紹了有關集成式學習的種類,我們進入今天的主角Adaboost

1.Adaboost是甚麼呢:

        AdaBoost,是英文”Adaptive Boosting”(自適應增強)的縮寫,是機器學習方法的一種,由Yoav FreundRobert Schapirem1995年提出。AdaBoost方法的精神在於:前一個分類器分錯的樣本會被用來訓練下一個分類器,加權後的全部樣本資料再次被用來訓練下一個基本分類器。同時,在每一輪的學習中加入一個新的弱分類器,直到達到預期的錯誤率或達到預先指定的最大疊代次數。

2.AdaBoost的計算方式:

                我們會需要一個被標記好的資料以及指定一個弱的學習器,以分類問題來說常見的學習器會使用決策樹模型

 

5.jpg

 

                第一步:初始化訓練數據的權值分佈,如果有N個樣本,則每一個訓練樣本最開始時都被賦予相同的權重:1/N

 

6.jpg

 

                 弱分類器訓練與權重更新:我們會根據前一個分類器產生的錯誤率(ei)去得到這個弱分類器的權重(αi)

 

7.jpg

 

               然後我們就可以透過這個分類器,來更新我們的訓練樣本的權重(Wk+1,i)

 

8.jpg

 

                 之後就是一直重複IIV的步驟,調整樣本權重後,重新計算錯誤率,再修正權重…..,直到達到預期的錯誤率或達到預先指定的最大疊代次數。

 

3.AdaBoost的特性與優勢:

AdaBoost是一種迭代算法,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率。每一個訓練樣本都被賦予一個權重,表明它被某個分類器選入訓練集的機會。如果某個樣本點已經被準確地分類,那麼在組合下一個訓練集中,它被選中的概率就被降低,這也代表AdaBoost主要是要針對錯誤的樣本去做學習及修正。

AdaBoost方法能「聚焦於」那些難分類的樣本上。一開始,會令每個樣本的權重都相等,根據k次迭代過程,我們就根據這些權重來選取樣本點,進而訓練分類器Ck。然後就根據這個分類器,來提高被它分錯的樣本的權重,並降低被正確分類樣本權重。之後,權重更新過的樣本集會被用於訓練下一個分類器Ck。整個訓練過程會迭代地進行下去。

因為AdaBoost會針對那些被錯誤分組的樣本加以訓練,因此如果資料本身就存在著噪聲(noise)數據和異常數據時,AdaBoost就容易因為這些資料而有過於敏感的情況。

AdaBoost方法不太容易出現模式過擬合(Over-fitting)的現象。

AdaBoost方法中使用的分類器可能很弱(比如出現很大錯誤率),但只要它的分類效果比隨機好一點(比如二分類問題分類錯誤率略小於0.5),就能夠改善最後得到的模型。

AdaBoost方法中縱使使用錯誤率高於隨機分類器的弱分類器,在最終得到的多個分類器的線性組合中,也可以給予這些分類器負的係數,一樣能提升分類效果。

 

參考資料:

https://www.mdeditor.tw/pl/pQx6/zh-tw

https://kknews.cc/tech/rnrk5qr.html

 

 

arrow
arrow
    全站熱搜

    晨晰部落格新站 發表在 痞客邦 留言(0) 人氣()