支持向量機(Support Vector Machine)

關於支持向量機,這裏只解釋一些概念以及關於超平面參數是如何計算的,本篇不對參數優化推導過程進行詳解,這塊比較複雜,個人也需要時間捋一捋,日後再做整理。

首先,SVM的分類器爲:,其中令爲0時,即爲該分類器的超平面,在二維中即是一條直線,如下圖所示:


1.函數間隔

函數間隔表達式:,當訓練樣本,只要將該樣本的輸入與輸出代入該公式,即可計算該訓練樣本的函數間隔。函數間隔僅僅反映該樣本偏離超平面的程度,間隔越大,表明該點到超平面的距離就越大。這裏以二維空間爲例,直線ax+by+c=0,對於點(x0,y1)的函數間隔可以這樣去理解,我們可以求出直線上橫座標爲x0的縱座標y0,那麼函數間隔也即是b(y1-y0)這個數值的絕對值。這說明什麼?對於任意一點,都可以計算以該點橫座標對應直線上的一個點,此時就可以比較這兩個點縱座標相差程度,如果相差越大,表明該點偏離直線程度較大,也即是該點到直線的距離越大,但這個間隔並不是該點到直線距離的真實值,它只是反映點到直線距離這層關係。對於N維情形也是如此,我們可以固定前面N-1維的座標值,計算超平面最後一維所對應的數值,最後根據這兩個點的最後一維的差值與該維繫數的乘積作爲函數間隔來反映該點到超平面的距離大小,當然固定哪些維數的座標值,任由自己選擇。

2.幾何間隔


對於給定超平面,如果我們同時對w,b進行縮放,肯定不會影響超平面所在的位置。那麼我們對超平面的參數同時縮放,也即向量w變爲,b變爲。通過這樣變化,我們可以得到他的幾何間隔(幾何間隔也即是點到超平面的距離):


如果,我們會發現函數間隔與幾何間隔相等。關於這種情況,大家可以簡化維數,自己以二維直線爲例驗證下,找下實體感受。眼光犀利的兄弟,就不會去驗證,因爲他們知道上面的幾何間隔公式就是我們所學的點到直線的距離公式。


3.優化轉換

針對線性可分情況,我們知道對於最差樣本,無論是函數間隔還是幾何間隔,在訓練樣本中肯定都是最小的。優化最終目的就是最大化這些最差樣本的最小間隔。我們可以獲取最差樣本的函數間隔:

我們同樣可以獲取最差樣本的幾何間隔:

進一步優化表達式:


考慮上面有限制條件w的模必須爲1,我們可以將之去掉,又轉換到函數間隔上來,得到優化表達式:


再看,因爲我們對w、b任意縮放,都不會改變超平面的位置,所以這裏可以縮放使最小函數間隔爲1,那麼優化表達式又轉換成下面:


後面就是根據拉格朗日對偶條件以及KKT可優化極值條件(這塊後續另起一篇詳細說明),進行求解了,進一步優化轉換:



構造拉格朗日表達式:


優化後的結果最終轉換爲拉格朗日表達式進行極值求解各個參數。


4.超平面參數w、b計算

這裏着重講解下是如何求解超平面參數w、b

我們根據拉格朗日表達式對w和b進行偏導求解,得到如下表達式:


知道了w的形式,我們可以將w回代到拉格朗日表達式中,可得:


由於後面表達式爲0,進一步簡化爲:


這裏面只有afa是待求的參數,根據KKT條件的優化問題,我們可以優化下面表達式:



這種情形可以通過SMO(sequential minimal optimization)算法進行afa求解,再根據上面的afa與w的關係,可以解出向量w,關於b的求解,這裏做以下解釋:


下圖×是正樣本,○爲負樣本


在正樣本和負樣本中各找一個最差樣本,那麼我們就可以計算出b。這裏我們如何來判定正負樣本中,哪個樣本爲最差樣本?這是最關鍵的。 我們還是以二維爲例,可以更直觀的給予描述:直線ax+by+c=0,如果c不定,那麼這條直線是不是可以平移經過每一個樣本點?每經過一個樣本點,就相當於該點在這直線上,那麼我們是不是可以確定這條直線了?確定直線也就是確定c的值。c值反映直線在Y軸上的截距,但不是真的截距,相差一個係數。我們可以找到正樣本的最小截距,以及負樣本的最大截距,那麼分割線的截距就是兩截距的平均值。


5.核函數

核函數優點及性質:

【1】將低維線性不可分情形轉換至高維線性可分;

【2】無需尋找低維映射到高維上的映射函數,一個核函數可以直接計算出結果,不需要高維映射函數映射成一高維向量,再計算高維向量之間的點積,節省大量運算時間;

【3】核矩陣的半正定性可以試圖判別事先定義的函數是否是核函數,如果不滿足,該函數就不是核函數


6.非線性可分

對於非線性可分情形,我們通常不會利用核函數將低維轉換至高維情形進行處理,因爲核函數這個東西本身就不好進行選定,我們也不知道選取的核函數是否真的就可以將線性不可分轉換成線性可分。事實上,對於某些樣本的干擾,我們通常使用軟間隔進行分類:


對於線性可分,我們通常限制函數間隔是大於等於1的,但是對於不可分情形,有些樣本的值是可以大於1的,這樣它的函數間隔就有可能小於0,這裏允許個別樣本的錯分類發生,關於這部分的優化計算有空另起一篇加以說明。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章