SVM

Posted dannix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVM相关的知识,希望对你有一定的参考价值。

二类分类模型

模型:在特征空间上的间隔最大的线性分类器求解凸优化(凸二次规划)

1、线性可分支持向量机

 

利用间隔最优化求最优分离超平面,解是唯一的;

$$\omega ^\ast \cdot x+b^\ast =0$$

分类决策函数

$$f(x)=sign(\omega ^\ast \cdot x+b^\ast )$$

点到超平面的距离,反映了分类预测的确信程度

函数间隔:(硬间隔)

$\widehat\gamma =\undersetimin\widehat\gamma _i$

$\widehat\gamma _i=y_i(\omega x_i+b)$

几何间隔

$$\widehat\gamma =\undersetimin\widehat\gamma _i=\frac\omega \left \| \omega  \right \|\cdot _i+\fracb\left \| \omega  \right \|$$

无论给$\omega x_i+b=0$左右乘入,并不会改变分类结果;

最大间隔分离超平面(几何间隔)存在唯一性

约束最优化问题

$\undersetw,bmax\gamma$

$s.t. y_i(\fracw\left \| w \right \|x_i+\fracb\left \| w \right \|)\geq \gamma$

等价于

$\undersetw,bmin\frac12\left \| w \right \|^2$

$s.t. y_i(wx_i+b)-1\geq 0$

 支持向量:在线性可分情况下,训练数据集中的样本点中与分离超平面距离最近的样本点实例;

即,使约束条件式,$y_i(\omega x_i+b)-1=0$成立的点

在决定分离超平面时,只有支持向量起左右,其实实例不起作用

求该最优化问题的解(拉格朗日对偶性)

 

SVM问题的求解,即求w,b时;不用梯度下降的,而是直接计算出$f‘(x)=0$时的x,即该问题的解;

2、线性支持向量机与软间隔最优化

适用于线性不可分数据

引入松弛变量$\xi _i$

线性不可分的线性支持向量机的学习

$\undersetw,b,\xi min\frac12\left \| \omega  \right \|^2+C\sum_i=1^N\xi _i$

s.t.$y_i(\omega x_i+b)\geq 1-\xi _i$

$c> 0$

$\xi _i\geq 0$

等价于

合页损失函数

$L=\sum_i=1^N\left [ 1-y_i(wx_i+b) \right ]_++\lambda \left \| w \right \|^2$

w的解不唯一,b的解不唯一,存在于一个区间;

最小化损失函数L,最优化线性支持向量机相当于求minL最小损失函数

学习的对偶算法

$$L(\omega ,b,\xi ,\alpha _i,\mu )=\frac12\left \| \omega  \right \|^2+C\sum_i=1^N\xi _i-\sum_i=1^N\alpha _i(y_i(\omega\cdot x_i+b)-1+\xi _i)-\sum_i=1^N\mu _i\xi _i$$

 

3、非线性支持向量机与核函数

非线性变换:

将非线性分类问题变成线性分类问题

核函数

通过定义内积$k(x,z)=\varphi (x) \cdot \varphi (z)$

x和z均为原空间的点

非显示的定义了$\varphi (x)$

$\varphi (x)$是将x有X映射到H,提高维度;

将非线性问题转换为线性问题;

在SVM在对偶问题的目标函数中内积$x_i\cdot x_j$

可用核函数$k(x,z)=\varphi (x) \cdot \varphi (z)$代替

kernel的引入可以把数据从低维映射到高维,解决原本数据线性不可分问题;

寻找新特征(高阶特征)

高斯kernel

$f_i=similarity(x,l)=ecp(-\frac\left \| x-l^(i) \right \|^22\sigma ^2)=K(x,l^(i))$

还有一些其他kernel,例如:多项式kernel、string kernel等,但都很少用到; 

kernel衡量变量x和参考点$l^(i)$的相似程度

$\beginmatrix
if & x\approx l^i  & f_i\doteq exp(0)\approx 0\\
if & x family l^i  & f_i\doteq exp(-large)\approx 0
\endmatrix$

靠近$l^i $的点是1,远离$l^i $的点是0

这样可以训练出复杂的非线性决策边界;

如何选择参考点$l^i $

将所有测试集选为参考点

 

 

SVM的推导

1)

$\undersetw,bmax\gamma$

 $s.t. y_i(\fracw\left \| w \right \|x_i+\fracb\left \| w \right \|)\geq \gamma$

2)

$\undersetw,bmax\frac\gamma\left \| w \right \|$

$s.t. y_i(wx_i+b)\geq \gamma$

3)w和b按比例乘对分类无影响

$\undersetw,bmax\frac1\left \| w \right \|$

$s.t. y_i(wx_i+b)\geq 1$

4)

$\undersetw,bmin\frac12\left \| w \right \|^2$

$s.t. y_i(wx_i+b)-1\geq 0$

5)引入拉格朗日乘子,定义拉格朗日函数

$L(w,b,\alpha )=\frac12\left \| w \right \|^2-\sum_i=1^N\alpha _iy_i(wx_i+b)+\sum_i=1^N\alpha _i$

求$\undersetw,bmin\underset\alpha maxL(w,b,\alpha )$

6)对偶问题

$\underset\alpha max\undersetw,bminL(w,b,\alpha )$

7)求$\undersetw,bminL(w,b,\alpha )$,L分别对w,b求偏导=0

$\frac\partial L\partial w=w-\sum_i=1^N\alpha _iy_ix_i=0$

$\frac\partial L\partial w=-\sum_i=1^N\alpha _iy_i=0$

8)将7)带入5)可得

$L(w,b,\alpha )=\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j(x_iy_j)-\sum_i=1^N\alpha _iy_i (  ( \sum_j=1^N \alpha _jy_jx_j ) x_i+b )+\sum_i=1^N\alpha _i$

$L(w,b,\alpha )=-\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j(x_iy_j)+\sum_i=1^N\alpha _i$

即$\undersetw,bminL(w,b,\alpha )=-\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j(x_iy_j)+\sum_i=1^N\alpha _i$

9)

对$\undersetw,bminL$求max

$\underset\alpha max-\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j(x_iy_j)+\sum_i=1^N\alpha _i$

$s.t.\sum_i=1^N\alpha _iy_j$

$\alpha _i\geq 0$

10)

$\underset\alpha min\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j(x_iy_j)-\sum_i=1^N\alpha _i$

$s.t.\sum_i=1^N\alpha _iy_j$

$\alpha _i\geq 0$

11)对$\alpha _i$求偏导,求满足条件的$\alpha _i$

12)根据KKT条件

$w=\sum_i=1^N\alpha _iy_ix_i$

$b=y_j-\sum_i=1^N\alpha _iy_i(x_ix_j)$

 

原问题是凸二次规划问题,转换为对偶问题更高效,且同解

只用求解$\alpha$,$\alpha$只有支持向量\neq0,其他=0   ????

$\alpha_i$共有样本个数个;

 

SVM防止过拟合:加入松弛变量

 

 

SVM  VS  LR

相同点:

1、分类算法

2、(不考虑核函数时)线性分类

3、监督学习

4、判别模型

不同点:

1、损失函数不同

LR:$L=-\frac1m[\sum_i=1^m(y_i\log \widehaty_i+(1-y_i)\log (1-y_i))]$

SVM:$L=\frac12\left \| w \right \|^2-\sum \alpha _i(y_i(wx_i+b)-1)$

2、SVM只考虑局部的边界线附近的点,LR考虑全局;

SVM不直接依赖于数据,只要支持向量不变;

LR只要数据改变就会受影响(当数据不平衡是,一定要先balancing)

3、SVM的损失自带正则项,结构风险最小化,而LR没有,需要加正则项;

4、SVM会用核函数,LR一般不用;

5、小规模数据用SVM,大规模数据用SVM太复杂,LR常用;

n特征数

m训练样本数

若n>>m,n很大,n=10000,m=10-1000,用LR,SVM(without a kernel = linear kernel)

若n小,m适中,n=1-1000,m=10-10000,用SVM(with Gaussion kernel)
若n小,m很大,n=1-1000,m=50000+,增加更多特征,用LR,SVM(without a kernel = linear kernel)效果相似;

 

以上是关于SVM的主要内容,如果未能解决你的问题,请参考以下文章

svm原理之svm分类超平面

支持向量机SVM

SVM-支持向量机线性SVM分类

理解SVM——入门SVM和代码实现

SVM→8.SVM实战→3.调节SVM参数

SVM 支持向量机