OpenCV-Python 使用SVM

目標

在這一章中

  • 我們將對SVM有一個直觀的瞭解

理論

線性可分數據

考慮下面的圖像,它具有兩種數據類型,紅色和藍色。在kNN中,對於測試數據,我們用來測量其與所有訓練樣本的距離,並以最小的距離作為樣本。測量所有距離都需要花費大量時間,並且需要大量內存來存儲所有訓練樣本。但是考慮到圖像中給出的數據,我們是否需要那麼多?

OpenCV-Python 使用SVM

考慮另一個想法。我們找到一條線$f(x)=ax_1 + bx_2+c$,它將兩條數據都分為兩個區域。當我們得到一個新的test_data $X$時,只需將其替換為$f(x)$即可。如果$f(X)> 0$,則屬於藍色組,否則屬於紅色組。我們可以將此行稱為“決策邊界”。它非常簡單且內存高效。可以將這些數據用直線(或高維超平面)一分為二的數據稱為線性可分離數據。

因此,在上圖中,你可以看到很多這樣的行都是可能的。我們會選哪一個?非常直觀地,我們可以說直線應該從所有點儘可能遠地經過。為什麼?因為傳入的數據中可能會有噪音。此數據不應影響分類準確性。因此,走最遠的分離線將提供更大的抗干擾能力。因此,SVM要做的是找到到訓練樣本的最小距離最大的直線(或超平面)。請參閱下面圖像中穿過中心的粗線。

OpenCV-Python 使用SVM

因此,要找到此決策邊界,你需要訓練數據。那麼需要全部嗎?並不用。僅接近相反組的那些就足夠了。在我們的圖像中,它們是一個藍色填充的圓圈和兩個紅色填充的正方形。我們可以稱其為支撐向量,通過它們的線稱為支撐平面。它們足以找到我們的決策邊界。我們不必擔心所有數據。它有助於減少數據量。

接下來,找到了最能代表數據的前兩個超平面。例如,藍色數據由$w^Tx+b_0>-1$表示,紅色數據由$wTx+b_0權重向量($w=[w_1,w_2,...,w_n]$),$x$是特徵向量($x =[x_1,x_2,...,x_n]$)。$b_0$是偏置。權重矢量確定決策邊界的方向,而偏置點確定其位置。現在,將決策邊界定義為這些超平面之間的中間,因此表示為$w^Tx + b_0 = 0$。從支持向量到決策邊界的最小距離由$distance_{support vectors}=\\frac{1}{|w|}$給出。間隔是此距離的兩倍,因此我們需要最大化此間隔。也就是說,我們需要使用一些約束來最小化新函數$L(w,b_0)$,這些約束可以表示如下:


OpenCV-Python 使用SVM

其中$t_i$是每類的標籤,t_i∈[-1,1]

非線性可分數據

考慮一些不能用直線分成兩部分的數據。例如,考慮一維數據,其中'X'位於-3和+3,而'O'位於-1和+1。顯然,它不是線性可分離的。但是有解決這些問題的方法。如果我們可以使用函數$f(x)=x^2$映射此數據集,則在線性可分離的9處獲得'X',在1處獲得'O'。

否則,我們可以將此一維數據轉換為二維數據。我們可以使用$f(x)=(x,x^2)$函數來映射此數據。然後,'X'變成(-3,9)和(3,9),而'O'變成(-1,1)和(1,1)。這也是線性可分的。簡而言之,低維空間中的非線性可分離數據更有可能在高維空間中變為線性可分離。

通常,可以將d維空間中的點映射到某個D維空間$(D> d)$,以檢查線性可分離性的可能性。有一個想法可以通過在低維輸入(特徵)空間中執行計算來幫助在高維(內核)空間中計算點積。我們可以用下面的例子來說明。

考慮二維空間中的兩個點,$p=(p_1,p_2)$和$q=(q_1,q_2)$。令$ϕ$為映射函數,它將二維點映射到三維空間,如下所示:

OpenCV-Python 使用SVM

讓我們定義一個核函數$K(p,q)$,該函數在兩點之間做一個點積,如下所示:


OpenCV-Python 使用SVM


這意味著,可以使用二維空間中的平方點積來實現三維空間中的點積。這可以應用於更高維度的空間。因此,我們可以從較低尺寸本身計算較高尺寸的特徵。一旦將它們映射,我們將獲得更高的空間。

除了所有這些概念之外,還存在分類錯誤的問題。因此,僅找到具有最大間隔的決策邊界是不夠的。我們還需要考慮分類錯誤的問題。有時,可能會找到間隔較少但分類錯誤減少的決策邊界。無論如何,我們需要修改我們的模型,以便它可以找到具有最大間隔但分類錯誤較少的決策邊界。最小化標準修改為:$\\min |w|^2+C$(分類錯誤的樣本到其正確區域的距離)下圖顯示了此概念。對於訓練數據的每個樣本,定義一個新的參數$ξ_i$。它是從其相應的訓練樣本到其正確決策區域的距離。對於那些未分類錯誤的樣本,它們落在相應的支撐平面上,因此它們的距離為零。

OpenCV-Python 使用SVM

因此,新的優化函數為:


OpenCV-Python 使用SVM

如何選擇參數C?顯然,這個問題的答案取決於訓練數據的分佈方式。儘管沒有一般性的答案,但考慮以下規則是很有用的:

  • C的值越大,解決方案的分類錯誤越少,但寬度也越小。考慮到在這種情況下,進行錯誤分類錯誤是昂貴的。由於優化的目的是最小化參數,因此幾乎沒有誤分類的錯誤。
  • C的值越小,解決方案的寬度就越大,分類誤差也越大。在這種情況下,最小化對總和項的考慮不多,因此它更多地集中在尋找具有大間隔的超平面上。

附加資源

  1. NPTEL notes on Statistical Pattern Recognition, Chapters 25-29.練習


分享到:


相關文章: