统计学习方法——支持向量机

前面我们已经讲了感知机,感知机算法的思想就是先随机初始化一个超平面,然后根据分类错误的样本不断调整超平面的参数,直到所有的样本都分类正确。但是感知机存在以下缺陷:

(1) 当存在一个超平面可以将正负样本完全分开时,这样的超平面会有无数条;

(2) 模型的鲁棒性不好:我们找到的超平面是刚好可以把正负样本分开,当我们增加数据量时,这个超平面很可能就无法正确分类了;

(3) 对初始参数敏感:初始化参数不同时,感知机最后得到的分类超平面可能会不同。

为了解决以上问题,支持向量机就出现了。我们需要找到唯一一个分类效果最好的超平面,如何确定分类效果呢?通过分类间隔!分类间隔越大,分类效果越好。我们先来确定一下间隔的概念。

样本:\left \{ (x_1, y_1), (x_2,y_2),...,(x_n, y_n) \right \}, y_i\in \left \{ -1, 1 \right \}

样本(x_i, y_i)与超平面\omega x+b=0的函数间隔: \hat{\gamma }=y_i(\omega x_i+b),当样本正确分类时,\hat{\gamma }>0;分类错误时\hat{\gamma }<0。但是函数间隔存在一个问题,当我们将平面修改为2\omega x+2b=0时,超平面的位置并未发生改变,但是函数间隔变为了原来的2倍。所以单纯的用函数间隔的大小无法衡量分类效果的好坏。我们需要增加约束条件,如限制x前面的参数\left \| \omega \right \|=1,那么我们的超平面公式为\frac{\omega }{\left \| \omega \right \|}x+\frac{b}{\left \| \omega \right \|}=0,定义函数间隔:\gamma =y_i(\frac{w}{\left \| \omega \right \|}x+\frac{b}{\left \| \omega \right \|})。那么我们可以用函数间隔来判断模型的性能了。

线性可分支持向量机

假设我们的数据是线性可分的,既然间隔是用来表示样本到超平面的距离,那么我们的目标当然是让间隔越大越好了:

max \gamma \\ s.t. y_i(\frac{w}{\left \| \omega \right \|}x_i+\frac{b}{\left \| \omega \right \|})>\gamma

用函数间隔来表示:

max \frac{\hat{ \gamma}}{\left \| \omega \right \|} \\ s.t. y_i(\omega x_i+b)>\hat{\gamma}

既然我们前面都说了,函数间隔是会随着超平面参数的成倍改变而改变的,那么它的大小对于超平面的选择是没有影响的,我们令\hat{\gamma }=1,这是我们的目标变为:

max \frac{1}{\left \| \omega \right \|} \\ s.t. y_i(\omega x_i+b)>1

将最大化目标函数转为最小化:

min \frac{1}{2}\left \| \omega \right \|^2\\ s.t. y_i(\omega x_i+b)>1

引入拉格朗日对偶化,通过求解对偶问题,得到原始问题的解,定义拉格朗日函数:

\min_{\omega,b}\max_{\alpha }L(\omega, b, \alpha )=\min_{\omega,b}\max_{\alpha }\left [\frac{1}{2}\left \| \omega \right \|^2+\sum_{i=1}^{n}\alpha_i(1-y_i(wx_i+b)) \right ], \alpha _i\geqslant 0

根据拉格朗日对偶性,原始问题可以转为极大极小问题:

\max_{\alpha }\min_{\omega,b}L(\omega, b, \alpha )

我们先求\omega ,b的极小问题,再求\alpha的极大化问题。

根据\frac{\partial L}{\partial \omega }=0;\frac{\partial L}{\partial b }=0可得:

\frac{\partial L}{\partial \omega } = \omega -\sum_{i=1}^{n}\alpha_iy_ix_i=0\frac{\partial L}{\partial b} =-\sum_{i=1}^{n}\alpha_iy_i=0,得:\omega =\sum_{i=1}^{n}\alpha_iy_ix_i,  \sum_{i=1}^{n}\alpha_iy_i=0

代入目标函数:

L(\omega , b, \alpha )\\ = \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_jx_ix_j-\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_jx_ix_j-\sum_{i=1}^{n}\alpha _iy_ib+\sum_{i=1}^{n}\alpha _i\\ =- \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_jx_ix_j+\sum_{i=1}^{n}\alpha _i

后面我们需要做的就是最大化关于\alpha的目标函数L了,这里因为一共有n个需要优化的参数,当样本量非常大时,求解就会变得困难,可以用启发式的方法来求解参数,如SMO,具体的我们后面再讲。

假设我们已经求解了\alpha,现在我们如何进行分类呢?当拉格朗日函数满足KKT条件时,原始问题解和对偶问题的解一致。KKT条件中有\alpha_i(1-y_i(\omega x_i+b))=0,我们需要做的就是找到一条数据对应的\alpha_i^*不为0,则有1-y_i(\omega x_i+b^*)=0,那么b^* = y_i-wx_i,代入wx+b=0,得到超平面表达式为:\sum_{j=1}^{n}\alpha_jy_jx_j\cdot x+b^*=0

线性支持向量机

当数据为线性可分的情况下,当数据是线性不可分时,不存在一个超平面可以将正负样本完全分开。这时候我们将原来的硬间隔最大化转为软间隔最大化,具体方法就是给每个样本引入一个松弛因子\xi_i\geqslant 0,原来的目标函数变为:

\max_{\omega ,b,\xi }\frac{1}{2}\left \| \omega \right \|^2+C\sum_{i=1}^{n}\xi_i\\ s.t. y_i(\omega x_i+b) \geqslant 1-\xi _i, i=1,2,...,n\\

     \xi _i\geqslant 0

定义拉格朗日函数:

\min_{\omega,b}\max_{\alpha,\mu }L(\omega, b, \xi ,\alpha,\mu )\\ =\min_{\omega,b,\xi }\max_{\alpha, \mu }\left [\frac{1}{2}\left \| \omega \right \|^2+C\sum_{i=1}^{n}\xi_i + \sum_{i=1}^{n}\alpha_i(1-\xi_i-y_i(wx_i+b))-\sum_{i=1}^{n}\mu_i\xi_i \right ], \alpha _i\geqslant 0, \mu_i\geqslant 0

和线性可分支持向量机一样,将极小极大问题转为极大极小问题,并对w,b求导,得:

\frac{\partial L}{\partial \omega } = \omega -\sum_{i=1}^{n}\alpha_iy_ix_i=0;

\frac{\partial L}{\partial b}=-\sum_{i=1}^{n}\alpha _iy_i=0;

\frac{\partial L}{\partial \xi_i } = C-\alpha _i-\mu _i=0

解得:\omega =\sum_{i=1}^{n}\alpha_iy_ix_i\sum_{i=1}^{n}\alpha_iy_i=0C=\alpha _i+\mu_i,代入目标函数得到的结果和线性可分是一样的,不过增加了约束条件:

L(\omega , b, \alpha )=- \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_jx_ix_j+\sum_{i=1}^{n}\alpha _i, 0\leqslant \alpha _i\leqslant C

约束条件是由\alpha _i\geqslant 0C=\alpha _i+\mu_i合并得到的。

非线性支持向量机

非线性支持向量机是在线性支持向量机基础上引入“核技巧”,达到将数据映射到更高维空间甚至无穷维空间变成线性可分数据,再找到合适的超平面将正负样本分隔开。核技巧主需要定义核函数,不需要明确映射函数。直接计算核函数会比较方便,而通过映射函数来计算更麻烦一些。常用的核函数有:高斯核函数、多项式核函数...

加入核函数的目标函数变为:

L(\omega , b, \alpha )=- \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_jK(x_i,x_j)+\sum_{i=1}^{n}\alpha _i, 0\leqslant \alpha _i\leqslant C

其中K(x_i,x_j)代表核函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值