看吳恩達支持向量機的學習視頻,看了好幾遍,才有一點的理解,梳理一下相關知識。
(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表示訓練集元素的個數。這樣損失函數為:
當然還可以選擇其他核函數。