机器学习:SVM(二)——线性支持向量机以及非线性支持向量机
线性支持向量机
- 首先我们给出下面两种情况,如图所示。
第一种数据线性可分,那么肯定存在唯一的超平面将样本完全分开,并满足间隔最大化,此时分类器就是上一篇中的线性可分支持向量机。但是现实情况中完全线性可分情况很少。
第二种数据中,由于蓝绿两个样本的存在,实际上根本不可能存在一个超平面(二维中为直线)将数据完全分开,除非分割面如红线所示(此时已经不是平面,为超曲面)。由于只是少量样本导致的线性不可分(完全或者大多数线性不可分时,需要非线性支持向量机),我们可以将数据集近似看成线性可分,实际上仍然存在无穷超平面可以切分数据集,我们从中选取保证间隔尽量大的同时误分类个数尽量小的超平面即可。这就是所谓的基于软间隔最大化的线性支持向量机。
- 线性不可分,意味着某些样本点不满足函数间隔大于等于1 的约束条件,因此可引入松弛变量,使得约束条件变为:\({y_i}(w \cdot x + b) \ge 1 - {\xi _i}\),对于每个松弛变量,支付一个代价。因此变为如下优化问题$$\begin{array}{l}
\mathop {\min }\limits_{w,b,\xi } ;;;\frac{1}{2}{\left| w \right|^2} + C\sum\limits_{i = 1}^N {{\xi _i}} \
s.t.;;{y_i}(w \cdot x + b) \ge 1 - {\xi _i},\
;;;;;;{\xi _i} \ge 0
\end{array}$$同样为凸二次规划问题,因而解存在,可以证明\(w\)唯一,但\(b\)不唯一(证明参考线性可分支持向量机超平面存在性与唯一性证明,与之类似)。 - 拉格朗日函数$$L(w,b,\xi ,\alpha ,\mu ) = \frac{1}{2}{\left| w \right|^2} + C\sum\limits_{i = 1}^N {{\xi i}} - \sum\limits^N {{\alpha _i}} [{y_i}(w \cdot {x_i} + b) - 1 + {\xi i}] - \sum\limits^N {{\mu _i}{\xi _i}} ,{\alpha _i} \ge 0,{\mu _i} \ge 0$$
- 极小极大问题\(\mathop {\min }\limits_{w,b,\xi } \mathop {\max }\limits_{\alpha ,\mu } L\)与原问题等价。
- 极小极大问题的对偶问题为极大极小问题\(\mathop {\max }\limits_{\alpha ,\mu } \mathop {\min }\limits_{w,b,\xi } L\),满足KKT条件时,可以通过求解对偶问题求解原问题。KKT条件:$$\left{ \begin{array}{l}
{\nabla _w}L = 0\
{\nabla _b}L = 0\
{\nabla _\mu }L = 0\
{\alpha _i} \ge 0\
{y_i}(w \cdot x + b) - 1 - {\xi _i} \ge 0\
{\alpha _i}({y_i}(w \cdot x + b) - 1 - {\xi _i}) = 0\
{\mu _i} \ge 0\
{\xi _i} \ge 0\
{\mu _i}{\xi _i} = 0
\end{array} \right.$$要求对偶问题\(\mathop {\max }\limits_{\alpha ,\mu } \mathop {\min }\limits_{w,b,\xi } L\),先求极小。求偏导并令其为0$$\left{ \begin{array}{l}
{\nabla _w}L = 0\
{\nabla _b}L = 0\
{\nabla _{{\xi i}}}L = 0
\end{array} \right.;;;;;;;;;;;; \Rightarrow \left{ \begin{array}{l}
w = \sum\limits^N {{\alpha i}{y_i}{x_i}} \
\sum\limits^N {{\alpha i}{y_i} = 0} \
C - {\alpha i} - {\mu i} = 0
\end{array} \right.$$将上式带入拉格朗日函数,加负号取极小得最终形式:$$\begin{array}{l}
\mathop {\min }\limits\alpha \frac{1}{2}\sum\limits^N {\sum\limits^N {{\alpha _i}{\alpha j}{y_i}{y_i}({x_i} \cdot {x_j}) - \sum\limits^N {{\alpha i}} } } \
s.t.\left{ \begin{array}{l}
\sum\limits^N {{\alpha _i}{y_i} = 0} \
0 \le {\alpha _i} \le C
\end{array} \right.
\end{array}$$可以看出最终形式与线性可分支持向量机的最终形式一样,只是约束条件略有不同。最终形式求解同样需要SMO算法,求得拉格朗日乘子,然后求得\(w,b\)。需要注意的是由于\(b\)不唯一,实际计算时可以取所有符合条件的值(对应的\(\alpha_i\)>0),然后求均值。 - 支持向量。需要注意的是,线性支持向量机的支持向量与线性可分的定义相同即\(\alpha_i>0\)对应的样本,不同的是他们分布在间隔边界上或边界与超平面之间或者超平面误分一侧。结合KKT条件与函数间隔定义很好理解。
1.\(0<{\alpha_i}<C\)时,根据\(C - {\alpha _i} - {\mu _i} = 0\),可得\({\mu _i} \ne 0 \Rightarrow {\xi _i} = 0\),从而函数间隔为1,正好落在间隔边界上。
2.\({\alpha_i}=C,0< {\xi _i} <1\)时,分类正确,点在间隔与超平面之间。
3.\({\alpha_i}=C, {\xi _i} =1\)时,点在超平面上。
4.\({\alpha_i}=C, {\xi _i} >1\)时,点在超平面误分一侧。 - 合页损失函数。线性支持向量机等价于最小化以下目标函数:$$\sum\limits_{i = 1}^N {{{[1 - {y_i}(w \cdot {x_i} + b)]}_ + }} + \lambda {\left| w \right|^2}$$其中\(L({y_i}(w \cdot {x_i} + b)) = {[1 - {y_i}(w \cdot {x_i} + b)]_ + }\)称为合页损失函数
\({[z]_ + } = \left\{ \begin{array}{l} z,z > 0\\ 0,z \le 0 \end{array} \right.\)证明过程很简单,不再证明。
非线性支持向量机
- 前面说了对于线性可分数据以及近似线性可分数据,都可以寻找一个超平面进行划分,保证较好的泛华能力。但是当数据完全线性不可分时,根本不存在这样的超平面,只能用超曲面区划分,例如下面左图。但是非线性问题往往不好求解,需要变换成线性问题,可以将原空间映射到新的空间,使数据线性可分。
- 核函数。如果存在一个从输入空间(欧式空间或者离散集合)到特征空间(希尔伯特空间)的映射\(\phi (x)\),使得对输入空间中所有\(x,z\),函数\(K(x,z)\)满足\(K(x,z) = \phi (x) \cdot \phi (z)\),则称\(K(x,z)\)为核函数,\(\phi (x)\)为映射函数,\(\phi (x) \cdot \phi (z)\)为内积。需要注意,特征空间一般为高维,甚至无穷维。对于给定核函数,特征空间和映射函数的取法并不唯一。
- 我们 注意到线性支持向量机对偶问题中,都只涉及到输入实例与实例之间的内积,因此可用核函数来代替。下面给出非线性支持向量机算法模型
输入:训练数据集\(T\)
输出:分类决策函数
1.选取适当核函数\(K(x,z)\)和适当参数\(C\),求解最优化问题$$\begin{array}{l}
\mathop {\min }\limits_\alpha \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {{\alpha _i}{\alpha j}{y_i}{y_i}K({x_i},{x_j}) - \sum\limits^N {{\alpha i}} } } \
s.t.\left{ \begin{array}{l}
\sum\limits^N {{\alpha _i}{y_i} = 0} \
0 \le {\alpha i} \le C
\end{array} \right.
\end{array}$$
2.选择\(\alpha\)的一个大于0分量\(\alpha_j\)对应实例,计算$b = {y_j} - \sum\limits^N {{\alpha _i}{y_i}K({x_i},{x_j})} \( 3.分类决策函数:\)\(f(x) = sign(\sum\limits_{i = 1}^N {{\alpha _i}{y_i}K({x_i},x)} + b)\)$ - 学习是隐式地在特征空间进行,不需要显式地定义特征空间与映射函数,这样的技巧称为核技巧。在实际应用中,往往依赖领域专业知识直接选择核函数,核函数选择的有效性需要通过实验验证。常用的包括线性核,多项式核函数,高斯核函数(对应的是高斯径向基函数分类器),拉普拉斯核函数,sigmoid核函数,字符串核函数等。
如有错误,欢迎批评指正。转载请注明出处。沟通交流liuyingxinwy@163.com