核函數
在上文中我們已經了解到使用SVM處理線性可分的數據,而對於非線性數據需要引入核函數的概念
它通過將數據映射到高維空間來實現線性可分。在線性不可分的情況下,支持向量機通過某種事先選擇的非線性映射(核函數)將輸入變量映射到一個高維特征空間,在這個空間中構造最優分類超平面。我們使用SVM進行數據集分類工作的過程首先是同預先選定的一些非線性映射將輸入空間映射到高維特征空間(下圖很清晰的表達了通過映射到高維特征空間,而把平面上本身不好分的非線性數據分了開來)

只要給出φ,計算出φ(x)和φ(z),再求他們的內積我們能夠很容易的計算出K(X,Z),但是這樣做的計算復雜度非常高,達到O(n2),我們可以得出一個φ但不去直接的計算它。
例如:
其中x和z都是n維向量

通過公式可以發現求x,z內積的平方與映射后求內積的結果是一樣的,而最終的復雜度降到了O(n)。
我們直觀看這個核函數,假設φ(x)與φ(z)夾角較小,則核函數k(x,z)會比較大,相反如果φ(x)與φ(z)夾角較大,則核函數k(x,z)會比較小,比如φ(x)與φ(z)正交,則相應核函數為0,所以核函數一定程度上是φ(x)與φ(z)相似度的度量,。
下面來介紹一種徑向基函數(Radial Basis Function 簡稱RBF),也稱作高斯核函數(Gaussian kernel)如下:

如果x與z相近,則核函數趨近與1,反之x與z差值很大,則核函數趨近於0.這個核函數叫做高斯核函數,能把特征值映射到無窮維。
進一步討論,如果給出一個核函數,我們怎么證明他是個有效的核函數呢?
假設我們已經給出了一個有效的核函數K,給定一個含有m個點的訓練集{x1,x2,x3……xm},我們使用Kij來表示(Ki,Kj),這樣組成一個核函數矩陣(kernel matrix), 顯然可以得到矩陣K是一個對稱矩陣:

而且我們發現對於任意向量z,

通過公式我們了解到如果K是一個有效的核函數則對應的核函數矩陣是對稱半正定矩陣(K>=0)。這是一個必要條件。而通過mercer定理它也是一個充分條件。Mercer定理表明為了證明K是有效的核函數,那么我們不用去尋找
,而只需要在訓練集上求出各個
,然后判斷矩陣K是否是半正定即可。
軟間隔
SVM算法是假定數據是線性可分的,把數據映射到高維通常能夠增加線性可分的可能性,但我們不能保證這總是有效的,而由於噪聲值的存在,我們也不能保證計算出來的超平面是我們想要得到的,舉個例子如左圖展示了一個最優間隔超平面,但是當加上噪聲值后,超平面有了比較大幅度的傾斜,得到了一個間隔小很多的超平面。

為了解決線性不可分的數據,我們需要重構最優化模型如下:

我們允許函數間隔小於1,而對於函數間隔小於等於1-ξ的點我們在目標函數上加上一個懲罰函數,C稱作懲罰因子,
稱作損失函數,C代表着超平面對於噪聲值的權重,保證大多數的點函數間隔大於1,C越大表明離群點對目標函數影響越大,也就是越不希望看到離群點。
同時要調整的還有拉格朗日公式

這里的
和
都是拉格朗日乘子,然后將其看作是變量w和b的函數,分別對其求偏導,得到w和b的表達式。然后代入公式中,求帶入后公式的極大值。整個推導過程比較復雜,最后得出模型的對偶形式:

此時,我們發現沒有了參數
,與之前模型唯一不同在於
又多了
的限制條件。根據KKT推導出下列結論,在求拉格朗日乘子是需要使用到(SMO算法)。

至此SVM純原理部分介紹完畢,接下來會結合實際應用來理解SVM算法。
