我眼中的支持向量機(SVM)


看吳恩達支持向量機的學習視頻,看了好幾遍,才有一點的理解,梳理一下相關知識。

(1)優化目標:

  支持向量機也是屬於監督學習算法,先從優化目標開始。

    優化目標是從Logistics regression一步步推導過程,推導過程略

  

  這里cost1和cost0函數圖像為:

                                              

  Z是theta的轉置和x的內積。當Z>=1時,cost1 = 0.  當Z<=-1時,cost0 = 0.

  因為要最小化損失函數

  if y = 0 :我們希望Z >=1 (不僅僅要大於零,這里是與邏輯回歸相比,如下圖)

  if y = 0 :我們希望Z <=-1 (不僅僅要小於零,這里是與邏輯回歸相比,如下圖)

 通過這樣的對比發現支持向量機的要求要比邏輯回歸更加嚴格,這也說明了支持向量機的安全距離更高。就像下圖中黑線,如果你想知道為什么,下一部分將會揭曉。

  有的時候樣本並沒有上圖分的那樣好,可能有幾個點不符合,支持向量機將會對此很敏感,例如下圖,這樣的分割(紅線)並不是我們想要的,這就需要調整參數C的值,當C的值不是很大的時候將會忽略一些異常點,讓分割更加合理。

接下來從數學層面上分析,為什么會得到上圖的分割

將會對進一步轉化,學習向量內積的相關知識,可以轉化為,如下圖,表示距離

 

 

  那么我們替換一下上面的表達式為下圖

 

  好,接下來,用一個例子說明,假如要對下圖划分,假如,簡化問題,使:

  

如果把它分割成這樣,綠色線是決策邊界和theta向量成90度夾角:

如果這樣分的話,可以看到P1和P2的值相對較小,而要滿足這樣就會導致theta增大,所以還要進行優化調整。

如果這樣分呢,顯然距離P1,P2增大了,相應的theta的值也要減小,有人問,為什么要theta減小,別忘了我們最初的目的是讓最小,這樣做是不是更加合理了呢,所以說支持向量機是一個大間距分類器。

當然,以上都是簡單的線性分類,如果變得更復雜點該怎樣解決呢?例如

對於這樣的樣本,你可能會使用多項式來設置假設函數,但是如果特征再多點,像一張圖片,那么將會十分麻煩,所以就有了核函數。

根據我的理解,假如你想在地圖上確定你現在屬於哪一個區域,你需要找到幾個地標性建築,然后把自己的位置和地標建築進行比較,就能確定了。就是這個道理。

給定一個訓練樣本x,我們利用x的各個特征與我們預先選定的地標(landmarks)L1,L2,L3的近似程度來選取新的特征f1,f2,f3

變換用的核函數有很多,這里使用高斯核函數,,也就是x距離L1近了為1,遠了為0,其它也是一樣道理。

假如我們已經知道theta1,theta2,theta3的值,那么給一個測試樣本x,根據高斯核函數計算出三個特征值。大於零預測y值為1,小於零為0,如下圖所示。

如何得到地標,可以把訓練集中的樣本點當成地標,這樣

m表示訓練集元素的個數。這樣損失函數為:

當然還可以選擇其他核函數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM