@PandoraKey
2024-04-22T00:43:51.000000Z
字数 7890
阅读 215
Kernel
支持向量机很早很早就被提出来了,而且在最近几年里一直在被更新和改进,但是追本溯源,我们还是得回到那个古老的年代,去看看支持向量机原本的模样。
我们总是希望这世界上的事情没有那么多的弯弯绕绕,能一刀切开就好了。SVM 最早干的就是这一刀切的工作。现在有两拨样本,标签分别是 ,它们在原空间上的分布如下图所示:
我们希望能够找到一条分界线,把两拨样本合理地分开,而且尽可能地让最靠近分解的样本点之间的距离最大,也就是图中的 与 之和要最大。当我们确定分界线之后,无论类别是什么,我们取最靠近分界线的样本点,做穿过该样本点且与分界线平行的直线,称之为边界线,两个类别的边界线距离就是间隔(Margin)。我们给图中的线 定义一个方程,即:
我们合并这两个边界线的方程,即:
那我们会开始思考,既然我是想要让间隔最大,那我应该考虑间隔是什么,于是这里就要用到高中学的一个知识点——两直线间的距离公式:
在式 中,我们能发现如果希望 越大,那必须让 越小,因此这就转换成一个最优化问题,求的是 的最小值,当然还有一个限制条件,就是要限制样本点不能出现在间隔当中,只能是在间隔边上或者间隔外,即:
接着我们得构造 的拉格朗日多项式,要先做个说明的是,为什么是减号,而不是加号:
说明结束,转换成拉格朗日多项式就是
接着对 和 做微分:
那这样子我们就能求出在原空间中的 是个啥了。将拉格朗日多项式的微分所得带回 中,但我们可以先算 和 即:
接着我们把上面两结果带进 里,可得:
到这里,我们可算是把 给整出来了,于是乎我们就转换成了一个对偶问题,来求 的最大值,但是要记得它有俩限制式:
到这里,我们对于原空间的推导就结束了,因为我们的主要目的是把它映射到高维空间去,也就是把全部的 都换成 ,推导过程和在原空间时是一致的,只不过是把 换成了 ,即:
接着通过 KKT 来对 做分析,我们会发现当 时,因为 ,所以 ,那样本点刚好就落在边界线上;如果 ,则意味着 ,换句话说,当 时,该样本点处于间隔之外。
于是我们就能确定:
最终得到最后的分界线方程就是:
原始优化问题:
构造拉格朗日方程:
分别对做微分:
很明显,在这之前我们对原空间进行计算,现在我们要将投射到高维空间,于是所有的都要变成