讀古今文學網 > 機器學習實戰 > 6.1 基於最大間隔分隔數據 >

6.1 基於最大間隔分隔數據

支持向量機

優點:泛化錯誤率低,計算開銷不大,結果易解釋。 缺點:對參數調節和核函數的選擇敏感,原始分類器不加修改僅適用於處理二類問題。 適用數據類型:數值型和標稱型數據。

在介紹SVM這個主題之前,先解釋幾個概念。考慮圖6-1中A-D共4個方框中的數據點分佈,一個問題就是,能否畫出一條直線將圓形點和方形點分開呢?先考慮圖6-2方框A中的兩組數據,它們之間已經分隔得足夠開,因此很容易就可以在圖中畫出一條直線將兩組數據點分開。在這種情況下,這組數據被稱為線性可分(linearly separable)數據。讀者先不必擔心上述假設是否過於完美,稍後當直線不能將數據點分開時,我們會對上述假設做一些修改。

圖6-1 4個線性不可分的數據集

上述將數據集分隔開來的直線稱為分隔超平面(separating hyperplane)。在上面給出的例子中,由於數據點都在二維平面上,所以此時分隔超平面就只是一條直線。但是,如果所給的數據集是三維的,那麼此時用來分隔數據的就是一個平面。顯而易見,更高維的情況可以依此類推。如果數據集是1024維的,那麼就需要一個1023維的某某對像來對數據進行分隔。這個1023維的某某對像到底應該叫什麼?N-1維呢?該對像被稱之為超平面(hyperplane),也就是分類的決策邊界。分佈在超平面一側的所有數據都屬於某個類別,而分佈在另一側的所有數據則屬於另一個類別。

我們希望能採用這種方式來構建分類器,即如果數據點離決策邊界越遠,那麼其最後的預測結果也就越可信。考慮圖6-2框B到框D中的三條直線,它們都能將數據分隔開,但是其中哪一條最好呢?是否應該最小化數據點到分隔超平面的平均距離來求最佳直線?如果是那樣,圖6-2的B和C框中的直線是否真的就比D框中的直線好呢?如果這樣做,是不是有點尋找最佳擬合直線的感覺?是的,上述做法確實有點像直線擬合,但這並非最佳方案。我們希望找到離分隔超平面最近的點,確保它們離分隔面的距離盡可能遠。這裡點到分隔面的距離被稱為間隔1(margin)。我們希望間隔盡可能地大,這是因為如果我們犯錯或者在有限數據上訓練分類器的話,我們希望分類器盡可能健壯。

本書中有兩個間隔的概念:一個是點到分隔面的距離,稱為點相對於分隔面的間隔;另一個是數據集中所有點到分隔面的最小間隔的2倍,稱為分類器或數據集的間隔。一般論文書籍中所提到的「間隔」多指後者。SVM分類器是要找最大的數據集間隔。書中沒有特意區分上述兩個概念,請根據上下文理解。——譯者注

支持向量(support vector)就是離分隔超平面最近的那些點。接下來要試著最大化支持向量到分隔面的距離,需要找到此問題的優化求解方法。

圖6-2 A框中給出了一個線性可分的數據集,B、C、D框中各自給出了一條可以將兩類數據分開的直線