機器學習技法 Lecture 5

Kernel Logistic Regression
用kernel SVM的方法解logistic regression。


Soft SVM與Regularization的比較

Soft SVM加上的ksi代表資料點犯的錯,沒犯錯的話就是0。因此,我們可以不理原本soft SVM的constraints,把式子變成:
變成這樣有什麼好處呢?我們回想在基石中學過的regularization,兩者都是在原本要minimize的值中,再加入另一種err。既然兩者很相像,那我們是不是直接在SVM用regularzie的方式求解就好了呢?答案是,沒這麼單純,新的形式不僅不是QP問題,也不能微分。下面會提到,如何將兩者真正的結合在一起(算結合嗎?)。

在介紹hard SVM時,就有介紹過它跟regularization的關係,兩者的目標跟constraints剛好相反。將兩個的constraints轉換一下加入目標式,就變成L2 regularization和soft SVM,看起來就跟上面所述,兩者很相像。


Error Measure

下圖是0/1 error和SVM error的比較可以看出SVM error是0/1 error的上限,還是凸的上限(在最佳化有好的性質可以用)。因此,做好SVM某種意義上也算是間接的做好0/1(我們稱為hinge error measure)。

再回憶logistic regression的error,也是0/1的上限。而SVM與logistic regression的error看起來其實有點相似,照老師的說法,兩者當ys為無限大及負無限大時相等。因此,我們可以說SVM好像就是在做L2-regularized logistic regression。


三種演算法的比較

下圖是老師的投影片中,對已經提過的三種演算法做比較

  • PLA:用0/1 error。lin.separable時會很有效率,但若不是,可能就要用pocket,會變得很難做。
  • Soft-Margin SVM:用SVM error,是0/1 error的上限。用QP求最佳化,簡單且有margin保護。
  • regularized LogReg:用在基石提過的error,scale後是0/1 的上限。用SGD求最佳化,簡單且有regularization保護。
    現在,我們知道SVM跟regularized真的很像,那我們能不能藉由算SVM來求regularized LogReg呢?

用SVM做binary classifiation

以下有幾種naive的方法:

  • 直接把SVM算出來的值,丟進activation function,就能得到一個機率。此方法簡單,但會失去LogReg推導時,擁有maximun likelihood的性質。
  • 用SVM算出w b,再將結果當作LogReg的起始點,算SGD。因為通常這種問題的函數都是凸的,用此方法有種畫蛇添足、多此一舉的感覺。

比較好的方式如下:這個方法只是稍微放縮跟微調,A通常要大於0,不然SVM根本就做錯了,而B要趨近於0。新的問題會變成:變成單純兩個變數,可以用很簡單的方式求最佳化。
以上Platt提出的model(簡化過的),步驟如下:

  • 用SVM求出w b,將資料點用結果重算,視為一個轉換。
  • 用LogReg算出A和B
  • 那個g(x)就等於最終算出的值,再放入activation function。

這是用kernel SVM來讓LogReg也可以用到kernel的好處,但這只是approximate,下面講如何真正的算出特徵轉換過的LogReg。


真正算出Kernel LogReg

能夠使用kernel的關鍵在於,w要能夠表示成z的線性組合,這樣才有z的內積(kernel真正作用的地方)。那麼regularized LogReg算出來的w可以表示成z的線性組合嗎?答案:可以的。證明如下: 概念很好理解,簡單講就是如果w有z不能表現出來的部份,那麼就能找到比該w還要好的解。

既然w一定是z的線性組合那我們就能用kernel把式子轉化成下面的樣子這個式子變成單純解beta的最佳化問題了!


回顧Kernel Logistic Regression(KLR)

從最後導出來的式子,可以看成只是將資料點經過轉換(kernel)後,跟beta的相似程度。另外,beta自己內積後在乘上kernel matrix可以視為regularizer。

因此,KLR可以看成兩種意義:

  • 推導後的意義,beta的線性模型,加上了kernel transform和kernel regularizer。
  • 推導前的意義,w的線性模型,加上L2 regularizer,並用kernel來簡化。

這跟SVM經過dual轉換後變成計算alpha非常像,只不過SVM alpha大多是0,而KLR的beta大多不是0。


KLR成功的將kernel的好處加到regularized LogReg!

前面講了很多SVM和LogReg的比較,但最後真正的方法感覺跟前面沒什麼關係,老師大概是希望學生能有宏觀概念的了解吧!這章對我來說有點難懂,突然跳回到以前講過的東西,然後用新的知識讓原本的東西更好算。所以SVM到底跟LogReg為什麼會這麼相似,我還是沒辦法完全了解,只知道僅僅才上聽五堂課,就體會到,一個問題可以用好多不同的方式表現,各有優缺,可以互補。接下來還有11堂課,後面到底還有如何精妙的知識,想到就覺得數據學家真的好厲害,既佩服又覺得無力啊…