雖然標題是說"標準" SVM,不過模型這種東西從來就沒有什麼標準,有的不過是變體。

所以這篇是要跟大家總結一下我們一般在用的 SVM 模型的預設值是長什麼樣子。

我們前面從 maximum-margin classifier 出發,尋找最大 margin 的分類器。

接著,為了解決非線性跟計算效能問題,引進了 kernel trick。

最後,為了避免 overfitting,我們放寬了 margin 成為 soft-margin。

這些都是標準 SVM 的預設配備。

當然還有為了解決計算效能問題,使用了 Lagrange multiplier,由於背後的數學太過煩雜就不介紹了。

簡單來說,Lagrange multiplier 的使用,讓原本的問題(primal problem)可以有另外的對偶問題(dual problem)。

我們只要解了對偶問題,我們就可以解掉原本的問題,雖然有時候會碰到一些限制。

原本問題的陳述是這樣的:

$$
\begin{align}
\mathop{\arg\min}_{\mathbf{w}, b, \boldsymbol{\xi}} &\ \ \ \
\frac{1}{2} \mathbf{w}^T\mathbf{w} + C \sum _{n=1}^N \xi_n \\
\text{subject to} &\ \ \ \
\forall i, y_i (\mathbf{w}^T\mathbf{x_i} + b) \ge 1 - \xi_n \\
\text{ } &\ \ \ \
\forall n, \xi_n \ge 0
\end{align}
$$

轉變成對偶問題然後簡化後的陳述是這樣的:

$$
\begin{align}
\mathop{\arg\min}_{\boldsymbol{\alpha}} &\ \ \ \
\frac{1}{2} \sum _{n=1}^{N} \sum {m=1}^{N} \alpha_n \alpha_m y_n y_m \mathbf{z_n}^T\mathbf{z_m} - \sum {n=1}^N \alpha_n \\
\text{subject to} &\ \ \ \
\sum
{n=1}^{N} \alpha_n y_n = 0, 0 \le \alpha_n \le C \\
\text{ } &\ \ \ \
\mathbf{w} = \sum
{n=1}^{N} \alpha_n y_n \mathbf{z_n}
\end{align}
$$

不要問我怎麼來的,你一問我就要開始另一篇數學了,你會怕。

解完上面的問題,我們可以得到一些資訊,我們可以從 $\alpha_n$ 的數值範圍來得知一個資料點他是不是 support vector。

只要他的值在 $0 < \alpha_n < C$ 這個範圍,他就是 support vector。

我們最後在形成整個 SVM 模型的時候其實只需要這些 support vector 就可以了。

$$
SVM(\mathbf{x}) = sign(\sum_{SV} \alpha_n y_n K(\mathbf{x_n}, \mathbf{x}) + b)
$$