支持向量机公式(2)-----机器学习

本文介绍了如何使用拉格朗日乘子法解决支持向量机的基本型问题,讨论了在等式和不等式约束条件下的解法,并通过实例解释了KKT条件在支持向量机中的应用。最后提到了SMO算法作为求解此类问题的方法。

上篇博客中我们讲到了支持向量机的基本型:

那么我们如何解出参数\textbf{w}b。很明显上述是带有约束条件求最小值,这个时候我们想到拉格朗日乘子法(博主没记错的话,高数中有)。

拉格朗日乘子法

问题描述:

这是在等式的情况下,求出函数的最小值, 具体的意义可以详细见:https://zhuanlan.zhihu.com/p/76501152,博主直接说方法和步骤,说来惭愧,在我学习拉格朗日乘子法的时候只知道如何去解,具体的数学意义并不清楚,但是看了提供的这个链接,会发现并不难理解,有兴趣的可以去看看,如果只是想知道步骤就没必要看了。

拉格朗日乘子法的做法就是定义一个新的拉格朗日函数:L(x,\lambda ) = f(x)+\lambda h(x),然后我们对其中的x,\lambda分别求偏导,然后让其导数等于0,就可以解出x,\lambda,将这样求解出的x代入f(x),这个时候的f(x)的值就是我们要的最小值。这个是在等式约束条件下的解法,但是我们的支持向量机的基本型是在不等式的约束条件下,那么如何去解呢???

这个时候我们看个例子:

 如上图,假设我们要求当h(x)\leqslant 0的时候,原点离h(x)的最短距离的那个点,假设原点到h(x)\leqslant 0平面的这个距离函数为f(x),我们要求f(x)的最小值。其中蓝色部分为h(x)\leqslant 0的可行域(这个词要知道了,高中时候的知识),那么我们分为两种情况。

第一种情况,所求的点在h(x)< 0的内部,这个时候很明显我们其实是找不到最优解的,那么这个时候最优解就相当于没有了这个约束条件。此时的拉格朗日函数L(x,\lambda ) = f(x)+\lambda h(x),其中\lambda =0

第二种情况,所求的点在h(x)=0的边界上,这个时候的约束条件就是等式的约束条件,回到了我们最开始的解题步骤,将L(x,\lambda ) = f(x)+\lambda h(x)求导,然后令其等于0,可以得到:

 博主看到的是说这种情况下f(x)的梯度和h(x)的梯度相反,这样的话如果要满足上面的等式,\lambda必须大于0。我们看下个例子帮助我们理解:

如图所示,要想求出原点到h(x)的最短距离,我们只需要以原点为圆心,画圆直到与h(x)相切,那个切点就是我们求的点,博主的个人理解就是h(x)\leq 0的梯度是红色箭头,指向可行域,而f(x)的梯度指向原点,因为我们希望求的是f(x)的最小值,以原点为中心作的切线圆越接近原点越好,当然不希望是个扩大的形式,所以从这样看,f(x)的梯度和g(x)的梯度相反,可能我理解的不够准确,如果大家有更好的理解方法,可以一起交流。

如此就引入了KKT的条件:

关于\lambda h(x)=0是对应上我们刚刚分析的两种情况,大家往上翻翻。这个就是拉格朗日乘子法的一般步骤,回到我们的支持向量机,我们要解决的是:

 同样我们构建上述问题的拉个朗日函数:

这个应该不难理解,有累加的运算是因为有多个类别,相当于我们有多个约束条件而已。这样我们使L(\textbf{w},b,\alpha )对参数\textbf{w}b的偏导为0,可以得到:

我们再代会到支持向量机的基本型中,也就是求:

其中: 

 还有满足的KKT条件:

 那么如何在当前的约束条件下去求解我们的目标函数,SMO算法是著名的求解这类问题的代表。大家有兴趣可以看看https://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html,涉及到了太多的数学背景,一句两句扯不清楚,这里博主就先溜了,如果大家对上述的理解和博主不一样,欢迎评论留言,一起交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值