如何理解SVM算法
1. SVM算法概述
SVM算法(support vector machine,支持向量机),是一种二分类算法,可以分为线性SVM算法和非线性SVM算法,线性SVM指的是通过高维空间的超平面做分类,非线性SVM指通过高维空间中的曲面做分类。关于线性SVM又可以分为线性可分SVM算法和线性不可分SVM算法,对于线性可分的样本,采用的分割方法为间隔最大化,对于线性不可分的样本,如果使用线性分类方法,那么无法避免要产生错误的分类,这时候需要在容许一定误差的情况下做到间隔最大化。非线性SVM算法其实是通过低维空间向高维空间的映射来完成的,映射的过程需要用到核函数。
2. 线性可分SVM算法
给定线性可分训练数据集,通过间隔最大化来寻找分离超平面,如下图所示
![](https://i-blog.csdnimg.cn/blog_migrate/0e4e905f8d49acb9b6d5ac344910991c.png)
(2.1) f ( x ) = s i g n ( ω ∗ ⋅ x + b ) f(x) = sign(\pmb \omega^* \cdot \pmb x + b) \tag{2.1} f(x)=sign(ωωω∗⋅xxx+b)(2.1)
待判别的类型取值为{-1, 1}
间隔距离指的是正样本到分类超平面的距离与负样本到超平面的距离之和,距离如下
d = 2 ∣ ω ∣ d = \frac{2}{|\pmb\omega|} d=∣ωωω∣2
因此对于解决线性可分SVM算法,等价于最大化d,既有下式
(2.2) max ω , b 2 ∣ ω ∣ \max_{\omega, b} \frac{2}{|\pmb\omega|} \tag{2.2} ω,bmax∣ωωω∣2(2.2)
(2.3) s . t . y i ( ω ∗ x i + b ) ≥ 1 s.t. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y_i(\pmb \omega * x_i + b) \ge 1 \tag{2.3} s.t. yi(ωωω∗xi+b)≥1(2.3)
上式通过等价可以转换为
(2.4) min ω , b 1 2 ∣ ∣ ω ∣ ∣ \min_{\omega, b}\frac{1}{2}||\pmb\omega|| \tag{2.4} ω,bmin21∣∣ωωω∣∣(2.4)
(2.5) s . t . y i ( ω ∗ x i + b ) ≥ 1 s.t. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ y_i(\pmb \omega * x_i + b) \ge 1 \tag{2.5} s.t. yi(ωωω∗xi+b)≥1(2.5)
通过拉格朗日法,可以将上面最优化式子转化为
(2.6) max α min ω , b L ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ − ∑ i = 1 N α i y i ( ω ⋅ x i + b ) + ∑ i = 1 N α i \max_{\alpha}\min_{\omega, b}L(\pmb\omega, b, \pmb\alpha) = \frac{1}{2}||\pmb\omega|| - \sum_{i=1}^N{\alpha_iy_i(\pmb\omega\cdot x_i + b)} + \sum_{i=1}^{N}\alpha_i \tag{2.6} αmaxω,bminL(ωωω,b,ααα)=21∣∣ωωω∣∣−i=1∑Nαiyi(