支持向量機(SVM)是由分離超平面的判別分類器。換句話說,給定標記的訓練數據(監督學習),算法輸出最佳超平面,其對新示例進行分類。在二維空間中,這個超平面是將平面分成兩部分的線,其中每一類都位於兩側。
本文以一個外行的角度來學習
假設在圖表上給出了兩個標籤類的圖,如圖(A)所示。你能決定一個分類線嗎?
圖A:畫出一條分隔黑色圓圈和藍色方塊的線條
你可能想出了類似於下面的圖像(圖像B)。它將兩個類完全分開。線條左側的任何點都屬於黑色圓圈類,右側屬於藍色方形類。分類。這就是SVM所做的。它找到一條線/超平面(在多維空間中分隔出類)。不久,我們將討論為什麼我寫多維空間。
s圖像B:樣本切割分為兩類
更複雜一點
到現在為止還挺好。現在考慮如果我們有如下圖所示的數據怎麼辦?顯然,沒有可以在這個xy平面中分隔兩個類的直線。那麼我們該怎麼辦?我們應用變換並添加一個維度,我們稱之為z軸。讓我們假設z平面上的點值,w =x+y。在這種情況下,我們可以將它作為點與z原點的距離來操縱。現在,如果我們在z軸上繪圖,則可以看到清晰的分離,並且可以繪製線條。
你能在這個平面上劃一條分界線嗎?
zy軸圖
這樣就可以分離了。
當我們將這條線轉換回原始平面時,它會映射到圓形邊界,如圖E所示。這些轉換稱為內核。
圖E.轉換回xy平面,一條線轉換為圓形
再複雜一些
如果數據圖重疊怎麼辦?或者,如果一些黑點在藍色點內?我們應該畫出哪一個線?
圖1
圖2
你覺得哪一個?其實,兩個答案都是正確的。第一個容忍一些異常點。第二個是嘗試通過完美分區實現0容差。
但是,還有權衡。在實際應用中,為數百萬個訓練數據集尋找完美的類需要花費大量時間。正如您將在編碼中看到的那樣。這稱為正則化參數。在下一節中,我們定義了兩個術語正則化參數和gamma。這些是SVM分類器中的調整參數。調整這些參數,我們可以在合理的時間內以更高的準確度實現相當大的非線性分類線。
另一個參數是內核。它定義了我們是否需要線性分離。這也將在下一節中討論。
調整參數:核函數、正則化C,Gamma和邊距。
核函數
線性SVM中超平面的學習是通過使用一些線性代數轉換問題來完成的。這是內核扮演角色的地方。
對於線性核,使用輸入(x)和每個支持向量(xi)之間的點積來預測新輸入的等式計算如下:
f(x)= B0+ sum(ai *(x,xi))
這是一個方程,涉及使用訓練數據中的所有支持向量計算新輸入向量(x)的內積。必須通過學習算法從訓練數據估計係數B0和ai(對於每個輸入)。
多項式核函數:K(x,xi)=(xxi+1)^d, d=1,2,...,N;
高斯核函數:k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 。
多項式和高斯核函數可以計算更高維度的分離線。這種解決低維難分、可維可分問題的技巧就是核函數技巧。
正則化參數C
正則化參數C反映了SVM優化你希望避免錯誤分類每個訓練示例的程度。
對於較大的C值,如果超平面能夠更好地將所有訓練點分類正確,則優化將選擇邊距較小的超平面。相反,非常小的C值將導致優化器尋找更大邊距的分離超平面,即使該超平面允許分錯更多的點。
下面的圖像是兩個不同正則化參數的示例。較低的正則化值,有一些錯誤分類;值越高,結果就越正確。
低正則化
高正則化
Gamma
Gamma參數定義單個訓練樣例的影響達到的程度,低值表示"遠",高值表示"接近"。換句話說,對於低Gamma,在分離線的計算中考慮遠離可能的分離線的點。高伽瑪意味著在計算中考慮接近合理線的點。
高Gamma
低Gamma
間隔
最後是SVM分類器的最後但非常重要的特性。SVM核心試圖獲得最大的間隔。
間隔是線與最近的類點的距離。
一個很好的邊際是這兩個類的分離更大。下面的圖片給出了好的和壞的邊緣的視覺示例。良好的分隔線允許點在各自的類中,而不會跨越其他類。