Machine Learning第六记——SVM

    支持向量机(Support Vector Machine,SVM)是一类对数据进行二元分类的线性分类器,同时配合核函数,可以实现非线性分类。算法推导过程配合了复杂的数学理论,下面对此进行一一介绍,并通过介绍加深我对此算法的理解。

一、最大间隔超平面

    在多维空间中,能将两类样本点A、B正确分开的 wx + b = 0即为一个超平面。为了使超平面具有更好的鲁棒性,需要找一个最佳超平面,这个超平面与距离它最近的样本点有最远的距离,即最大间隔超平面,如下图中间的实线所示。为了实现离最近的样本点最远,上下两侧的虚线上的x和o样本决定了这个最大间隔超平面的位置,这些决定最大间隔超平面的样本点即为支持向量。寻找最大间隔超平面,即为SVM算法的目的。

二、SVM最优化问题

    前面已经提到,SVM是为了找出最大间隔超平面,任意超平面可以表示为 wTx + b = 0。
    这里提到的间隔,从函数间隔的定义来看,yi(w∗xi+b),这里如果想让函数间隔最大即同时放大w和b,但这种放大并没有改变平面,等比放大之后平面不变,这样得计算没有意义。因此,这里的最大间隔采取几何间隔,即

    取支持向量到超平面距离为d,那么各样本到超平面的距离即可表示为如下方程组(y为二分类类别):在这里插入图片描述
转化之后可以得到:在这里插入图片描述
    为方便之后的推导,将分母暂令为1,这步操作对之后的目标函数优化没有影响。原始变为:在这里插入图片描述
简写为:在这里插入图片描述
    这样我们就获得了在最大间隔超平面两侧平行于此超平面并过支持向量的另外两个超平面,即最上图中的两条虚线所表示的超平面,
    分别为: wTx + b = 1; wTx + b = -1。
    根据几何距离,每个支持向量到超平面的距离为:在这里插入图片描述
    由于y为±1,且与 wTx + b同号,因此,上式可以变为:在这里插入图片描述
    我们接下来要做的,即为最大化这个距离。由于之前为方便推导得到了支持向量y(wTx + b)= 1。同时为了方便计算,乘上2,最终将求max d转变为:在这里插入图片描述
    这里将分母倒置,再将||w||做平方处理去掉里面的根号,最终得到的最优化问题变为:
在这里插入图片描述

三、拉格朗日乘子法

    最终优化问题变成了典型的二次规划(QP)问题。引入拉格朗日乘子法解决:在这里插入图片描述
    则可将之前的组合式变为下面的拉格朗日函数(α为乘子):在这里插入图片描述
    观察上式,约束条件不满足时即y(wTx + b)<1时,拉格朗日函数最大可以到正无穷,无意义。在约束条件满足时拉格朗日函数减号后面的数>=0,拉格朗日函数最优解为1/2||w||2,因此要求max L(w,b,α),使其在约束条件满足时等于1/2||w||2。则原来的优化问题变为:min max L(w,b,α)= p。若要对此式直接求解,则需要面对w、b两个参数,计算困难,因此这里用到了对偶思想。

    对偶转化:min max互换位置。变为max min L(w,b,α)= d,这里d<=p,属于弱对偶关系。而当某些条件成立时,等号成立,d=p,变为强对偶关系,这些条件为KKT条件。
    之后可以先求L对w、b的极小,再求L对α的极大。求解过程如下图:在这里插入图片描述
    将上面的计算结果带入之前的拉格朗日函数:
在这里插入图片描述
    通过最后的式子可以看出,w、b从原式中消失,仅剩下α:
在这里插入图片描述
    求出α后待会上面的等式关系即可求出对应的w、b。从这个过程中可以看出,之所以使用对偶函数求解,不止为了方面之后的核函数引入,还改变了问题的复杂度。原始问题直接求特征向量w,复杂度与样本的维度有关,有些情况下w的维度可能为无穷大,无法计算,而在对偶问题下,转换后只与样本数量有关。

四、soft-margin SVM

    在一开始讨论支持向量时,我们考虑的都是十分理想的情况,但实际问题中并非如此,数据样本存在噪声十分常见。而噪声的存在在这种理想状态下的算法中会对超平面的确定产生极大的影响,因此,在原先的模型基础上,我们加入松弛变量𝜀 。考虑到偏离正常位置很远的数据,改变约束条件为:在这里插入图片描述
    但𝜀 并不是任意大,如果它任意大那么在这个松弛变量任意的超平面都能满足条件,因此在计算是要将这些𝜀 也加上,也应最小。即完整公式为:在这里插入图片描述
    之后再像之前一样将约束条件加入到函数中写出拉格朗日函数然后计算。拉格朗日函数为:在这里插入图片描述
然后求L对w、b、𝜀的偏导为0,求解:在这里插入图片描述
之后带入L化简,得到和之前一样的目标函数,只是对乘子约束产生了变化:在这里插入图片描述
    至此,对于SVM的计算过程就成功将计算超平面的w、b变为计算乘子α。之后的关于α计算用到SMO算法。

SMO算法大致步骤分为如下几步:
1、选取一对αi和αj,之所以选取一对是为保证上述约束条件的最后一个,αiyi之和要保持为0,所以需要同时更新两个α。选取方式为启发式方法:先扫描所有乘子,找到第一个违反KKT条件的做α1,之后再所有不违反KKT的乘子中选择对应误差之差的绝对值最大的乘子作为α2进行更新,这样能最大限度增大目标函数的值。
2、固定除了αi和αj之外的其他乘子,确定αi之后再将αj用αi表示出来
3、更新两个乘子
4、更新结束之后需要重新计算b,以及对应的误差E(为预测值与真实值之间的误差)。
最后更新所有的α,y,b之后就可以获得最终的模型。

五、核函数

    对于核函数,是用于数据不是线性可分的情况设计的。上面所说的情况都是在数据线性可分的前提下进行操作。而当数据非线性可分时,就需要用到核函数将数据映射到高维空间,使其变为线性可分的样本集。如下图:在这里插入图片描述
关于核函数应用我用学长的话来解释一下:在这里插入图片描述
    通过上面的解释,可以看出核函数其实就是简化了两向量的内积过程。原本需要先求出映射后的结果,再对向量内积,而有核函数之后,则可以直接获得结果。同时由于在某些情况下,映射的维度可能很高,计算映射的结果不现实,因此需要利用核函数省去这一中间过程。

六、总结

    SVM主要三宝即为间隔、对偶、核函数,三者为SVM的核心方法,整个算法过程进行了大量的数学计算和逻辑推导。SVM作为一个二元分类器,在应用于多元分类时往往会将其分为多个二元分类问题,再进行分类。主要应用于字符识别、文本分类、人像识别等领域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值