机器学习算法(五):支持向量机

本文详细介绍了支持向量机(SVM)的基本原理及其数学模型,包括如何通过最大化间隔来选择最优分类超平面,并利用拉格朗日乘数法求解相应的优化问题。

支持向量机试图寻找一个超平面将二类样本分开,所以他的学习器是一个超平面

$$y = w^{T}x+b$$

满足条件的超平面可能有很多,在所有满足条件的超平面,我们试图寻找一个不只能将两个类别分开,而且与该类最近样本点的间隔要尽量大,作为我们的目标超平面。

首先我们可以假设有下面两个平行的超平面

$$w^{T}x+b = 1$$

$$w^{T}x+b = -1$$

这两个平面的距离为 $\frac{2}{||w||}$,于是我们拿这样两个平面去分隔样本。如果同时满足训练点被上述连两个平面分开,并且两个平面的距离尽量大,可以得到得到下面的一个优化问题,其中这里把求最大换成了求最小。

$$\min\limits_{w,b}\frac{1}{2}||w||^2$$

$$s.t. y_{i}(w^{T}x_{i} +b) >= 1, i = 1,2,..., m.$$

要求解这个问题,通过拉格朗日乘子法,为每个约束添加拉格朗日乘子$\alpha_{i} >= 0$,再根据拉格朗日对偶性,将原问题变为一个极大极小问题,如下:

$$\max\limits_{\alpha}\min\limits_{w,b}\frac{1}{2}||w||^2 + \sum\limits_{i=1}^{m} \alpha_{i}(1 - y_{i}(w^{T}x_{i} + b))$$

通过对w和b求偏导为0先求上面的极小问题,可以把w,和b消去,于是得到极大问题如下:

$$\max\limits_{\alpha}\sum\limits_{i=1}^{m} \alpha_{i} - \frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m} \alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^{T}x_{j}$$

$$s.t. \sum\limits_{i=1}^{m}\alpha_{i}y_{i} = 0$$

同时根据对偶理论,因为原始问题是不等式约束,我们的拉格朗日乘子需要满足下面的KKT公式,即下面的三个条件

$$\alpha_{i} >= 0 $$
$$ y_{i}f(x_{i}) - 1 >= 0 $$
$$\alpha_{i} (y_{i}f(x_{i}) - 1) = 0 $$
如果$y_{i}f(x_{i})=1$,称这种向量为支持向量,根据上面的条件,其对应的$\alpha_{i}$为0. 若求解出$\alpha_{i}$,可以求出相应的w和b,其中
$w = \sum\limits_{i=1}^{m}\alpha_{i}y_{i}x_{i}$, b则可以通过支持向量代入等式$y_{i}f(x_{i})=1$算出。
 

求解支持向量机最优解

最经典的是SMO算法,这里只介绍这个算法的过程。SMO算法属于迭代算法,即每次增加一个训练样本,更新模型的参数向量$\alpha$
因为$\sum\limits_{i=1}^{m}\alpha_{i}y_{i} = 0$,所以每次可以更新两个参数。选取两个参数$\alpha_{i}$和$\alpha_{j}$作为变量,其他$\alpha$固定,求出此时最优的$\alpha_{i}$和$\alpha_{j}$的更新,依次迭代。
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/learninglife/p/9228134.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值