您的位置:首页 > 其它

[置顶] SVM——线性支持向量机

2016-06-03 21:41 357 查看
线性支持向量机 希望我写的对大家会有所帮助。 微信公众号:计算机金融阅读。

昨天写了点支持向量机的东西,然后自己看了一遍,写的什么鬼,完全是一坨shit,估计过段时间我自己都看不懂了,所以今天准备详细写一遍。

我想大家都知道,SVM会得到一条分类的线,且这条分类线是最好的那条,问题来了,为什么呢?下面我们一步一步来推。

1.想得到那条最好的线需要什么呢,首先肯定要保证这条线能将所有样本分类正确吧,然后求出每个样本点到分类线的距离,找出距离最近的点,然后再最大化这个距离。如图所示:支持向量机其实就是这样一个步骤





2.光看着这两个式子有点复杂,更不知道如何解决,求出最大的margin。所以接下来就是化简这个式子。首先看distance那一项,即表示所有样本点到线或平面或更高维度分类界面的距离,我想在点到平面的距离大家都会求:不会的可以百度:



推到之后会得出距离的公式,接着消去distance中的绝对值,因为我们考虑的分类界面可以将样本分开,所以1中公式可化简为:



3.继续化简,整个式子现在还是很复杂,因为分类界面的表达方式有很多种,举个简单的例子:x+y=0和3x+3y=0等价。所以我们可以将margin后半部分进行缩放值margin刚好等于1:



那么此时的margin=1/||w||。那么此时的问题变成这样:



此时第一排条件变简单了,第三排还是需要保证最小XX项(图中有)要等于1,同时可以保证第二排的条件。

那么此时问题变成这样:



4.由于minimize那一项比较复杂,可以继续简化,现在是min后面那一项需要等于1,可以讲条件扩大为:



此时有人可能会说,在求加最优化问题是,将条件扩大了,会对解造成影响,比如:所有都大于1,没有等于1的。所以紧接着做一个操作让解能落在原来的范围,如果最佳解落在了范围外,那么我们就进行这样一个操作:



对,就是给b跟w进行一个放缩,除以最小的那个大于1的数。

那么此时问题就变成这样了:



相比之前变得相当简单了,在继续简化第一行,max 1/||w||,可以简化为min ||w||。而||w||即自己的内积,最终形式为:



5.此时线性SVM问题变成这样有条件的最优化问题了,很明显这个问题叫做二次优化,在很多软件中都有相应的函数求解二次优化问题,下面就是二次规划的标准形式:



那么根据前面的条件,找出二次规划中需要的参数Q,p,A,c即可求解SVM问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: