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的主要内容,如果未能解决你的问题,请参考以下文章