給定二維空間中的一組點,如何為 SVM 設計決策功能?
有人可以解釋一下如何設計 SVM 決策函數嗎?或者指向我討論一個具體示例的資源。
編輯
對於下面的示例,我可以看到等式分隔具有最大邊距的類。但是我如何調整權重並以以下形式編寫超平面的方程。
在考慮更高維度之前,我試圖在二維空間中正確理解基礎理論(因為它更容易可視化)。
我已經為此制定了解決方案有人可以確認這是否正確嗎?
權重向量為 (0,-2) 且 W_0 為 3
至少有兩種方法可以激發 SVM,但我將在這裡採取更簡單的方法。
現在,暫時忘記你對 SVM 的所有了解,只關注手頭的問題。給你一組分數連同一些標籤() 來自. 現在,我們試圖在 2D 中找到一條線,使得所有帶有標籤的點落在直線的一側和帶有標籤的所有點落在另一邊。
首先要認識到是一條 2D 線,並且代表線的“一側”和代表線的“另一邊”。
從上面我們可以得出結論,我們想要一些向量這樣, 對於所有點和和對於所有點和[1]。
讓我們假設這樣一條線確實存在,那麼我可以通過以下方式定義一個分類器,
我在上面使用了任意目標函數,目前我們並不關心使用哪個目標函數。我們只想要一個滿足我們的約束。由於我們假設存在一條線,因此我們可以用這條線將兩個類分開,我們將找到上述優化問題的解決方案。
上面不是 SVM,但它會給你一個分類器:-)。然而,這個分類器可能不是很好。但是你如何定義一個好的分類器呢?一個好的分類器通常是在測試集上表現良好的分類器。理想情況下,你會盡一切可能就是將您的訓練數據分開,並查看其中哪些在測試數據上表現良好。然而,有無限的,所以這是相當無望的。相反,我們將考慮一些啟發式方法來定義一個好的分類器。一種啟發式方法是,分隔數據的線將與所有點足夠遠(即,點和線之間總是存在間隙或邊緣)。其中最好的分類器是具有最大邊距的分類器。這就是在 SVM 中使用的東西。
而不是堅持對於所有點和和對於所有點和, 如果我們堅持對於所有點和和對於所有點和,那麼我們實際上是在堅持點離線很遠。與此要求對應的幾何裕度為.
因此,我們得到以下優化問題,
寫這個的一個稍微簡潔的形式是,
這基本上是基本的 SVM 公式。為簡潔起見,我跳過了很多討論。希望我仍然通過了大部分想法。
解決示例問題的 CVX 腳本:
A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1]; b = ones(8, 1); y = [-1; -1; -1; -1; 1; 1; 1; 1]; Y = repmat(y, 1, 3); cvx_begin variable w(3) minimize norm(w) subject to (Y.*A)*w >= b cvx_end
附錄 - 幾何邊距
上面我們已經要求我們尋找這樣或一般來說. 您在這裡看到的 LHS 稱為功能餘量,所以我們在這裡要求的是功能餘量. 現在,我們將嘗試計算給定功能裕度要求的幾何裕度。
什麼是幾何邊距?幾何邊距是正例中的點與負例中的點之間的最短距離。現在,上面要求的距離最短的點的功能餘量可以大於等於1。但是,讓我們考慮極端情況,當它們最接近超平面時,即最短點的功能餘量完全相等1. 讓是正例上的點 是一個點,使得和是反例上的點 是這樣的點. 現在,之間的距離和將是最短的時候垂直於超平面。
現在,有了以上所有信息,我們將嘗試找到這是幾何邊距。
[1] 你選擇哪一方實際上並不重要和. 你只需要與你選擇的任何東西保持一致。