前向分佈算法與Adaboost

首先了解一下提升方法的思路:”將多個弱學習模型組合成一個強學習模型,這個強學習模型可以達到比任何一個弱學習模型都要好的預測效果”,那麼應該怎樣求這個強學習模型,直接就能求出來嗎?況且到目前爲止連弱學習模型都還沒有,那麼就必須弄明白怎樣來學習弱學習模型,之後又該怎樣來組合它們呢?顯然第一個問題非常困難,基本上是不可能求解的,而第二個問題前向分佈算法給出了答案。

前向分佈算法

前向分佈算法考慮的問題及解決方案
前向分佈算法考慮這樣一個問題:”給定一個訓練數據集和損失函數,並且弱模型通過權重之和的方式組合成強模型,那麼我們怎麼來求這些弱模型以及最終的強模型?“
我們用數學化的語言描述一下上面的問題:
給定訓練數據集T={(x1, y1),(x2, y2),…,(xN, yN)}和損失函數L(y, f(x)),f(x)是最終的強學習模型,因爲弱模型通過權重之和的方式組合成強模型,所以f(x)可以如下表示:
在這裏插入圖片描述
其中b(x;γm)是弱學習模型,βm是弱學習模型的權重係數,γm是弱學習模型的參數。
所以前向分佈算法考慮的問題是,如何求出所有的βm和γm,即優化如下目標表達式:
在這裏插入圖片描述
顯然一次性求出所有的βm和γm基本不可能,所以前向分佈算法給出的解決辦法是:“利用貪心算法,每一步只學習一個弱模型及其係數,使得當前弱模型和之前所有的弱模型組合後目標表達式取得最優值,最終就可以使得所有弱模型組合後目標表達式取得最優值”。

前向分佈算法:
輸入:訓練數據集T={(x1, y1),(x2, y2),…,(xN, yN)};損失函數L(y, f(x))
輸出:強學習模型f(x)
(1)初始化f0(x)=0
(2)對m=1, 2 ,…, M

  • (a)極小化損失函數
    在這裏插入圖片描述
  • (b)更新
    在這裏插入圖片描述

(3)最終得到強學習模型f(x)
在這裏插入圖片描述
總之,提升方法告訴我們如何來求一個效果更好模型,那就是將多個弱模型組合起來,這僅僅是一個思路,而前向分佈算法就具體告訴我們應該如何來做。

Adaboost算法

Adaboost是提升算法中最具代表性的算法之一,它和前向分佈算法有着千絲萬縷的聯繫
,可以這樣來說,當前向分佈算法的損失函數L(y, f(x))取指數函數時,該前向分佈算法就成了Adaboost算法。

Adaboost算法:
輸入:訓練數據集T={(x1, y1),(x2, y2),…,(xN, yN)},其中xi∈Rn , yi∈{-1, +1}。
輸出:最終分類器C(x)
( 1 )初始化訓練數據集的權值分佈
在這裏插入圖片描述
( 2 )m=1, 2, …, M

  • ( a ) 使用具有權值分佈Dm的訓練數據集來訓練數據,得到一個在加權訓練數據集上誤差率最小的弱分類器Gm(x)
  • ( b ) 計算弱分類器Gm(x)在訓練數據集上的誤差率em
    在這裏插入圖片描述
  • ( c ) 計算弱分類器Gm(x)的係數αm
    在這裏插入圖片描述
    這裏的對數是自然對數。
  • ( d ) 更新訓練數據集的權值分佈Dm,得到新的權值分佈Dm+1
    在這裏插入圖片描述
    Zm是規範化因子,它使得Dm+1也構成一個概率分佈即相加之和等於1,如下:
    在這裏插入圖片描述

(3)得到強分類器f(x)
在這裏插入圖片描述
(4)得到最終分類器C(x)
在這裏插入圖片描述
Adaboost算法說明:
上述算法步驟(2)中:
( a ) Gm(x)可以是任一種若分類模型,但它必須是當前加權訓練數據集上誤差率最小的,因爲這樣纔可以使得fm-1(x) + Gm(x)在指數損失函數上取得最小值,其中fm-1(x)指的是第 m 次迭代之前的所有弱模型的加權和。後面在分析Adaboost和前向分佈算法的關係時,會講到這個知識。
( b ) 弱分類器Gm(x)在訓練數據集上的誤差率em是被Gm(x)誤分類的樣本的權值之和,由此可以看出樣本權值和誤差率的關係。
( c )當誤差率em≤1/2時,αm≥0,並且隨着em的減小,αm越來越大。由此可以看出,誤差率越小的弱分類器的權重越大,那它在最終分類器中的作用就越大。
( d )更新樣本權值分佈,爲下一輪做準備
在這裏插入圖片描述
由此可以看出,正確分類的樣本在下一輪中的權重會減小,而誤分類的樣本在下一輪
中的權重會增大,兩者相比,誤分類的樣本在下一輪中權重被放大e2αm倍,所以誤分類樣本在下一輪學習過程中的作用更大。

Adaboost算法和前向分佈算法的關係:
現在來證明當前向分佈算法的損失函數是指數函數時,其學習操作等價於Adaboost算法。
指數損失函數如下:
在這裏插入圖片描述
證明:
我們知道前向分佈算法第m輪的執行過程有兩個,如下:
過程(1):求得αm和Gm(x),使得fm-1(x) + αm Gm(x)在訓練數據集上的指數損失最小,如下所示:
在這裏插入圖片描述
過程(2):更新
fm(x) = fm-1(x) + αm Gm(x)

現在證明前向分佈算法第m輪求出的αm和Gm(x)就是Adaboost算法中第m輪求出的αm和Gm(x),證明過程如下:
上式可以表示爲:
在這裏插入圖片描述
其中wmi=exp(-yifm-1(xi)),它既不依賴與 α 也不依賴於G(x),所以它與最小化無關,但是它每一輪都要更新。

首先求解Gm(x),因爲wmi和第m-1輪的強學習模型fm-1(x)有關,在第m輪時wmi相當於就是一個定值,對於第m輪的弱學習器Gm(x)分類錯誤的點有wmi · e正值,對於第m輪的弱學習器Gm(x)分類正確的點有wmi · e負值,那麼第m輪的弱學習器Gm(x)分類錯誤的點越少,即Gm(x)的誤差率越小,目標表達式A就可以取得最小值啦。所以說前向分佈算法第m輪求得的弱分類器Gm(x)就是Adaboost第m輪求得的弱分類器Gm(x),它們都是在當前加權數據集上誤差率最小的弱分類器。

其次求解αm,先將目標表達式A轉換成如下形式:
在這裏插入圖片描述
即得到
在這裏插入圖片描述
接着將上面求得的Gm(x)帶入B式,然後對α求導並令導數等於0得:

在這裏插入圖片描述
其中,em如下表示:
在這裏插入圖片描述
em正是第m輪弱學習器Gm(x)的誤差率,所以前向分佈算法第m輪求得的αm就是Adaboost第m輪求得的αm。因爲Adaboost更新樣本權值分佈時做了規範化,所示上式中的分母就爲1了,那在計算誤差率就只需要計算分子即可。

最後來看一下樣本權值的更新,前向分佈算法的權值更新公式爲wm,i= exp(-yifm-1(xi)),所以wm+1,i = exp(-yi fm(xi)),又因爲fm(xi) = fm-1(x) + αmGm(x),所以wm+1,i = exp(-yi(fm-1(x) + αmGm(x))) = wm,i · exp(-yiαmGm(x)),這與Adaboost的樣本權值更新公式只差了規範化因子,所以前向分佈算法的樣本權值更新公式和Adaboost的樣本權值更新公式是等價的。

綜上所述,當前向分佈算法的損失函數是指數函數時,其學習操作等價於Adaboost算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章