线性SVM,线性可分SVM与核函数

5 篇文章 0 订阅
1 篇文章 0 订阅

SVM即支持向量机(support vector machine),是一种分类算法。SVM 适合中小型数据样本、非线性、高维的分类问题它将实例的特征向量映射为空间中的一些点。如:

而SVM要做的事情就是找到那么一条线, “最好地” 区分这两类点,以后有了新的点,这条线也能做出很好的分类。划分的线是可以有无数条的。

那么哪一条线是最好的呢。SVM 将会寻找可以区分两个类别并且能使间隔(margin or gap)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。

对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。比如下图中两条虚线构成的带状区域就是 gap,虚线是由距离中央实线最近的两个点所确定出来的(也就是由支持向量决定)。

从上图可以看出,虚线上的点到划分超平面的距离都是一样的,实际上只有这几个点共同确定了超平面的位置,因此被称作 “支持向量(support vectors)”,“支持向量机” 也是由此来的。

线性SVM

对于这个划分的超平面,我们可以给一个方程:

\omega ^{T}X+b=0

其中\omega为各个特征的权值。为列向量。b为位移值。

x_{i}到面的距离为

\frac{\omega ^{T} \cdot x_{i}+b}{\left \| \omega \right \|}

那么很明显有

\frac{\omega ^{T} \cdot x_{i}+b}{\left \| \omega \right \|}*y_{i}\geqslant d

y_{i}为样本i的预测值(-1或者1,做符号变换)。d为支撑向量到超平面的距离。我们假设d为\frac{2}{\left \| \omega \right \|}

使得所有的的点满足

y_{i}(\omega ^{T} \cdot x_{i}+b)\geqslant 1

我们所需要的超平面则是需要最大化最小间隔,即:

argmax_{w,b}\left \{ \frac{1}{\left \| \omega \right \|}min_{i}[y_{i}(\omega ^{T} \cdot x_{i}+b)]\right \}

带入上面的式子,则需要求:

argmax_{w,b} \frac{1}{\left \| \omega \right \|}

我们转换下则求:

min_{w,b} \frac{1}{2}\left \| \omega \right \|^{2}

与约束条件

y_{i}(\omega ^{T} \cdot x_{i}+b)\geqslant 1

我们这里就可以运用拉格朗日乘子法得:

L(\omega ,b,\alpha )=\frac{1}{2}\left \| \omega \right \|^{2}-\sum_{i=1}^{n}\alpha _{i}(y_{i}(\omega ^{T} \cdot x_{i}+b)-1)

原问题是极小极大问题

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


原始问题的对偶问题,是极大极小问题 


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

将其对于\omega ,b求偏导冰等于0得:

\omega =\sum_{i=1}^{n}\alpha _{i}y_{i}x_{n}

\sum_{i=1}^{n}\alpha _{i}y_{i}=0

带入L得

L(\omega ,b,\alpha )=\sum_{i=1}^{n}\alpha _{i}-\frac{1}{2}\sum_{i=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}x_{j}

与约束

\sum_{i=1}^{n}\alpha _{i}y_{i}=0

\alpha _{i}\geqslant 0 ,i=1,2...n

接下来求对于α的极大,添加负号即求

min\frac{1}{2}\sum_{i=1}^{n}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}x_{j}-\sum_{i=1}^{n}\alpha _{i}

继续带入拉格朗日乘子得最后的

\omega^{*} =\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

b^{*} =y_{i}-\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}x_{j}

求出最后的超平面。

线性可分SVM

线性svm可以保证在训练集上分类完全正确,但是不一定分类完全正确的超平面就是最好的

一种是样本数据本身线性不可分

另一种是下图这种情况,实线是线性svm分的超平面,可是我们还是感觉虚线可能分的更好,因为上面那个点很有可能是噪音点。

我们的处理方法是增加松弛因子\varepsilon _{i}≥0,使函数间隔加上松弛变量大于等于1。这样,约束条件变成 
y_{i}(\omega ^{T} \cdot x_{i}+b)\geqslant 1-\varepsilon _{i}
目标函数: 

min_{w,b} \frac{1}{2}\left \| \omega \right \|^{2}+C\sum_{i=1}^{N}\varepsilon _{i}

C为可以调整的超参数,当无限接近与无穷大时,就等于线性svm

这时候拉格朗日函数为

求偏导得

带入式子中得到:

然后求对于α的极大值

构造对偶问题,解约束最优化:

最后得到超平面:

要注意的是:计算b*时,需要使用满足条件0<α

实践中往往取支持向量的所有值取平均作为b* 。

SVM的损失函数为Hinge loss

\left\{\begin{matrix} y=-x+1, x<1 \\ y=0, x\geqslant 1 \end{matrix}\right.

意义则为,点相对于超平面的距离,大于1则没有损失,小于1则小多少损失多少(支撑向量到超平面的距离为1)

核函数

还有很多情况是样本点无法被直线分,即使使用松弛因子效果也很差。这个时候我们便选择使用核函数,核函数的作用是将原本线性不可分的样本映射到一个高维空间内。从而在核空间可分。

因为最后求超平面的时候我们使用的是两个向量的内积,所以核函数即为定义两个向量的内积。常用的核函数有

多项式核函数:\kappa (x_{1},x_{2})=(x_{1}\cdot x_{2}+c)^{d}

高斯核函数:\kappa (x_{1},x_{2})=exp(-\gamma \left \| x_{1}- x_{2} \right \|^{2})

Sigmod核函数:\kappa (x_{1},x_{2})=tanh(x_{1}\cdot x_{2}+c)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值