机器学习3:支持向量机SVM之理论篇(上)
Posted 我走过的地方越来越多
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习3:支持向量机SVM之理论篇(上)相关的知识,希望对你有一定的参考价值。
来都来了,不关注下吗??
大家好,今天是大年初四,每次过年我总是有一个疑问:
不过已经一把年纪的我还是收到了红包。拿着红包安安心心的机器学习hhh。今天给大家介绍的是机器学习中的支持向量机(SVM),SVM又分为线性SVM和非线性SVM,东西比较多,我决定分个上下篇~~
言归正传,SVM属于分类问题,直观来说,机器学习算法中可以说预测一个样本所属的类是一件很重要的事情,通常的做法是给定训练集,划分超平面,预测样本所在类。那么如何找到最优超平面,是至关重要的。首先给大家介绍一下SVM原理。下面来看一张图:
图中有两类样本,一类是圆圈,一类是三角。分割这两类有无数种方法,图中显示了其中两条线L1和L2,很明显我们感觉到L2是优于L1的,因为它与两个类的距离都足够大。那定义上的距离该怎么描述?图中L1距离圆圈1和三角1就太近了,而L2相对来说距离适中,所以L2是最优的。(实际上SVM找到的仍然不是一个最优的超平面,但一定在最优附近,为什么呢?因为它与两个类的距离都足够大)
SVM就是基于这样一个理论,它试图去找到一个超平面,这个超平面可以使得与它最近的样本点的距离必须大于其他所有超平面划分时与最近的样本点的距离,在SVM当中这叫间隔最大化。
那么下面我们就正式进入到SVM的学习!
线性SVM
要学习支持向量机,那么首先要知道,什么叫支持向量?
如图,样本中距离超平面最近的一些点叫支持向量,也就是图中实心点。SVM就是要找到一个最优的决策边界,使得两个类别最近的样本最远,也就是优化样本中间的距离,也就是max两条虚线的距离,找到最优超平面。
对于任意超平面,可以用这个式子描述:
且
由于||w||d是正数,为了方便推导和优化,令||w||d=1,对目标函数没有影响:
所以 max d 也就意味着
(有一些中间的推导过程为求方便我直接贴图啦)
所以最终要优化的其实是:
有了约束以后,可以引入拉格朗日乘子,用拉格朗日乘数法求解(具体上一篇推送有写)
进而求
我们需要仔细观察一下,如果我们最后求得的参数是符合约束的,那么1-yi(wxi+b)也就必定小于等于0,而lambada依据拉格朗日乘子法的规则是一定要大于0的,也就是说L最后的结果一定会小于1/2*||w||^2,它只有最大值没有最小值,所以这里用的是max。
于此同时我们不要忘记了最后要求的是1/2*||w||^2的最小值,所以再将w和b作为参数,求得最小值。所以也就是求极小极大值。
但为了计算上的方便,我们通常会利用强对偶性,转换成极大极小值,也就是:
为什么这两个式子等价?实际上对于任何函数而言,max min f(x)≤min max f(x),正是依据这一理论,我们需要求最小值,那我们通过转换求一个更小值,也一点问题都没有。
那什么时候等号成立呢?其实从很不严谨的角度来说,如果约束条件的≤变成<,等号就成立。(感兴趣的建议自行查找证明)
既然对偶形式的式子也有了,那就先求min L吧:
把①②带回函数可得:
带入外面的max,取负号:
此时我们已经得到了要求的最小值,同时需要满足约束。w可以表示为:
此外再根据KKT互补条件可得:
在这里我们要分析一件事情,w最后依赖于上式等号后面的求和项,w是不可能等于0的(书中有证明,较为简单),那么最后产生的w如果要有意义,lambada ≥ 0中必然会存在某些lambada是大于0的,与此同时注意上式KKT的条件,当lambada不等于0时,括号内的一定是0。这代表了该样本点x与超平面的间隔是1,表示了它就是离超平面最近的那个点。也被称为支持向量。
所以最后发现了一个很有意思的现象,算到最后对w的计算有意义的竟然只有那些离超平面距离为1的样本点,也就是支持向量,其他的样本多几个少几个对w一点意义都没有,因为在求和式中都是0了。
这也是为什么SVM速度比较慢的原因,它要去遍历样本来找到最近的这些点,然后再去计算得到w。
那么如果出现这种情况:
以及这种情况:
该怎么办呢?别慌!在下一节都会给大家介绍 。
最后,你学会了吗?
记得关注喵~~!
往期相关:
以上是关于机器学习3:支持向量机SVM之理论篇(上)的主要内容,如果未能解决你的问题,请参考以下文章