SVM基础理论(1):通俗讲解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVM基础理论(1):通俗讲解相关的知识,希望对你有一定的参考价值。
参考技术A 支持向量机的最核心的想法就是 从输入空间到更加高维度的特征空间 映射,这里有一点像是神经网络中的,针对输入在隐含层进行一个转换,最后所生成的特征拿去进行分类。就是说不是在原始空间中进行分类,而是在一个新的空间中进行分类,在新的空间(高维度)中,会认为这个分类问题会得到一定程度的简化。
在高维度空间中,之前(低纬度空间)的线性不可分的问题就会被认为是一个线性可分的问题。
很多的超平面都可以使得在当前的训练集的条件之下,做到训练误差为0,那么问题来了,到底选择哪个呢?
其实问题的关键不是其在训练集上面的表现,而是其在 测试集 上面的表现是怎么样的(也就是说需要考察其泛化性能)。
support vectors 决定了分离超平面所能够移动的范围,这个范围就是叫做margin。
只有使用数学的形式定义margin才可以去优化和求解。
假设我的样本是线性可分的,那么,我就一定可以找到平行的两条线:
使得:
然后通过一系列的缩放变换可以得到,周老师的书中(周志华《机器学习》,也就是上面截图的书)的样子:
下面我给出相关的变换的思路:
然后我们就是找到间隔最大的这个w0(我这里设置的就是w0),然后 w 0 x + b 0 = 0 就是我们要找的分离超平面。
线性可分的支持向量机其实有两个目标:
第一,就是你需要把所有的样本都分对:
第二,就是在所有的样本全部都分对的情况之下使得间隔(margin)最大化:
所以,目标函数的数学形式如下:
原始问题:
对偶问题:一般而言,原始问题和对偶问题是不等价的,但是在SVM中的原始问题同对偶问题之间是等价的(这个是不用深究的),我们现在所要研究的问题就是变成了如何优化新的目标函数的问题。
下面是w和b的解:
下面是一个简单的例子展示svm如何求解:
目标函数和拉格朗日函数:
回代以及对偶问题求解:
优点:数据的可分性增加
缺点:计算的复杂度增加
即利用了高维空间中的数据比较好分。
又避免了高维空间中的计算复杂度较高这个缺点。
所谓的VC dimension就是你的模型最多可以shatter多少个点:
VC dimension是一个比较保守的估计,其认为样本可以进行任意打标签,但是实际的问题是没有这么复杂的:
所谓的VC dimension,就是模型的能力,对于h个点,不管如何打标签,这个模型都可以将其分开,那么我们就可以说这个模型的VC dimension就是h:
超平面在n维空间中,其VC dimension就是n + 1。
树的叶子节点的数量决定了其VC dimensiion,越复杂的决策树,其VC dimension就越高。
对于SVM而言,其VC dimension就是取决于其使用了何种的核函数。
数据挖掘中所使用的数据都被假设是有规律分布的,如果都是噪声,那么你怎么进行数据挖掘的行为都是没有用处的。
所以,基于以上假设,我们可以使用线性模型去对成千上万的点进行分类,如果严格按照VC dimension的理论的话线性模型是无法做到对成千上万个随机的点进行分类的。
h值越大,这里的后面的公式就是bound,就会越大,说明训练误差和测试误差之间的距离越大。
也就是说,同样的两个模型,如果具有相同的训练误差,我们应该是偏向于使用比较简单的那个模型的,而不是比较复杂的那个模型(也就是VC dimension较高的那个模型)。
越复杂的模型,其risk一般而言会比较大,其在未知样本上的performance就更加难以把握。
解密SVM系列:SVM的理论基础
上节我们探讨了关于拉格朗日乘子和KKT条件。这为后面SVM求解奠定基础,本节希望通俗的细说一下原理部分。
一个简单的二分类问题例如以下图:
我们希望找到一个决策面使得两类分开。这个决策面一般表示就是
这里我们把问题反过来看,如果我们知道了结果。就是上面这样的分类线相应的权值W和b。
那么我们会看到,在这两个类里面,是不是总能找到离这个线近期的点。向以下这样:
然后定义一下离这个线近期的点到这个分界面(线)的距离分别为d1,d2。
那么SVM找最优权值的策略就是,先找到最边上的点。再找到这两个距离之和D,然后求解D的最大值。想想如果依照这个策略是不是能够实现最优分类,是的。好了还是如果找到了这样一个分界面
好了再如果我们有这两个虚线。那么真实的分界面我们觉得正好是这两个分界面的中间线,这样d1就等于d2了。由于真实的分界面为
好了再看看D=d1+d2怎么求吧,如果分界面
这里W=(w1,w2),是个向量,||W||为向量的距离。那么
这样
我们知道。如果一个一次函数分界面为
那么这两个不等式再分别乘以他们的标签会怎么样?是不是能够统一为
转换到这样的形式以后是不是非常像上节说到的KKT条件下的优化问题了。就是这个。
可是有一个问题。我们说上节的KKT是在凸函数下使用的,那么这里的目标函数是不是呢?答案是的。想想
好了那样的话就能够引入拉格朗日乘子法了,优化的目标变为:
然后要求这个目标函数最优解,求导吧,
这两个公式非常重要。简直是核心公式。
求导得到这个应该非常easy吧,那我问你为什么
事实上说起来也非常easy。如果光去看看为什么求导以后,转置就没了。不太好想明确,设想一下如果如今是二维样本点。也就是终于的W=(w1,w2)。那么
好了得到上面的两个公式,再带回L中把去w和b消掉,你又可能发现,w确实能够消,由于有等式关系,那b怎么办?上述对b求导的结果居然不含有b,上天在开玩笑吗?事实上没有,尽管没有b,可是有那个求和为0呀,带进去你会惊人的发现。b还真的能够消掉,就是由于了那个等式。
简单带下:
那么求解最最開始的函数的最小值等价到这一步以后就是求解W的最大值了,由于使用了拉格朗日乘子法后,原问题就变为其对偶问题了,最小变成了最大,至于为什么,等到具体研究过对偶问题再来解释吧。不了解的。仅仅须要知道求W的极值就可以。
整理一下。经过这么一圈的转化。终于的问题为:
为什么有
细心的你肯可能会发现。上述全部的构造等等都是在数据全然线性可分,且分界面全然将两类分开。那么如果出现了以下这样的情况:
正负两类的最远点没有明显的分解面,搞不好正类的最远点反而会跑到负类里面去了,负类最远点跑到正类里面去了,要是这样的话,你的分界面都找不到。由于你不可能找到将它们全然分开的分界面,那么这些点在实际情况是有的。就是一些离群点或者噪声点,由于这一些点导致整个系统用不了。当然如果不做不论什么处理确实用不了。可是我们处理一下就能够用了。SVM考虑到这样的情况,所以在上下分界面上增加松弛变量
如果依照这样的分会发现4个离群点。他们到自己相应分界面的距离表示如上,理论上讲,我们给每个点都给一个自己的松弛变量
须要调整分界面的情况是仅仅有当相似
好了那么由于松弛变量的增加。导致每个点的约束条件就变化了点,像上界面以上的点,它满足的条件可能就是:
而下界面可能就是:
而且
统一在一起,整个问题就变成:
你发现目标函数里面多了一点东西。而加上这个是合理的,我们在优化的同一时候。也使得总的松弛变量之和最小。常数C决定了松弛变量之和的影响程度。如果越大,影响越严重。那么在优化的时候会很多其它的注重全部点到分界面的距离,优先保证这个和小。
好了将问题写在一起吧:
然后对
观察第三个式子,由于
这么说。溜了一圈下来。无非多了个
剩下的问题是怎么去找这样一组最优解
看过上节的可能会知道。在上节的最后那个实例中也是寻找
然后讨论这四种情况找到满足解。
可是我们这里的
以上是关于SVM基础理论(1):通俗讲解的主要内容,如果未能解决你的问题,请参考以下文章