我的微信公衆號: s406205391; 歡迎大家一起學習,一起進步!!!
有些人認爲,支持向量機(SVM)是最好的現成的分類器,這裏說的“現成”指的是分類器不加修改即可直接使用。同時,這就意味着在數據上應用基本形式的SVM分類器就可以得到低錯誤率的結果。SVM能夠對訓練集之外的數據點做出很好的分類決策。
距離的定義:基於最大間隔分隔數據
假設在一個平面上有如下兩組數據,我們可以用如下一條直線將兩組數據分隔開(我們將上述可以把數據集分隔開的直線稱爲分隔超平面)。圖左和圖右兩條直線均可有效的將數據分隔開。那麼,哪一條直線的分隔效果更好呢?很明顯圖右的直線分隔效果更好,因爲它距離兩組數據的距離相對於圖左直線更遠。支持向量就是離分隔超平面最近的那些點。
那麼,我們在設計分類器之前,就先得學會如何計算支持向量到分隔超平面之間的距離。假設由圖點x是分隔超平面的支持向量,w是超平面上的法向量,w’和w’'是超平面上的兩個點。我們定義超平面方程爲wTx+b=0。那麼我們可以得到兩個等式:
-
w’和w’‘在超平面上:wTx’ = -b; WTx’’ = -b
-
法向量與w’和w’'的向量垂直:[wT(x′′−x′)]=0
我們要求點到直線的距離,其實也就是求向量(x - x’)與法向量w的單位向量的投影(內積)。那麼公式即爲:distance(x,b,w)=∣∣∣w∣∣wT(x−x′)∣=∣∣w∣∣1∣wTx+b∣ 因爲w’是隨機找的一個點,因此必然可以約分,將w’約分完之後,即可得到最終的表達式。
優化目標: 找到一條線(w和b),是的離該線最近的點能夠最遠
有了距離公式,那麼也有了我們機器學習的優化方向:讓支持向量與超平面的距離最遠。在做SVM機器學習的時候,我們首先需要定義標籤,即將我們的訓練數據進行分類。在這裏,爲了後期計算方便,我們將數據分類兩類,分別用1和-1表示。那麼就有了如下的決策方程:
y(x)=wTϕ(x)+b⇒y(xi)>0y(xi)<0⇔yi=+1⇔yi=−1⇒y(i)⋅y(xi)>0 這裏的φ(x)我們可以先暫時理解爲x
將距離公式帶入到決策方程,可得:∣∣w∣∣yi⋅(wT⋅ϕ(xi)+b) (由於yi⋅y(xi)>0, 所有將絕對值展開,公式依舊成立。)
對於該決策方程,我們設計優化目標,找到一條離支持向量的點最遠的直線,優化目標如下:
目標函數: argmaxw,b{∣∣w∣∣1min[yi⋅(wT⋅ϕ(xi+b))]}
求解目標函數
上述的目標函數看起來很複雜,通俗的將,大括號內的意思即爲,找到在整個樣本中,距離決策邊界距離最小的樣本。大括號外面即,找到與這些這些樣本距離最大的線。
放縮變換
對於決策方程,不太好求解,我們這裏可以做一下變換。我們通過放縮變換使得:對於決策方程(w,b),其結果∣y∣>=1⇒yi⋅(wT⋅ϕ(xi)+b)>=1 (之前我們認爲恆大於0,現在更嚴格了一些)
由於yi⋅(wT⋅ϕ(xi)+b)>=1 , 那麼,其最小值就爲1,那麼,我們只需要考慮argmaxw,b∣∣w∣∣1。
當前目標:maxw,b∣∣w∣∣1,約束條件:yi⋅(wT⋅ϕ(xi)+b)>=1
函數變換
對於上述目標函數,我們適當轉換一下,方便求解。我們可以將上述函數的求最大值問題,改爲求極小值問題:
轉換函數 ⇒minw,b21w2
轉換思路爲:先將∣∣w∣∣1轉換成其倒數,再取其平方,再添加一個常規項1/2。雖然做了如下操作之後,最後得到的點的值會發生變換,但是,取到的點是不變的。
對於這個函數,我們可以用拉格朗日乘子法求解。
求解拉格朗日乘子法
拉格朗日乘子法是專門用來求解帶約束條件的問題的。他的基本公式爲:
minL(x,λ,w)=f0(x)+Σλifi(x)+Σvihi(x)
把我們的方程代入,即得:
L(w,b,α)=21∣∣w∣∣2−Σαi(yi(wT⋅ϕ(xi)+b)−1) 約束條件:yi(wT⋅Φ(xi)+b)>=1
上式有三個未知量,w, α,b。如果我們能求得這三個變量之間的關係,即可得到方程的解。我們分別對w和b求偏導,得:
對w求偏導:∂w∂L=0⇒w=1−n∑αiyiΦ(xn)
對b求偏導:∂b∂L=0⇒0=1−n∑αiyi
我們帶入原式即得:
L(w,b,α)=21∣∣w∣∣2−Σαi(yi(wT⋅ϕ(xi)+b)−1)
其中:w=1−n∑αiyiΦ(xn); 0=1−n∑αiyi
=21wTw−wTi=1∑nαiyiΦ(xi)−bi=1∑nαiyi+i=1∑nαi
=i=1∑nαi−21(i=1∑nαiyiΦ(xi)Ti=1∑nαiyiΦ(xi) 完成了第一步求解minL(w,b,α)
=i=1∑nαi−21i=1,j=1∑nαiαjyiyjΦT(xi)ΦT(xj) 求解該式的極值
繼續求解
我們需要求解上式的極大值,添加一個符號,我們轉換爲求解該式的極小值。
即: 21i=1,j=1∑nαiαjyiyjΦT(xi)ΦT(xj)−i=1∑nαi; 條件:i=1∑nαiyi=0;αi>=0
實例求解
我們現在以一個實例,求解上述方程。
我們將上面數據代入即可得:
對α1和α2求偏導即可得: α1=1.5; $ \alpha_2 = -1$
這裏,α2小於0,不滿足約束條件,所以應該在邊界上。此時α1=0或者α2=0.
將α結果代入求解:w=i=1∑nαiyi∣Phi(xn); 平面方程爲:0.5x1+0.5x2−2=0
軟間隔問題
核函數
核函數即爲了解決低維不可分問題,通過核函數將我們的數據轉換到高維的層面,這裏就不多介紹了。我們最常用的一個核函數即爲高斯核函數。