一、svm要解決的問題
對於圖中的二分類問題,我們想要畫出一條線來將兩種圖案分來。 三條直線目前來說都可以對圖案進行分類,但是他們完成的質量是不一樣的,前兩個分類的容忍度明顯低一些,這樣,對於新的數據,其分類效果可能不及第三個。所以,我們使用支持向量機進行分類問題時,不光要將數據分開,還要找到一條分類效果最好的線。
在能夠將不同類別分開的前提下,我們要找一條最“胖”的線,也就是說,離線最近的點的距離要儘可能的遠。
二、支持向量機求解目標
1.求點到平面的距離
我們現在思考這樣一個問題:
假設在一個多維空間中,有一個超平面將兩類特徵分開,平面方程爲 wTx+b=0 ,這個時候我們想要計算特徵點到超平面的距離。顯然直接計算是無法計算的,我們不妨取平面上的兩個點x1,x2,他們符合 ------①----- wTx1+b=0,wTx2+b=0
超平面的法向量w垂直於平面,也必然垂直於面上的直線,所以------②----- wT(x1−x2)=0
這樣的話我們就可以將x到x1的距離投影到豎直方向,得到x到超平面的距離,且由①②得
distance=∣∣∣w∣∣wT(x−x1)∣=∣∣w∣∣∣wTx+b∣
2.求解目標
對於數據集(x1,y1)(x2,y2)到(xn,yn)
y爲樣本的類別,假設:
x爲正例時y=+1;x爲負例時y=-1
我們將預測的結果定義爲 y(x)=wTΦ(x)+b
y(xi)>0=>yi=+1
y(xi)<0=>yi=−1
可滿足yi∗y(xi)>0
那麼支持向量機的目標就是找到一條線,使得離該線最近的點能夠最遠。也就是說我們首先需要找到離這條線最近的點,然後找到能使這個距離最大的w和b。
根據上面的距離公式distance,我們試圖將絕對值去掉。因爲yi∗y(xi)>0,而且y值只有+1和-1兩個取值情況,所以我們可以在分子上乘上yi,距離函數變成了:
∣∣w∣∣yi[wTΦ(xi)+b]
求解目標爲:
argw,bmax{∣∣w∣∣min[yi(wTΦ(xi)+b)]}
三、支持向量機目標函數求解
這個目標函數看起來有點複雜,我們再對其進行變換。
前面已經說過 yi∗y(xi)>0,我們對其進行放縮使得 yi∗y(xi)>1,這樣的話這裏的最小值就變成了1,求解目標可簡化爲:
argw,bmax∣∣w∣∣1
求解使得∣∣w∣∣1最大時的w和b不容易求,我們可以求其倒數||w||的最小值,最終轉化爲求解21w2的最小值,這樣可以把絕對值也去掉。注意以上推導都是基於yi∗y(xi)>1這個假設的,這個假設必須滿足。
我們需要求解的是:
argw,bmin21w2且yi(wTΦ(xi)+b)≥1
我們首先求解21w2在該條件下的最小值。對於這種有約束條件的求值問題,我們可以使用拉格朗日乘數法進行求解。(考研數學裏有這部分內容,然鵝此刻我已經忘得一乾二淨了?。。。)
函數 L(w,b,λ)=21∣∣w∣∣2−i=1∑nλi(yi(wTΦ(xi)+b)−1)
分別對w和b求偏導,分別得到兩個條件:
∂w∂L=0=>w=i=1∑nλiyiΦ(xi)
∂b∂L=0=>0=i=1∑nλiyi
將構造函數L(w,b,λ)展開,並將上面兩個條件代入得:
L(w,b,λ)=21∣∣w∣∣2−∑i=1nλi(yi(wTΦ(xi)+b)−1)
=21wTw−wT∑i=1nλiyiΦ(xi)−b∑i=1nλiyi+∑i=1nλi
=∑i=1nλi−21(∑i=1nλiyiΦ(xi))T∑i=1nλiyiΦ(xi)
=∑i=1nλi−21∑i=1,j=1nλiλjyiyjΦT(xi)Φ(xj)
這樣的話我們就可以求得L(w,b,λ)的條件極值(極小值),以及當前的w和b。
接下來,我們要求的是什麼樣的λ可以使minw,bL(w,b,λ)最大
此時求解目標是:
maxλ[i=1∑nλi−21i=1,j=1∑nλiλjyiyjΦT(xi)Φ(xj)]且i=1∑nλiyi=0;λi≥0
對於一個凸函數來說,求解極大值不太容易,我們將其轉化爲求其相反數極小值的問題:
minλ[21i=1,j=1∑nλiλjyiyjΦT(xi)Φ(xj)−i=1∑nλi]且i=1∑nλiyi=0;λi≥0
四、支持向量機求解例子
五、支持向量的作用
對於上面的例子,我們可以看到x1和x3剛好在這個最大間隔超平面的邊界上,x1和x3對應的w值均爲0.25,而x2對應的w值爲0,這說明我們在分割這個超平面的時候沒有用到這個x2。所以,支持向量機的支持向量指的就是我們要找出什麼樣的向量來支撐這個超平面。上面這個例子的超平面是由x1和x3算出來的,所以我們稱他們爲當前支持向量機算法的支持向量。我們要做的就是找到這樣的支持向量,通過支持向量,我們可以求解這樣一個超平面。
六、軟間隔支持向量機
對於上圖中的分類問題,實線實現了對兩類圖案的嚴格分類,但是此時分界線距離邊界上的圖案非常近,可能泛化能力很弱。而拋開這個異常點不看的話,虛線實現的分類效果是很好的。這樣的話,對於新的樣本,虛線可以實現更好的分類效果。
爲了解決該問題,我們引入了鬆弛因子的概念。
對於之前的假設,我們改爲 yi(wTΦ(xi)+b)≥1−ξi,也就是把分類的要求放寬了一些,容忍出現一些異常的點。
目標函數添加一個代價,改爲 min(21∣∣w∣∣2+C∑i=1nξi)
這裏的C也是一個在實際建模時我們需要自己選擇的參數:
當C趨近於無窮大時,意味着分類嚴格不能有錯誤
當C趨近於很小時,意味着可以有更大的錯誤容忍
接下來的推導過程與硬間隔支持向量機類似
七、核函數變換
對於該圖的數據分佈,我們無法使用一條直線對其進行分類
在二維的空間它是不可分的,但是如果上升到三維的情況,假如說我們能將這些紅色的點提起來,這樣的話這些點在x軸和y軸上沒有任何變化,但是我們可以在z軸上使用一個平面將它們分開。
對於這種低維不可分的情況,可以在高維上變得可分,這個時候我們遇到的問題就是如何將低維的點變換到高維。
從上面的例子我們可以知道支持向量機可以先在低維上算內積,然後將內積的結果再做轉換,效果和先轉換爲高維再做內積一樣。
高斯核函數是我們常用的一個核函數:
K(X,Y)=exp{−2σ2∣∣X−Y∣∣2}
通過高斯核函數映射之後可以實現這種效果,將二維空間轉換爲多維空間,這樣我們就可以用一個平面將這兩類分開。