給定擁有 個樣本的一組資料集:
其中
AdaBoost 的核心概念是依序建立 個弱學習器 (weak learner) ,每個模型會更關注在前個模型分類錯誤的那些樣本上。不僅如此,每個模型都將會被賦予一個模型權重 ,該權重必須反映兩件事:
如此一來,最終模型 就是蒐集這 個弱學習器 (weak learner)的觀點,做出最終分類。也就是說,我們可以表示如下:
重點
值得注意的是,我們有提到這 個模型是「依序」建立的,而且會更關注在前個模型「分類錯誤」的樣本上。換句話說,當前模型 的建立其實是依賴於前一個模型 ,依此類推。
至於該怎麼「更關注」在前個模型「分類錯誤」的樣本呢?概念其實很簡單:
首先,我們可以維護一組樣本權重,用來代表第 個模型關注每個樣本的程度:
重點
接著,根據當前模型 的分類結果,更新當前樣本權重 至 。更新樣本權重的準則有兩個:
如此一來,下個模型 就會更關注在那些前個模型分類錯誤的那些樣本上了。
目前我們已經知道每個模型 會有一個模型權重 ,用來表示當前模型的重要程度。但是我們並不知道怎麼求得?實際上,我們可以透過以下步驟求得。
首先,我們定義一個用來衡量模型分類效果的指標(可理解為加權過後的分類錯誤率):
重點
為什麼 呢?一個很直觀的理解是,若當前模型 的 ,只要將當前模型的分類準則顛倒過來(過去分類為 的樣本就改為分類至 ,反之亦然),那麼新的 就會小於等於 了。因此,以最小化加權分類錯誤率為目標的訓練方式,是不可能建立出 的模型的。
而模型權重 其實就只是將 經過某個函數轉換而已,定義如下:
重點
為什麼要這樣定義呢?請觀察以下這張圖,其中橫軸是 ,縱軸則是 :
我們可以觀察到以下兩點:
如此一來,我們就得到符合我們預期的模型權重了。
結論
回憶一下,更新樣本權重的準則如下:
實際上,給定第 個樣本 ,第 個模型 和第 組樣本權重 ,更新公式可定義如下:
重點
分母就只是個 normalize 的計算,將 的所有元素壓縮在 到 ,並且總和為 (全機率總和為 )。重要的是分子的涵義。
針對 ,我們從兩個角度了解。
給定第 個樣本 ,第 個模型 ,當模型分類正確時, 會等於 。將 畫在橫軸上, 畫在縱軸上,圖形會長得像這樣。
我們可從圖中觀察到兩件事:
給定第 個樣本 ,第 個模型 ,當模型分類錯誤時, 會等於 。將 畫在橫軸上, 畫在縱軸上,圖形會長得像這樣。
我們可從圖中觀察到兩件事:
以下是在不同情況下,怎麼更新樣本權重的準則:
模型\分類 | 正確 | 錯誤 |
---|---|---|
不值得參考 | 小幅度降低 | 小幅度提高 |
值得參考 | 大幅度降低 | 大幅度提高 |
以上就是我們 AdaBoost 的所有核心概念。接下來透過 pseudocode 從頭到尾再瞭解 AdaBoost 一遍吧。
ML