机器学习 之 SVM学习笔记

SVM(support vector machines)支持向量机
主要思想(目的):求解一个分类面(或称为分类函数),能够正确划分训练数据集且几何间隔达到最大
这里的几何间隔是指:离分类面最近的两个异类样本与分类面之间的距离之和,如下图所示的 γ
在这里插入图片描述

1、优化问题推导

1.1 优化问题提出

设有训练数据集(x为特征向量,y为标注类别)

假设训练数据集线性可分,则设分类面方程为:

根据点到线的距离公式:

可以得到,任一样本距离分类面的距离γi 的计算公式:

考虑到训练样本的标注类别y取值为(+1,-1),所以可以将上式中的绝对值去掉得到:

几何间隔 γ 可以取为:

需要最大化 γ ,得到优化问题:

(s.t. 表示subject to ,即约束条件)

1.2 优化问题改进

在已经得到的优化问题的基础上可以进一步形式上的简化。
对约束条件两侧同时除以 γ ,得到:

(分母都是标量)为了方便起见,令:

同时根据上式的变量替换可以将优化目标转变为下式:

(1/2是为了后面的求导等运更方便)

最终优化问题的形式为

2、优化问题求解

2.1 拉格朗日乘子法->对偶问题

在1.2节中最后得到的优化问题的基础上,可以得到其对应的拉格朗日函数为(拉格朗日乘子法可参考这篇文章):

并且可以进一步得到优化问题的对偶问题,拉格朗日函数对ω,b求偏导并使导数等于0,得到式①,式②:

将上式带入拉格朗日函数中,就可以消掉ω和b, 转而变为求最优的拉格朗日乘子α 使得拉格朗日函数取极值,即原优化问题的对偶问题:

2.2 求解

需要使用SMO算法对2.1中得到的对偶问题进行求解(SMO算法后续再填坑),求解得到一系列的拉格朗日乘子α1,α2 … αn

2.2.1 计算ω

根据2.1节中的式①,就可以直接计算出 ω

2.2.2 计算b

1.2节中最后得到的优化问题中的约束条件为:

我们设定支持向量是距离分类面最近的样本点,所以可以推出对于任意一个支持向量(xj,yj), 都满足:

因此b可以通过任选的一个支持向量(xj,yj)来计算得到,计算公式为:

然后就得到了分类面方程:


但是!这里存在一个问题,如何知道哪些样本点是支持向量呢?不然(xj,yj)是无法得到的。

在2.2节中推导得到对偶问题的过程中,是需要满足KKT条件(Karush-Kuhn-Tucker)的,(KKT条件可参考这篇文章),即需要满足以下条件:

根据上述条件可以推出:

若 αi>0,则 yi *(ω * xi+b) = 1,即对应的样本点(xi,yi)为支持向量。

所有不等于0的拉格朗日乘子αi 所对应的样本就是支持向量

3、线性不可分情况

1、2两节都是在假设样本是线性可分的情况下进行的,而大多数情况是线性不可分的

3.1 核函数

当样本在初始的特征空间中线性不可分时,我们可以将其映射到高维空间中使得其在高维空间中线性可分,进而在新的空间可以计算分类面。
但是映射到高维空间后计算将变得复杂,甚至有可能无法计算,因此我们需要找到一种方法,使得在低维空间中的计算结果达到在高维空间计算的效果,以此简化计算,这就是核函数。

(先挖坑,具体的公式以及说明改天再补充)

3.2 软间隔

因为数据有噪声干扰,并不会是理想的线性可分,映射到高维空间中计算又有点小题大作,成本太大,因此可以允许分类有一定的误差,即软间隔。
如图中红色的样本即不满足约束的样本,此时也是允许其存在的。
在这里插入图片描述
(同样的,先挖坑,具体细节改天再填)

参考资料:
《机器学习》周志华 (西瓜书)
https://blog.csdn.net/v_JULY_v/article/details/7624837

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值