1. 程式人生 > >支援向量機(support vector machine)--模型的由來

支援向量機(support vector machine)--模型的由來

1995年,Corinna Cortes(CC老師)靚照

          CC老師首先給出資料集是二分類且線性可分的情況,設上的資料集,其中的標籤,例:二維空間中資料集視覺化的表示(青色表示“-1”類,紅色表示+1類)

         CC老師提出了第一個問題:既然能線性可分,那麼就有超平面(向量化表示

)將這資料集分開,使得一側是“+1”類,另一側是“-1類”,老師讓我和同學A、同學B求出超平面,例:二維空間中資料集線性可分的視覺化(黃色直線將資料集分在了兩側):

我和同學A、同學B分別給出了直線的方程,我求出的直線方程是即求出的,同學A的給出的直線方程為(注意在我直線方程兩側除以5就可以)即

,同學B求出的直線方程為,(注意在我的直線方程兩側除以2就可以)即,然後我們三個分別把答案交給CC老師,CC老師說你們三個給我的直線方程,雖然寫法不一樣,但是隻代表一條直線。

        CC老師向我們提出了第二個問題,既然這三個方程只代表一條直線,能不能想個辦法,把這條直線統一一下,標準一下,CC老師看出了我們三個的迷惑,就給我提示了一下,他說你們可以找到離這條直線最近的點,通過這個點改進你們的直線方程。

補充幾何知識:

第一個知識點:已知超平面和資料集,哪個一點離這條超平面最近,答案:哪一個點使得最小,哪一點離這個超平面最近

第二個知識點:已知超平面和點,那麼這個點到這個超平面的距離為:,向量表示法為


通過幾何知識,我修改我的直線方程,在二維平面裡可直觀的看到離這黃色直線最近的點,我用黃色圓圈標註出來了,並給出了這個點的座標


我的直線方程改進過程:,然後把,同除以4.3,那麼最後,所以我修改後的直線方程變為了,注意離這條直線最近的點使得,那麼對任意的,都有

同學B改進他的直線方程過程(我偷瞄的):,把,同除以2.15,那麼最後的,直線方程為

同學A改進他的方程,按照上述步驟,最後和我的是一樣

然後,我們三個把各自的答案給了CC老師,老師看後說,你們的給出的直線方程使得,但是出現了一個負號的差別。你們再想想對於這個問題還有什麼條件沒用上我們回答對於的標籤我們沒用到我們知道在超平面一側的所有點

是同號的,即要麼都大於零,要麼都小於零。

則對於直線當直線方程是時,左下方的點為負數,右上方的點為正數,而左下方的點是屬於-1類的,右上方的點是屬於+1類的,所以我們可以把去掉絕對值,使得

而當直線方程是時,左下方為正數,右上方為負數我們只需把同乘以-1便得到了

微笑微笑,直到現在我們三個終於把這條直線的直線方程給統一化了,即而且這條把資料集分開的直線還滿足老師看到這樣的結果還是高興!然後提出了一個小問題,這些資料集到我們求出的這條直線的最短距離是什麼?簡單啊,就是,即。老師微微點點頭,表示對我們反應速度的認可!

       CC老師又拋給了我們一個問題,還有沒有別的超平面可以分開這兩個資料集,回答是肯定,會有無數個超平面分開這兩個資料集,

按照求統一黃色直線方式,我們又求出了圖中綠色和藍色的直線方程,其中綠色直線方程的的係數為我們用綠色的表示,且滿足,且這個資料集到綠色直線的最小距離為,藍色直線的係數為我們用藍色的表示,且滿足,且這個資料集到這條藍色直線的最小距離為。老師又拋給我們一個問題,既然有無數條,你們什麼時候才能求出這些所有的直線,我們也想對啊,老師又說那你們求出的這些直線有沒有共同的性質,我們說有啊,就是

     老師又著急了,既然有無數條,就是有無數個,且滿足的超平面能分開這兩個資料集,那麼哪一條才是最好的呢我們思考了五分鐘,沒找到好的答案,老師又給我提示,你們已經求出了三條直線,那麼要你們從三條直線(係數分別為)裡選出一條呢我們選資料集到這三條直線 最小距離(三個最小距離) 最大的那一條,作為最好的那一條直線,老師說答對了,那無數條直線也一樣,選資料集到直線 最小距離最大的那一個。

       老師說你們能不能用"選資料集到直線 最小距離最大的那一個" 這句話抽象出一個模型或者公式,老師提示說用運籌學分支之一非線性規劃的知識,歸納一下這個模型,我們想了一想給出了這個模型公式:

                                                     

                                                     

老師微微點點頭,範數的平方好處理一些吧,再改改,我們修改如下

                                                                 

                                                    

然後,老師說原問題一般用最小值處理,我們又做了一下修改

                                                                  

                                                                 

最後把原問題乘以0.5,最優化問題的解不變,所以最後模型為

                                                                

                                                                

老師最後微笑了一下,說下課吧,你們的模型已經解釋出來了!我們著急的拉住CC老師說:老師,我們穿越過來不容易,你直接告訴我們,這個模型有無數個,那這個非線性規劃怎麼解啊?。老師說:所以你們就需要考慮這個問題的對偶問題啊。最後老師說:你們先去找找Harold W. Kuhn和Albert W. Tucker,去學習一下他們的kuhn-Ticker條件(KKT)。              

                                                                     本集結束!

下集預告:又要穿越去找Harold W. Kuhn和Albert W. Tucker,去學習他們的解非線性規劃的kuhn-Ticker條件(KKT)。              

對於支援向量機比較好開源庫是臺灣大學林老師寫的libsvm,這個庫只有常用的三個核函式,我在原始碼的基礎上,加上了十個核函式。。。