Hard Margin svm 对应的是soft Margin svm,这里不做解释.本篇博客主要将一些Primal SVM的基本知识,但是不会有太多的公式证明,只是个人理解.这里先剧透一下,对于Hard Margin svm,我会写三篇博文.$ $

问题由来

svm_problem
对于上述分类哪一个最好?

Maximum Margin

上面的分类,我们应该选择最右边那个,因为这条线可以使得到最近的分类点到直线的距离最大,就是我们这里所说的maximum margin.

理论

对于线性分类我们自然有如下的假设函数:

\[ h_{w,b}(x)=g(w^{T}x+b)\\ g(z)=\left\{\begin{matrix} 1& z\geq 0\\ -1&z< 0 \end{matrix}\right. \]

接下来就是如何求最大距离:
第一:距离

\[ distance(x,b,w)=\frac{1}{||w||}|w^{T}x+b| \]

上面公式表示分类点到超平面的距离,这是有严格的证明的,推荐看一下林轩田的课程,但也可看成点到直线的距离的延伸

\[ d=\frac{Ax_{0}+By_{0}+C}{\sqrt{A^{2}+B^{2}}} \]

第二:最小化距离
为什么要最小化?因为我们要找最近的点到直线的距离,那不就是在所有点到直线的距离中找出那个最小的距离.定义margin:

\[ margin(w,b)=\min \quad \frac{1}{||w||}|w^{T}x+b| \]

第三:最大化margin
那么我们的目标就是:

\[ \max\limits_{w,b} \quad margin(w,b) \]

其实我们并不是对所有的\(w,b\)感兴趣,我们其实只对将数据完全分开的\(w,b\)感兴趣 由于数据线性可分,必然有这样的直线(即\(w,b\))存在,而且使得(好好想想就明白了):

\[ y_{n}(w^{T}x_{n}+b)>0 \]

那么我们的目标就是:

\[ \begin{align} &\max\limits_{w,b} \quad margin(w,b)\\ 而且:\\ &margin(w,b)=\min \quad \frac{1}{||w||}y_{n}(w^{T}x_{n}+b)\\ &y_{n}(w^{T}x_{n}+b)>0 \end{align} \]

令:

\[ \min \quad y_{n}(w^{T}x_{n}+b)=1 \]

则:

\[ \begin{align} &\max\limits_{w,b} \frac{1}{||w||}\\ 而且:\\ \min \quad &y_{n}(w^{T}x_{n}+b)=1 \end{align} \]

上面的假设为什么不影响结果是有严格的数学证明,形象的说就是数据缩放,但是最近的点依然还是最近的点,只是它满足了某个条件了而已

接着就是最大化变成最小化,以及假设条件放宽松一点:

\[ \begin{align} &\min\limits_{w,b} \frac{1}{2}w^{T}w\\ 而且:\\ &y_{n}(w^{T}x_{n}+b)\geqslant1 \end{align} \]

第四:QP(quadratic programming)问题

我们最后的问题是典型的二次QP问题,可以使用现有的软件来解决,QP的具体原理这里就不说了.