從零開始SVM算法(1)-SVM是什么


SVM存在的意義

要了解SVM存在的意義,首先從下面一個簡單的二維數據集例子開始。



上面是一個線性可分的數據集。所謂線性可分,就是可以用一條直線將兩類數據點完全分開。在圖中,我們用圈圈表示負類,用加號表示正類。假設現在要用一條直線將正類和負類完全分開,顯然會有無窮多個解,有無限多條直線可以完全分開正類和負類。

下圖顯示了其中一條可以完全區分兩類的直線



圖中的Decision Boundary既是決策邊界,在決策邊界右邊的點被分類為正類,在決策邊界左邊的點被分類為負類。既然有無窮多的直線可以區分訓練集的兩類,那么是否有一個標準能夠度量決策邊界的優劣,從而在無窮多個直線當中選擇一個最好的作為決策邊緣,區分未知的點呢?答案是肯定的,這也是SVM存在的意義。SVM可以用來度量決策邊界的優劣,下面我們將介紹SVM(支持向量機)對決策邊界的度量規則,從而選出SVM認為的最好的決策邊界。

SVM規則


這里我們還是以剛剛的決策邊界為例子。在這幅圖里,我們增加了一條與決策邊界垂直,與最近的數據點相連的線段。這條線段的長度,我們稱之為Margin。換句話說,Margin就是所有數據點到決策邊界的最短距離。

SVM規定,在決策邊界能夠完全正確劃分正負類的前提下,Margin的值越大越好。SVM算法目的就是要找出找出滿足這兩個條件的直線。因此SVM也稱為Large-Margin算法。

Margin值越大越好的原因

下面我們用另一個Margin值比較小的決策邊界作為例子,對比說明Margin值較大的好處。

假設現在用此決策邊界預測圖中綠色點的類別,很明顯該點位于決策邊界的左邊,該點應該被分為負類。但是,在收集數據的時候,可能會存在誤差。假設在數據收集的時候,某一誤差使得綠色的點從原來的位置移動到了紅色點的位置,即x1特征由于誤差從0.2變成0.4。此時,紅色點落在了決策邊界的右邊,決策邊界判定這個點為正類,因此分類錯誤。

現在我們重新看回之前一個較大Margin的決策邊界例子。


我們對同樣的情況進行分析,即綠色點由于誤差,使其位置從原來的位置移動到了紅色點的位置。這個時候,紅色點依然在決策邊界的左邊,決策邊界判定這個點為負類點,此時對該點分類正確。

從上面兩個例子可以看出,越大的Margin對誤差的容忍度就越好。這能一定程度減小過擬合的問題。所以SVM規定,Margin值越大,決策邊界越優,能夠容忍更大的測量誤差。

為什么要命名為支持向量機

很多人必定對支持向量機這個名字感到很疑惑。要知道支持向量機的命名緣由,首先要弄清楚什么是支持向量。下面我們還是以原來的例子說明這個問題。

在坐標里的每一個點都由多個維度組成,任何一個點都可以寫成多維向量的形式,維度的值是每個特征對應的值。因此每一個點也可以稱作是一個向量。圖中的虛線是兩條邊緣,兩條邊緣得到的方式是讓兩條平行于決策邊界的線向兩側平行移動,直到任意一條邊緣與圖中任意一個點有交集的時候,停止移動。

在支持向量機算法中,我們最終需要得到的是在能百分百區分正負類的前提下,得到一條擁有最大Margin的直線。Margin的值就是其中一條邊緣到決策邊界的距離。

我們很容易看出,Margin的大小僅僅和落在兩條虛線上的數據點有關系,直線之外的點不管怎么變化,Margin的值都不會改變。這個算法僅僅需要落在兩條虛線上的點的支持,其它點(圖中虛化的點)可以不存在。因此我們可以把落在虛線上的點稱為支持點。前面我們提到,一個點也可以稱為一個向量,因此,我們或許可以把落在虛線上的點稱為支持向量。

然而,落在虛線上的點僅僅能稱作支持向量候選(Support Vector Candidate), 支持向量候選和支持向量的區別在后續的章節會有說明。SVM算法其實就是靠支持向量來計算最大Margin的一個算法,因此將其命名為支持向量機。

總結

在這一章簡單介紹了SVM的存在意義。在后續的章節里,將會用幾何以及高等數學的知識,推理SVM的計算過程,得到一個最佳的決策邊界。在本章節里,只是介紹了線性SVM,所謂線性SVM就是用SVM解決線性可分的數據集問題。對于線性不分的情況,SVM也會有相應的方法解決,在后續的章節里也會有詳細的推導。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容