機器學習_學習筆記系列(29):集成投票分類(Ensemble Voting Classifier)- Platt scaling
前兩個章節我們分別介紹Ensemble Averaging在分類和回歸上的應用,接下來就是進入第二種Ensemble Method- Ensemble Voting。
Ensemble Voting我們在學習筆記第26章提到過,其是透過投票的方式決定採用哪些sub-models來結合。而其最主要可以分為兩種Hard Voting和Soft Voting。
Hard Voting
在Hard Voting中,我們以例子來解釋,我們可以看到在分類問題上總共有3個類別和6個子模型。當其中一個模型預測某一類別的機率大於50%,此模型就把票投給這個類別,如果所有類別的機率小於50%則為reject option當作廢票,最後我們統計看哪個類別得到的票數最多。
也就是說我們今天有一筆資料,我們丟進去這個6個子模型,我們可以看到預測此資料為A的票數最大,所以我們Ensemble Hard Voting在這筆資料中,我們把它預測為A。
Soft Voting
在Soft Voting中,我們一樣以例子來解釋,其概念是根據每個類別所得到的分數加總去比較,在例子中我們可以看到,雖然在hard voting中,A得到最多票,但是在soft Voting中,B得到的積分最多。
所以我們將一筆資料,丟進去這個6個子模型,我們可以看到預測此資料為B的積分最大,所以我們Ensemble Soft Voting在這筆資料中,我們把它預測為B。
對於上面的hard voting和soft voting兩種方法,相信大家一定會想問一個問題,
這些機率是怎麼產生的?
對於Hard Voting來說,其實很簡單,我們大可直接用classifier去預測,預測到哪個點就投哪個點。但是Soft Voting中我們一定要告訴電腦,分類到每個類別的機率。所以說對於Soft Voting,我們用的演算法,一定要讓電腦知道每個類別的機率。
所以這裡對於soft Voting我們就必須用到一些特殊的技巧,叫做「Platt Scaling」
Platt Scaling
在分類問題中,我們通常判斷一個分類器好壞,通常都是直接看他訓練集和測試集的表現,但是如果加上機率的概念,我們能找到更適合的分類器,就像上述問題,今天做二元分類,有兩個分類器訓練集和測試集的表現相當,但是我們可以透過機率概念,看看每筆資料被分到各類別的機率。
假設前者每筆資料被分到兩個類別的機率都很接近,可能是[45%,55%]或[53% 47%],後者則差距很大[1% 99%]或[10% 90%],則我們可以很清楚的看到,後者模型是比較好的。
所以說為了讓我們的輸出資料可以用機率的方式去表達分到每個類別的機率,在1999年,有位偉大的科學家John Carlton Platt於Advances in Large Margin Classifiers.的一篇paper [1]
Probabilistic outputs for support vector machines and comparisons to regularized likelihood methods
發明了Platt Scaling。其概念簡而言之就是用Logistic regression擬合SVM分類上的確定性(degree of certainty)。
(這邊Paper底下還很貼心的附上pseudo code)
其方程式為
其中P(y=1|x),就是該筆資料x被分類到y=1的機率,f(x)是求出的SVM方程式,A和B是我們要擬合的參數。
所以說,假設今天f(x)剛好在模糊地帶,也就是接近0,如果B=0的話,我們可以看到他被分到1的機率也會接近1/2。
那我們有了這個方程式,接下就是處理最佳化問題。對於Platt Scaling的最佳化問題其實幾乎和Logistic Regression一樣
其中p就是我們的上述提到的機率,而t為我們的label值,所以如果在SVM中原本的類別為y=[+1,-1],套用在logistic regression就會變成t=[+1,0]。
但是如果t=[+1,0]會出現overfitting問題,想知道為什麼請看paper,這裡不贅述。所以作者把我們的label設為
OK接下來就是利用梯度下降解決最佳化問題,首先我們看我們的cost function
分別對A和B微分
然後我們一樣用梯度下降的方式來更新權重
迭代數次後就可以得到我們的參數A和B。而這個方法,不只適用於SVM也可以用在PLA等等。而KLR如果要求出機率值,直接套入sigmoid function就可以得出答案。
Python Sample Code:
Github:
Reference:
[1] Platt, J. (1999). Probabilistic outputs for support vector machines and comparisons to regularized likelihood methods. Advances in large margin classifiers, 10(3), 61–74.
[2] Zhou, Z. H. (2012). Ensemble methods: foundations and algorithms. CRC press.