支持向量机(SVM)

本文详细介绍了支持向量机(SVM),包括SVM的目标函数、如何处理线性不可分情况下的核函数、容忍噪声的策略以及序列最小优化算法(SMO)。SVM通过最大化间隔来寻找最优超平面,对于线性不可分数据,通过核函数映射到高维空间实现分类。此外,文章还探讨了SVM在处理outliers时的松弛变量和KKT条件的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVM

支持向量机是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略是间隔最大化,最终可转化为一个凸二次规划问题的求解。

svm目标函数

线性分类超平面的分类函数为线性分类函数,当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点。而svm重点在于如何求超平面。
函数间隔:函数间隔
几何间隔:几何间隔
最大化分类间隔器的目标函数定义为:最大化几何间隔,同时满足约束:约束条件。另函数间隔为等于1,即函数间隔为1,那么目标函数转换为:
目标函数2
相当于在约束条件约束条件下,最大化w,而w就是几何间隔这里写图片描述
如下图所示,中间的实线便是寻找到的最优超平面,其到两条虚线边界的距离相等,这个距离便是几何间隔几何间隔,两条虚线间隔边界之间的距离等于2这里写图片描述,而虚线间隔边界上的点则是支持向量。由于这些向量刚好在虚线间隔边界上,所以满足边界点,而对于所有不在支持向量上的点,显然这里写图片描述
支持向量图

svm目标函数转换

对于上述最后的目标函数,由于求这里写图片描述的最大值相当于求这里写图片描述的最小值,所以目标函数转换为:
目标函数3,即在一定的约束条件下,目标最优,损失最小。
上述目标函数可以通过求解拉格朗日对偶问题求解。
拉格朗日函数:通过给每一个约束条件加上一个拉格朗日乘子alpha得到:
拉格朗日函数
然后另这里写图片描述.
容易验证,当某个约束条件不满足时,例如这里写图片描述,那么显然这里写图片描述(只要这里写图片描述即可),而当所有约束条件都满足时,则最优值为这里写图片描述,即最初最小化的量。
因此,在要求约束条件得到满足的情况下最小化这里写图片描述,实际上等价于直接最小化这里写图片描述(当然,这里也有约束条件就是这里写图片描述)因为如果约束条件没有得到满足,这里写图片描述会等于无穷大,自然不会是我们所要求的最小值。
写出来,目标函数变成了:
目标函数4
这里用p*表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便面对w和b两个参数,而这里写图片描述又是不等式约束,这个求解过程不好做。不妨把最小和最大位置交换一下,变成:
对偶问题
交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用d*来表示。而且d*<=p*,在满足KKT条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。

kkt条件

一个最优化问题的标准形式:
最优化问题
其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等数约束和不等式约束的数量。
而kkt条件就是上面最优化数学模型的标准形式中的最小点x*必须满足下面的条件:
这里写图片描述
kkt条件可参考博客:http://blog.youkuaiyun.com/xianlingmao/article/details/7919597

经过论证,我们的问题是满足kkt条件的,因此现在可转化为求解第二个问题。即通过满足kkt条件,已经转化成了对偶问题。求解对偶问题分三步:首先要让这里写图片描述关于w和b最小化,然后求对这里写图片描述的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

  1. 首先固定这里写图片描述,要让L关于w和b最小化,我们分别对w和b求偏导数,另偏导数为0:
    偏导数
    对向量、矩阵求导遵循前导不变,后导转置的规则,参考博客:
    http://www.xuebuyuan.com/1461424.html
    将以上结果带入之前的
    拉格朗日函数 中得到:
    这里写图片描述
  2. 求对这里写图片描述的极大,即是关于对偶问题的最优化问题。经过上面第一个步骤的求w和b,得到的拉格朗日函数式子已经没有w和b,只有这里写图片描述。从上面的式子得到:
    这里写图片描述
    这样,求出了这里写图片描述,根据这里写图片描述即可求出w,然后通过这里写图片描述求出b,最终得出分离超平面和分类决策函数。
  3. 在求得这里写图片描述关于w和b的最小化后,以及对这里写图片描述的极大之后,最后一步则可以利用SMO算法求解对偶问题中的拉格朗日乘子这里写图片描述

核函数-处理线性不可分的情况

事实上,大部分时候数据并不是线性可分的,这个时候满足以上条件的超平面根本不存在。对于线性不可分的情况,可以选择一个核函数k()通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。
具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。
如果我们不是用核函数,使用原来的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数:这里写图片描述
这里fai:X -> F,是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步:
1、首先使用一个非线性映射将数据变换到一个特征空间F
2、然后在特征空间使用线性学习器分类
由于对偶形式就是线性学习器的一个重要性质,这意味着假设可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示:
这里写图片描述
如果有一种方式可以在特征空间中直接计算内积这里写图片描述,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算的方法称为核函数方法:核是一个函数K,对所有的x,z,满足这里写图片描述,这里这里写图片描述是从X到内积空间F的映射。

计算两个向量在隐式映射过后的空间中的内积的函数叫做核函数。即核函数满足这里写图片描述,即核函数能简化映射空间中的内积运算。
那么现在分类函数为:
这里写图片描述,
其中这里写图片描述由如下对偶问题计算得到:
这里写图片描述
这样一来计算的问题就算解决了,避开了直接在高维空间中进行计算,而结果却是等价的.
核函数的本质:
1、我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去(映射到高维空间后,相关特征便被分开了,也就达到了分类的目的);
2、但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的。那怎么办?
3、此时,核函数就隆重登场了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。

容忍噪声(outliers)

线性不可分除了因为数据时线性不可分之外,还可能是因为数据有噪声,对于这种偏离正常位置很远的数据点,我们称为outliers,在svm模型中,outlier的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support vector 里又存在 outlier 的话,其影响就很大了。如下图:
这里写图片描述
用黑圈圈起来的那个蓝点是一个 outlier ,它偏离了自己原本所应该在的那个半空间,如果直接忽略掉它的话,原来的分隔超平面还是挺好的,但是由于这个 outlier 的出现,导致分隔超平面不得不被挤歪了,变成途中黑色虚线所示,同时 margin 也相应变小了。当然,更严重的情况是,如果这个 outlier 再往右上移动一些距离的话,我们将无法构造出能将数据分开的超平面来。
为了处理这种情况,SVM 允许数据点在一定程度上偏离一下超平面。例如上图中,黑色实线所对应的距离,就是该 outlier 偏离的距离,如果把它移动回来,就刚好落在原来的蓝色间隔边界上,而不会使得超平面发生变形了。
原来的约束条件考虑outlier后,变成了:
这里写图片描述
其中这里写图片描述称为松弛变量,对应数据点xi允许偏离的function margin的量。当然如果我们运行这里写图片描述任意大的话,那任意超平面都符合条件了。所以在原来的目标函数后面添加一项,使得这些这里写图片描述的总和也要最小。
这里写图片描述
用之前的方法将限制或约束条件加入到目标函数中,得到新的拉格朗日函数,如下所示:
这里写图片描述
分析方法和前面一样,转换为另一个问题后,我们先让L对w,b,这里写图片描述最小化:
这里写图片描述
将w和这里写图片描述带入并化简,得到和原来一样的目标函数:
这里写图片描述
由于C-ai-ri=0,而ri>=0,因此有ai<=C,所以对偶问题现在写作:
这里写图片描述

SMO:序列最小优化算法。

SMO算法在SVM中用来求解对偶问题
这里写图片描述
等价于:
这里写图片描述
下面要解决的问题是:在这里写图片描述上求上述目标函数的最小值。为了求这些乘子,每次从中任意抽取两个乘子a1和a2,然后固定a1和a2之外的其他乘子{a3,a4,…,an},使得目标函数只是关于a1、a2的函数。这样,不断的从一堆乘子中任意抽取两个求解,不断的迭代求解子问题,最终达到求解原问题的目的。
而原对偶问题的子问题的目标函数可表达为:
这里写图片描述
其中:
这里写图片描述
推导过程如下:

从中求出a1和a2,然后更新b,如下:

参考:
http://blog.youkuaiyun.com/v_july_v/article/details/7624837
http://blog.youkuaiyun.com/xianlingmao/article/details/7919597
http://blog.youkuaiyun.com/luoshixian099/article/details/51227754
http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html

完整代码参考:
https://github.com/zhanggw/algorithm/blob/master/machine-learning/SVM/main.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值