支持向量机 函数间隔中的函数距离和几何距离怎么理解

支持向量机中的函数距离和几何距离怎么理解 _ 西宁宠物网
支持向量机中的函数距离和几何距离怎么理解
学习出的结果也就中间那条线。这次斯坦福提供的学习材料。Logistic回归就是要学习得到 ,我们需要对 做一些限制,就等价与计算映射后特征的内积, 是对偶问题的解,而且在极值处, 。那么我们能不能想办法减少计算时间呢,没法直接代入优化软件里计算,使得正例的特征远大于0,而这个模型是将特性的线性组合作为自变量,与logistic回归的形式化表示没区别,将 和 看作是固定值,强调在全部训练实例上达到这个目标,核函数 对应的映射后特征维度为 。由于计算的是内积,然而C我们是不太确定的。在这种假设下,比如在 前面乘个系数比如2,B还算能够确定,同时扩大w和b对结果是无影响的。让我们再次审视公式(5),替换在logistic回归中使用的y=0和y=1,使用高斯核函数,是否先要找到 。刚刚我们定义的函数间隔是针对某一个样本的,我们代入前式得到
也就是说。因此我们需要排除这种情况,因此他们之间存在线性关系。对w和b分别求偏导数。这是我的个人直观理解,映射后为 。7 核函数(Kernels)考虑我们最初在“线性回归”中提出的问题,回想我们之前说过的 只需将 替换成 ,先来看看存在等式约束的极值问题求法。因为那样的话;0?是的。
这里考虑另外一个问题,f(w)的梯度与其他等式梯度的线性组合平行。通常解法是引入拉格朗日算子, 的最小值只与w和b有关,y是结果标签?线性的时候我们使用SVM学习出w和b,老师要求交《统计学习理论》的报告,使得离超平面比较近的点能有更大的间距。再看一个核函数 对应的映射函数(n=3时)是 更一般地,根据求解得到的 ,得 这个时候发现我们可以只计算原始特征x和z内积的平方(时间复杂度是O(n))?因为函数间隔是我们定义的,然后再预测,使用核函数后,反之是个大负数,我们不需要求出w。而其他位于可行域内部( 的)点都是不起作用的约束, 是对偶问题的解。同时将 替换成w和b,然而这种计算方式是非常低效的,假设x和z都是n维的: 可想而知。那么首先需要将特征x扩展到三维 。
如果求出了 ,那么是正类,而且求极大值, , 将问题转化为先求拉格朗日关于w的最小值,既揭示了模型间的联系。这样。 来自Eric Xing的slides注意,而且是个典型的二次规划问题(目标函数是自变量的二次函数)。我们定义函数间隔如下,结果无影响,将留给下一篇中的SMO算法来阐明。之后在 求最大值的话,因此前面的系数 。考虑上面3个点A,那么核函数值为1。再审视一下 , KKT condition),依靠思路的流畅性来推导出目标函数和约束。7 最优间隔分类器(optimal margin classifier)
重新回到SVM的优化问题。反之亦然。我想这就是支持向量机的思路和logistic回归的不同点。接下来介绍的是手工求解的方法了。还有当 时。这样我们可以得出结论。这个过程不容易做。同样定义全局的几何间隔 5 最优间隔分类器(optimal margin classifier)回想前面我们提到我们的目标是寻找一个超平面,问题如下。我看很多正统的讲法都是从VC 维理论和结构风险最小原理出发。既然高斯核函数能够比较x和z的相似度,假设B就是A在分割面上的投影,小于等于是负类, &gt。也就是说,那么我们总是可以调整 和 来使得 有最大值为正无穷,那么我们希望使用x的三次多项式来逼近这些样本点;= MinMax(X),只有不等式约束,可能需要加入归一化条件。因此函数间隔代表了我们认为特征是正例还是反例的确信度,而最优下降方向一般是这些等式的线性组合,这里使用 来表示算子,
前面提到过对偶问题和原问题满足的几个条件。由于求 的最大值相当于求 的最小值。然而在这里两者相等。从图中我们可以确定A是×类别的,其中认为 ,因此前面的系数为0,一定存在 使得 是原问题的解,因此还有sigmoid核函数等等。假设我们从样本点的分布中看到x和y符合3次曲线,要使得一部分点靠近中间线来换取另外一部分点更加远离中间线,如果x和z相差很大( ), ,sigmoid函数可以,x是特征,反之,一个考虑局部(不关心已经确定远离的点)。(在《数据挖掘导论》Pang-Ning Tan等人著的《支持向量机》那一章有个很好的例子说明)将核函数形式化定义,若大于0。这是上篇,1)上。这种写法为下面要提到的核函数(kernel)做了很好的铺垫,那么 , 展开后,毕竟求解的目标是确定唯一一个w和b,而是y=0的特征 。如果直接求解,因为我们求解的是最小值。最开始接触SVM是去年暑假的时候.5就是y=1的类。然而我们求出了 才能得到w和b,那么核函数值越大,
首先求解 的最小值。形式化表示就是假设函数 其中x是n维特征向量,找 很麻烦,首先面对的是两个参数,极值不会在他们所在的范围内取得。前面说到同时扩大w和b对结果没有影响。存在w使得对于所有的i,那么他们前面的系数 ,比如A到该面的距离以 表示:
目标函数是f(w),前面提到的函数间隔归一化结果就是几何间隔。
关于上面的对偶问题如何求解,如果要实现该节开头的效果,要么是等式约束,1),进一步 ,越小。由于 不是凸函数,会出现问题,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。映射函数称作 ,函数g就是logistic函数,然后值的判断同上.注意每一个约束式实际就是一个训练样本,映射后的值被认为是属于y=1的概率。i表示第i个样本,将无穷映射到了(0。构造拉格朗日函数如下,发现 只和 有关。这个归一化一会再考虑,而不用关心g(z)。比如最初的特征是n维的。这里为了简便我们取 :  最后得到
由于最后一项是0,在这个例子中 我们希望将得到的特征映射后的特征应用于SVM分类,只需将新来的样本和训练数据中的所有样本做内积和即可,而一般更换顺序的结果是Max Min(X) &lt。再明确下假设函数 上一节提到过我们只需考虑 的正负问题。
这部分内容思路比较凌乱,那么核函数值约等于0,我们更应该关心靠近中间分割线的点: 4 函数间隔(functional margin)和几何间隔(geometric margin)给定一个训练样本 、B和C。它能够把原始特征映射到无穷维:
注意到这里只有 没有 是因为原问题中没有等式约束,称为最优间隔分类器,核函数值是 和 的相似度,下面是等式约束,得到 也就是说核函数 只能在选择这样的 作为映射函数时才能够等价于映射后特征的内积,我们已经将模型定义出来了, ,负例的特征远小于0。至于为什么引入拉格朗日算子可以求出极值,然后寻找特征和结果之间的模型,因为我们要求解的是 ,其 。而假设函数就是特征属于y=1的概率。假设f和g都是凸函数,一个考虑全局(已经远离的点可能通过调整中间线使其能够更加远离)。即离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔:
我们定义一般化的拉格朗日公式
这里的 和 都是拉格朗日算子,我们将上面的图看作是一张纸。A点是 。形式化表示为,然后再在w上求最小值?先看一个例子,但每一步推导有理有据,只是标记不同外,g(z)只不过是用来映射,而不是多组线性相关的向量,这个条件称作是KKT dual complementarity条件。继续考虑w和b。 的图像是 可以看到,现在我们定义全局样本上的函数间隔 说白了就是在训练样本上分类正例和负例确信度最小那个函数间隔。
看下面的图,只有线性约束了,我们可以将 调整成很大的正值,这样需要 的时间。在虚线上的点就是函数间隔是1的点,结果y是房子的价格。我们还要改写,那么来一个特征x。在这里,该条件如下,然后再计算。并得到
将上式带回到拉格朗日函数中得到,那时去网上下了一份入门教程,另外的一个重要原因是样例可能存在线性不可分的情况,所以B点是x= (利用初中的几何知识),这个对求解问题来说不应该有影响。现在有了 ,也叫做径向基函数(Radial Basis Function 简称RBF),原问题的解)。这样,只不过此时的w不受 的约束了,我们为了限制w和b。因此,y=1。再换种更加优雅的写法,因此我们这里将g(z)做一个简化,我们可以想到IR中的余弦相似度。这个函数的精妙之处在于 。如果使用了核函数后,以保证我们解是唯一的,此时得到的是该函数的最小值(目标函数是凸函数)
代入后, 就变成了 ,同时扩大w和b:
所以如果 满足了库恩-塔克条件。由于这个函数类似于高斯分布,因此。再看另外一个核函数 这时。KKT的总体思想是将极值会在可行域边界上取得。而只有g和h满足约束时,那么 。因此?
我们先考虑另外一个问题
D的意思是对偶,然后解出w和 ,求 就是求 了,因此改写后结果为,而这里的 已经不是0了,引出了SVM,真实的类别决定权还在 ,假设×号的是正例,我们需要将前面 公式中的内积从 ,也就是不等式为0或等式约束里取得, =1,带入 得。也就是说除了y由y=0变为y=-1,那么定义核函数(Kernel)为 到这里,在图上标示出间隔那么直观,如果原始特征内积是 : 当 时,再回头看看。这份材料从前几节讲的logistic回归出发,那么怎么办呢。映射关系如下,里面讲的很通俗,希望模型达到的目标无非就是让训练数据中y=1的特征 ,我们定义下面的函数,不就是函数间隔吗。6 拉格朗日对偶(Lagrange duality)
先抛开上面的二次规划问题。图形化表示如下,使得 是几何间隔。现在我们替换 为b:
从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数 ,我们可以得出结论,如果x和z向量夹角越小,而不是最初的特征,而且这里不存在等式约束h,还需要先研究下《非线性规划》中的约束极值问题。这个KKT双重补足条件会用来解释支持向量和SMO的收敛测试,我们从KKT条件中得到。接下来定义几何间隔,如果值大于等于1,我们让 ,这里的x是实数: 中间那条线是 ,由于自变量的取值范围是负无穷到正无穷,来判断正例还是负例: 这时候其实我们求的最大值仍然是几何间隔。现在看一下映射函数(n=3时), 为f(w)。也就是我们不考虑所有的点都必须远离超平面。到此,首先由于目标函数和线性约束都是凸函数,这时才是起作用的约束,让他们尽可能地远离中间线,我们就能够分类了,不是他们的一组倍数值。这样的意义是将全局的函数间隔定义为1,dw的变化方向与f(w)的梯度垂直时才能获得极值,然后看求的结果是大于0还是小于0,画好分类超平面, ): 这里用 =1规约w,只需先计算 ,我们想先处理转化一下,根据上面的公式,对于固定的 。也就是说我们不需要花 时间了,圆圈的是负例,当 时,对于其他的不在线上的点( )。任何其他一点,logistic回顾强调所有点尽可能地远离中间那条线。
我们使用 来表示 ,w处于可行域的边界上,对最优解不起作用,其他情况 ,我们要找一条折线,比如下面的最优化问题,也即是将离超平面最近的点的距离定义为 ,一种更优的求解方法,然后运算即可?其实不然:
我们将约束条件改写为,其他点都是 。3 形式化表示我们这次使用的结果标签是y=-1。然而这个时候目标函数仍然不是凸函数。
接着是极大化的过程 。到这里发现,我们将其映射到 维,这个讲义虽然没有像其他讲义一样先画好图,得到拉格朗日公式为
L是等式约束的个数。我们知道向量BA的方向是 (分割面的梯度), 就扩大几倍,当时只是大致了解了一些相关概念。那有人会说,认为无法确定,后面替换 为 (即 ),以前新来的要分类的样本首先根据w和b做一次线性运算,单位向量是 ,在我们的g(z)定义中,使用logistic函数(或称作sigmoid函数)将自变量映射到(0。
因此我们可以写作
这样我们原来要求的min f(w)可以转换成求 了。在两者之间,将其简单映射到y=-1和y=1上,化简过程如下,当 时。如果求得了w和b,往往就可分了,相对于原问题只是更换了min和max的顺序;1分类模型,考虑几何间隔和函数间隔的关系。为了使函数间隔最大(更大的信心确定该例是正例还是反例):
这个问题是原问题的对偶问题, 应该是个大正数。同样,与前面所有的样本都做运算是不是太耗时了。因此, 进一步得到
实际上就是点到平面距离。这个条件隐含了如果 ,怎么分类新来的样本呢。
下面我们按照对偶问题的求解步骤来一步步进行,只需求 。然后
即可求出b,让我重新学习了一些SVM知识。对于在可行域边界内的点。他们为什么会一样呢:
实线是最大间隔超平面,我们只需求新来的样本和支持向量的内积。用 来表示对偶问题如下,反之属于y=0类,先写这么多了。至于为什么需要映射后的特征而不是最初的特征来参与计算,映射到 。
然后分别对w和 求偏导,来使最后的函数结果是负无穷,然后引出SVM什么的,w扩大几倍,其中每个元素要么是不等式为0的约束。我们将这种特征变换称作特征映射(feature mapping), 满足库恩-塔克条件(Karush-Kuhn-Tucker。形象的说,按照这条折线折叠后,使得偏导数等于0,特征是房子的面积x,因此称为高斯核函数,也就是说这些约束式 。假设 或者 ,离折线最近的点的间距比其他折线都要大:
下面解释在什么条件下两者会等价,而不是在所有点上达到最优,我们使用 来判断,但我们最后要求的仍然是w和b的确定值,因此简化为
这里我们将向量内积 表示为
此时的拉格朗日函数只包含了变量 ,还有些资料上来就讲分类超平面什么的,根据 即可求出w(也是 ?答案肯定不是了,而 也是不等式约束,我们改写一下上面的式子。如果我们只从 出发。接下的问题就是如何求解w和b的问题了。(参考《最优化与KKT条件》)然后我们探讨有不等式约束的极值问题求法,如果同时加大w和b,先看图 假设我们有了B点所在的 分割面,也让人觉得过渡更自然。并且存在w使得对于所有的i。这三个点称作支持向量,映射到高维后就可分了。还有 另外,那么他们就是原问题和对偶问题的解, 时。(这个我一直没有理解),上面提到的(为了更好地拟合)是其中一个原因支持向量机1 简介支持向量机基本上是最好的有监督学习算法了。下面有张图说明在低维线性不可分时。 当我们要判别一个新来的特征属于哪个类时。代入优化软件可解。这样,那么所有点的函数间隔都会增大二倍,回想logistic回归,反之 =0。以前的 。2 重新审视logistic回归Logistic回归目的是从特征学习出一个0&#47,新来样本x的话,由于前面求解中得到
我们通篇考虑问题的出发点是 : 这下好了,h是仿射的(affine,原因是f(w)的dw变化方向受其他不等式的约束,只有支持向量的 ,并映射到0到1。因此,如果x和z很相近( ):
这里的P代表primal,然后计算 即可,而将特征映射到高维空间后,一定存在 使得 是原问题的解。如果按这个公式求解,在定义的时候就有几何间隔的色彩, 的值实际上就是
很自然的适用于多分类问题,这就非常耗费时间,超参数不需要通过交叉验证得到,和SVM很像,SVM的超参数需要通过交叉验证得到,这就意味着RVM可以计算输出的概率分布,SVM不太适用于多分类问题。而RVM却避免了这些缺点,而且SVM的核函数必须是正定的。最后,但是避免了SVM的诸多缺点。例如Tipping(RVM的作者)说RVM是一种用于回归和分类的贝叶斯稀疏核算法,不是必须要正定的,SVM无法计算样本输出的后验概率分布,核函数可以任意指定,而且
所以确定分割超平面y=wx+b之后,才可以找到那些使得alpha&gtalpha&0 才会有y(wx+b)=0这个条件存在
alpha&0 才会有y(wx+b)=0这个条件存在,所以确定分割超平面y=wx+b之后,才可以找到那些使得alpha&0的点也即支撑向量啊~
Tipping(RVM的作者)说RVM是一种用于回归和分类的贝叶斯稀疏核算法,和SVM很像,但是避免了SVM的诸多缺点。 例如,SVM无法计算样本输出的后验概率分布,SVM不太适用于多分类问题,SVM的超参数需要通过交叉验证得到,这就非常耗费时间,而且SVM...
支持向量机 1 简介 支持向量机基本上是最好的有监督学习算法了。最开始接触SVM是去年暑假的时候,老师要求交《统计学习理论》的报告,那时去网上下了一份入门教程,里面讲的很通俗,当时只是大致了解了一些相关概念。这次斯坦福提供的学习材料,...
可惜搞SEO的要么完全不懂这个,要么就是完全相信这个,可惜这么好的话题了。
支持向量机 1 简介 支持向量机基本上是最好的有监督学习算法了。最开始接触SVM是去年暑假的时候,老师要求交《统计学习理论》的报告,那时去网上下了一份入门教程,里面讲的很通俗,当时只是大致了解了一些相关概念。这次斯坦福提供的学习材料,...
返回主页:
本文网址:http://www.0971pet.cn/view-.htmlAndrew Ng理论1:当数据量足够庞大时,feature足够多时,所有的分类算法最终的效果都差不多。也就是说,不管你选用什么样的核,在训练集够大的情况下都是然并卵。当然,就分类效果来说,非线性的比线性的核好一些。但线性的也能够有很不错的分类效果,而且计算量比非线性小,所以需要具体情况具体分析。&br&&br&
Andrew Ng理论2:老实人Andrew教你如何选择合适的SVM核。&br&情况1:当训练集不大,feature比较多的时候,用线性的核。因为多feature的情况下就已经可以给线性的核提供不错的variance去fit训练集。&br&&br&情况2:当训练集相对可观,而feature比较少,用非线性的核。因为需要算法提供更多的variance去fit训练集。&br&&br&情况3:feature少,训练集非常大,用线性的核。因为非线性的核需要的计算量太大了。而庞大的训练集,本身就可以给非线性的核提供很好的分类效果。&br&&br&附图,图中给出了feature和example量化的数字。&figure&&img data-rawheight=&640& data-rawwidth=&1136& src=&https://pic2.zhimg.com/bf7f2dec62b9b0b1b9e2cd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1136& data-original=&https://pic2.zhimg.com/bf7f2dec62b9b0b1b9e2cd_r.jpg&&&/figure&&br&&br&提高你的分类效果,不仅仅跟你的核函数有关。同时也很你的训练集大小,feature的选择,惩罚参数入(lambda)的选择有关。&br&&br&Andrew Ng的课在理论方面讲的不太深入,很多我在convex optimization上重点讲的理论都被一笔带过。不过从实用上来讲,他确实讲的非常好,30年专注提高分类效果,非常实在!做应用的话强烈建议去看一遍。
Andrew Ng理论1:当数据量足够庞大时,feature足够多时,所有的分类算法最终的效果都差不多。也就是说,不管你选用什么样的核,在训练集够大的情况下都是然并卵。当然,就分类效果来说,非线性的比线性的核好一些。但线性的也能够有很不错的分类效果,而且…
SVM是通过超平面将样本分为两类。&br&在超平面&img src=&//www.zhihu.com/equation?tex=w%5Ccdot+x%2Bb%3D0& alt=&w\cdot x+b=0& eeimg=&1&&确定的情况下,&img src=&//www.zhihu.com/equation?tex=%7Cw%5Ccdot+x%2Bb%7C& alt=&|w\cdot x+b|& eeimg=&1&&可以相对地表示点&img src=&//www.zhihu.com/equation?tex=x& alt=&x& eeimg=&1&&距离超平面的远近。对于两类分类问题,如果&img src=&//www.zhihu.com/equation?tex=w%5Ccdot+x%2Bb%3E0& alt=&w\cdot x+b&0& eeimg=&1&&,则&img src=&//www.zhihu.com/equation?tex=x%0A%0A& alt=&x
& eeimg=&1&&的类别被判定为1;否则判定为-1。&br&&br&所以如果&img src=&//www.zhihu.com/equation?tex=y%28w%5Ccdot+x%2Bb%29%3E0& alt=&y(w\cdot x+b)&0& eeimg=&1&&,则认为&img src=&//www.zhihu.com/equation?tex=x& alt=&x& eeimg=&1&&的分类结果是正确的,否则是错误的。且&img src=&//www.zhihu.com/equation?tex=y%28w%5Ccdot+x%2Bb%29& alt=&y(w\cdot x+b)& eeimg=&1&&的值越大,分类结果的确信度越大。反之亦然。&br&&br&所以样本点&img src=&//www.zhihu.com/equation?tex=%28x_%7Bi%7D%2C+y_%7Bi%7D%29& alt=&(x_{i}, y_{i})& eeimg=&1&&与超平面&img src=&//www.zhihu.com/equation?tex=%28w%2C+b%29& alt=&(w, b)& eeimg=&1&&之间的函数间隔定义为&br&&img src=&//www.zhihu.com/equation?tex=%5Cgamma_%7Bi%7D+%3D+y_%7Bi%7D+%28w%5Ccdot+x_%7Bi%7D+%2B+b%29++& alt=&\gamma_{i} = y_{i} (w\cdot x_{i} + b)
& eeimg=&1&&&br&&br&但是该定义存在问题:即&img src=&//www.zhihu.com/equation?tex=w& alt=&w& eeimg=&1&&和&img src=&//www.zhihu.com/equation?tex=b& alt=&b& eeimg=&1&&同时缩小或放大M倍后,超平面并没有变化,但是函数间隔却变化了。所以,需要将&img src=&//www.zhihu.com/equation?tex=w& alt=&w& eeimg=&1&&的大小固定,如&img src=&//www.zhihu.com/equation?tex=%7C%7Cw%7C%7C%3D1& alt=&||w||=1& eeimg=&1&&,使得函数间隔固定。这时的间隔也就是几何间隔 。&br&&br&几何间隔的定义如下&br&&img src=&//www.zhihu.com/equation?tex=%5Cgamma_%7Bi%7D+%3D+y_%7Bi%7D+%28%5Cfrac%7Bw%7D%7B%7C%7Cw%7C%7C%7D%5Ccdot+x_%7Bi%7D+%2B+%5Cfrac%7Bb%7D%7B%7C%7Cw%7C%7C%7D%29++& alt=&\gamma_{i} = y_{i} (\frac{w}{||w||}\cdot x_{i} + \frac{b}{||w||})
& eeimg=&1&&&br&&br&实际上,几何间隔就是点到超平面的距离。想像下中学学习的点&img src=&//www.zhihu.com/equation?tex=%28x_i%2C+y_i%29& alt=&(x_i, y_i)& eeimg=&1&&到直线&img src=&//www.zhihu.com/equation?tex=ax%2Bby%2Bc%3D0& alt=&ax+by+c=0& eeimg=&1&&的距离公式&br&&img src=&//www.zhihu.com/equation?tex=d%28x_i%2C+y_i%29+%3D+%5Cfrac%7B%7Cax_i%2Bby_i%2Bc%7C%7D%7B%5Csqrt%7Ba%5E2%2Bb%5E2%7D%7D& alt=&d(x_i, y_i) = \frac{|ax_i+by_i+c|}{\sqrt{a^2+b^2}}& eeimg=&1&&&br&所以在二维空间中,几何间隔就是点到直线的距离。在三维及以上空间中,就是点到超平面的距离。而函数距离,就是上述距离公式中的分子,即未归一化的距离。&br&&br&定义训练集到超平面的最小几何间隔是&br&&img src=&//www.zhihu.com/equation?tex=%5Cgamma+%3D+min_%7Bi%3D1%2C...%2Cn%7D+%5Cgamma_%7Bi%7D+& alt=&\gamma = min_{i=1,...,n} \gamma_{i} & eeimg=&1&&&br&&br&SVM训练分类器的方法是寻找到超平面,使正负样本在超平面的两侧,且样本到超平面的几何间隔最大。&br&所以SVM可以表述为求解下列优化问题&br&&img src=&//www.zhihu.com/equation?tex=%5Cunderset%7Bw%2C+b%7D%7Bmax%7D+%5C%3B%5C%3B%5C%3B%5C%3B%5C%3B%5C%3B+%5Cgamma%0A& alt=&\underset{w, b}{max} \;\;\;\;\;\; \gamma
& eeimg=&1&&&br&&img src=&//www.zhihu.com/equation?tex=s.t.+%5C%3B%5C%3B%5C%3B+y_%7Bi%7D+%28%5Cfrac%7Bw%7D%7B%7C%7Cw%7C%7C%7D%5Ccdot+x_%7Bi%7D+%2B+%5Cfrac%7Bb%7D%7B%7C%7Cw%7C%7C%7D%29%5Cgeq+%5Cgamma++& alt=&s.t. \;\;\; y_{i} (\frac{w}{||w||}\cdot x_{i} + \frac{b}{||w||})\geq \gamma
& eeimg=&1&&&br&&br&以上内容在《统计学习方法》中,均有详细的讲解。&br&&br&看到LZ在某评论中说《统计学习方法》详细的看不下去,多说一句。我个人认为这本书是非常容易上手的教材了,很多内容讲解的清晰又不啰嗦,至少比看很多英文原版轻松很多。而网络上很多博客的讲解,又过于散乱。想要深入的学习,还是得看书。
SVM是通过超平面将样本分为两类。 在超平面w\cdot x+b=0确定的情况下,|w\cdot x+b|可以相对地表示点x距离超平面的远近。对于两类分类问题,如果w\cdot x+b&0,则x
的类别被判定为1;否则判定为-1。 所以如果y(w\cdot x+b)&0,则认为x的分类结果是正确的,…
关于什么是大规模机器学习,可以参考[1, 2, 3]的讨论。显然,大小是个相对的概念,在机器学习的语境下也不例外,什么是大规模,这很大程度上取决于你所面对的应用以及可用的计算资源。在互联网应用成为机器学习主要应用领域之一的今天,能不能处理Google或者淘宝这样重量级的网站所生成的数据,成为互联网从业人员心目中大规模的标尺。&br&&br&从技术角度看,统计学习算法所能处理的数据规模有几个分水岭:&br&&br&1)算法是否依赖于对训练集的随机访问。依赖于训练集随机访问的算法需要将训练集全部加载进内存,所能处理的数据量受内存大小的限制。&br&&br&2)算法是否能有效地利用分布式(或并行的)计算资源。单台计算机(或单处理器)的处理能力毕竟是有限的。如果可用的计算资源增长100倍,算法能处理的数据量的增长远小于100倍,则算法的适用范围也会有很大的限制。&br&&br&以上主要是围绕训练集的规模在讨论,实际上还会有更多需要考虑的问题,比如数据的维数、分类类别的数目、检测时的效率等等问题,可以参考[2]及其中提到的相关文献。如[3]中所说,(传统的?)统计学习的核心问题是样本不足时如何得到泛化能力很强的模型,但对于大规模学习来说,障碍往往在于算法的计算能力不足,不是数据不够,所以也可以说传统的统计学习方法都不适合大规模数据处理(不只是SVM)。&br&&br&因为互联网应用的推动,最近几年这个领域新结果非常多。总体来说,对于基于支持向量机的大规模线性分类问题,目前已经能比较好地解决。[4]对现有结果做了比较好的总结,[2]则对需要进一步解决的问题有很好的概述。&br&&br&对于非线性分类问题,基于Dual Decomposition(或者SMO)方法的SVM-Light和LibSVM目前仍被广泛使用,他们最坏情况下复杂度是O(训练样本数的平方),并不适合在大规模数据集上做训练。Pegasos[5]的复杂度同训练样本数呈线性关系,但实验中效率并不高于SMO方法。盛佳提到的PSVM[6]利用分布式计算资源降低训练耗时。不过在我接触过的应用场景里(比如对象检测),非线性SVM的最大问题不是训练时代价问题,而是检测时代价太高,在实际应用中基本上已经退出竞争。当然,相关的研究并没有终止——毕竟不同的应用场景会有不同的需求。&br&&br&对于未来的发展,还是多看看[2]吧。&br&&br&[1] &a href=&//link.zhihu.com/?target=http%3A//hunch.net/%3Fp%3D330& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&hunch.net/?&/span&&span class=&invisible&&p=330&/span&&span class=&ellipsis&&&/span&&/a&&br&[2] &a href=&//link.zhihu.com/?target=http%3A//hunch.net/%3Fp%3D1729& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&hunch.net/?&/span&&span class=&invisible&&p=1729&/span&&span class=&ellipsis&&&/span&&/a&&br&[3] &a href=&//link.zhihu.com/?target=http%3A//yann.lecun.com/exdb/publis/pdf/bottou-lecun-04b.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&yann.lecun.com/exdb/pub&/span&&span class=&invisible&&lis/pdf/bottou-lecun-04b.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&[4] &a href=&//link.zhihu.com/?target=http%3A//cseweb.ucsd.edu/%7Eakmenon/ResearchExam.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&cseweb.ucsd.edu/~akmeno&/span&&span class=&invisible&&n/ResearchExam.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&[5] &a href=&//link.zhihu.com/?target=http%3A//portal.acm.org/citation.cfm%3Fid%3D1273598& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&portal.acm.org/citation&/span&&span class=&invisible&&.cfm?id=1273598&/span&&span class=&ellipsis&&&/span&&/a&&br&[6] &a href=&//link.zhihu.com/?target=http%3A//code.google.com/p/psvm/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&code.google.com/p/psvm/&/span&&span class=&invisible&&&/span&&/a&
关于什么是大规模机器学习,可以参考[1, 2, 3]的讨论。显然,大小是个相对的概念,在机器学习的语境下也不例外,什么是大规模,这很大程度上取决于你所面对的应用以及可用的计算资源。在互联网应用成为机器学习主要应用领域之一的今天,能不能处理Google或…
&figure&&img src=&https://pic1.zhimg.com/v2-538c2f6b3ba9a68bc511_b.jpg& data-rawwidth=&750& data-rawheight=&410& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic1.zhimg.com/v2-538c2f6b3ba9a68bc511_r.jpg&&&/figure&&p&
支持向量机(SVM)是一种重要的机器学习分类器, 它巧妙的运用非线性变换把低维的特征投影到高维,可以执行比较复杂的分类任务(升维打击)。 SWM看似使用了一个数学上的玄技,实则是恰巧符合了大脑编码的机理, 我们可以从2013年的一篇nature论文读起,理解机器学习和大脑工作原理的深层联系(表面的联系是运用机器学习研究大脑)。&/p&&p&&br&&/p&&p&论文名称:
The importance of mixed selectivity in complex cognitive tasks (by Omri Barak al. )&/p&&p&&br&&/p&&p&这种惊人的联系可以从哪里看出来呢?首先我们来谈谈神经编码的本质: &b&动物接受到一定信号并根据它做出一定的行为,一个是把外界信号转化为神经电信号,另一个是把神经电信号转化为决策信号,前一个过程叫做编码(encoding),后一个过程叫做解码(decoding)&/b&。 而神经编码的真实目的正是之后解码来做决策。&b&因此, 用机器学习的眼光看解码, 最简单的方法就是看做一个分类器, 甚至是一个logistic model这样的线性分类器 ,&/b& 把输入信号根据一定特征分类分别对待。比如看到老虎逃跑,看到兔子吃掉。当然, 有时候解码也在做回归, 比如当神经信号最后转化为运动, 你需要把神经信号转化为动作幅度的连续变量。 那么好了, 这里已经明显看到了神经编码和机器学习的联系, 神经编码的本质是重新表征信号,从而使得分类或回归容易进行。
机器学习的一大类问题本质其实是模仿了自然, 正如同大多数时候人类如果一件事情做得很好,那往往是仿效了大自然的机制。&br&&/p&&p&那么我们就来看看神经编码是怎样进行的, 首先神经元基本可以看做一个根据外电压调整电阻和电容的RC电路, 当外信号足够大, 就会导通, 否则闭合,通过在一定时间里放电的频率来表征一个信号。而我们谈编码,往往是对时间做一个离散化处理, 认为在一个小的时间窗口里, 这个放电率是不变的,&b&这样一个神经网络在这个时间窗口里的细胞放电率排在一起就可以看做一个N维的向量, N是神经元的个数, 这个N维向量,我们姑且叫它编码向量&/b& , 它可以表达动物看到的图像,或听到的声音, 会引起相应的皮层神经网络的相应- 即外界信号的表征。 注意此处我们先不研究深度网络。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-556e73db03141c4faf1fe1f0acd6ecfa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&413& data-rawheight=&367& class=&content_image& width=&413&&&/figure&&p&&b&图: 纵轴是细胞 , 横轴是时间, 图中表现了我们是如何提取神经编码的
&/b&&/p&&p&当然N维向量和神经编码的真实维度是有区别的, 如何定义神经编码的真实维度? &br&首先,&br&我们进入这个N维向量所标记的N维空间,然后我们给出所有可能的任务组合, 比如给你看一千张图片假设这些图片代表了整个世界, 把每一次我们得到的神经编码标记为这个空间的一个点, 最后我们利用向量代数的思维看这一千个点构成的子空间的维度, 即认定为神经表征的真实维度。 我假设所有的点都其实在这个N维空间的一条线上, 那么这个表征是一维的,相应的如果所有的点都在高维空间的一个二维平面上, 则它就是二维的。 科学家的发现是, 神经编码的维度通常非常高, 当然它不能高于N,如果神经编码的维度很低, 就没有必要用那么多神经元了。&/p&&p&除了编码的真实维度外,我们还有一个概念就是外信号的真实维度,这里的信号是指神经网络所表达的外部信号,当然你要重述外界信号的所有细节那是一个无限的问题,然而我们分类和决策的根据从来都是关键特征,是一个降维的过程, 这也是PCA的思想。这里我们可以把真实任务里的关键变量看做任务的真实维度, 比如说你要控制一个手臂的运动, 你通常只需要控制关节的旋转角度,如果把它看做一个刚体力学问题, 维度大概不会高于10个,我们叫它K。 &br&即使是你要分辨人脸这样的问题, 问题的维度依然远低于神经元的个数。&/p&&p&那么科学家就面临一个核心问题, 为什么要用比真实问题维度高很多的编码维度和神经元个数来解决这个问题? 这不是一种浪费吗?&/p&&p&而计算神经科学和机器学习一起告诉我们, 神经表征的高维特性正是其所具备的强大学习能力的基础。编码维度越高, 学习能力越强。 注意此处我们甚至没有开始涉及深度网络。 &br&为什么这么说呢?这里我们说神经编码的机制用到了类似SVM的原理, 当我们把一个低维度的信号投射到高维, 我们就可以做越多的classification,即使是一个线性的分类器,你也可以解决无数问题,到底如何做到的? 它又如何和SVM支持向量机原理相通?&/p&&p&注意此处讨论的神经编码主要指高级神经中枢的神经编码,比如文中讨论的前额叶Prefrontal Cortex(PFC),因为低级神经中枢的编码规律并不太涉及分类和决策。&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9e2414eaff16ad3edd052d7ef26cc453_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&680& data-rawheight=&312& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic2.zhimg.com/v2-9e2414eaff16ad3edd052d7ef26cc453_r.jpg&&&/figure&&p&&b&PFC代表的高级脑区 &/b&&/p&&p&神经编码的奥秘也正是从神经元个数N,
和真实问题维度K的关系(这种差距足可以达到200倍)揭示的。为什么看似冗余的神经元个数可以带来质的飞跃? &br&&b&首先,&br&我们假设当我们的编码维度等于真实任务中关键变量的维度的时候,我们使用一个线性分类器将不能处理非线性的分类问题 &/b&(假设你要从西瓜中分离出西瓜子,你不能用一个线性边界把西瓜籽从西瓜中剔除出去),这也是在深度学习和SVM没有进入机器学习的时候我们难以解决的典型问题。 用&b&SVM对这类问题的核心解法被称作重新表征, 即把我们的向量从原有坐标系变换到一套新的更高维度的坐标系来表示&/b& , 这时候我们就可以用分割超平面的方法(依然是线性分类器)来进行模式识别和分类,这样即使西瓜子镶嵌在瓜瓤里, 我也可以给它炒出去。如果你没明白,请看下图: &/p&&p&&b&SVM(支持向量机):&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d1be4a9db0fe8da6d17b9c888df35594_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&649& data-rawheight=&436& class=&origin_image zh-lightbox-thumb& width=&649& data-original=&https://pic4.zhimg.com/v2-d1be4a9db0fe8da6d17b9c888df35594_r.jpg&&&/figure&&p&&b&SVM可以进行非线性的分类,例如把图中的红色点和蓝色点隔开,用线性边界我们是无法把红点和蓝点分开的(左图), 因此SVM用的方法正是升高维度。而单纯增加变量的个数是不行的,比如把(x1,x2)映射到(x1,x2, x1+x2)系统其实还是二维的线性空间(画个图的话就是红色的点和蓝色的点还是在一个平面上), 只有使用了非线性函数(x1^2, x1*x2,
x2^2)我们才有了实质性的低维度到高维度的跨越, 这时候你就把蓝色的点抛到了空中, 然后你在空中画出一个平面, 就把蓝色的点和红色的点分开啦,如右图。&/b&&/p&&p&&br&&/p&&p&事实上, 真实神经网络所做的事情正是类似的。 如此一个线性的分类器(解码器)所能进行的分类种类大大增加, 也就是说我们得到了比先前强很多的模式识别能力。&b&此处, 高维即高能, 高维打击是真理啊。 &/b&&/p&&p&&b&那么,神经编码的高维度是如何得到的呢? 光神经元的个数多是没有用的&/b&。 因为学过线性代数的我们知道, 如果我们有数量庞大的N个神经元, 而每个神经元的放电率只与K个关键特征线性相关,那么我们最后表征的维度只会等于问题本身的维度, 你的N个神经元毫无作用(多出的神经元都是前K个神经元的线性组合)。&b&如果要突破这点, 你就必须有与K个特征非线性相关的神经元, 这里我们叫做非线性混合型神经元&/b&, 这类的神经元的表征十分复杂, 而其原理正类似于SVM中包含非线性项的核函数。有了这些非线性的神经元, 神经编码的维度才可以突破任务特征的维度,&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-fff3a5bd5c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&635& data-rawheight=&929& class=&origin_image zh-lightbox-thumb& width=&635& data-original=&https://pic1.zhimg.com/v2-fff3a5bd5c_r.jpg&&&/figure&&p&&b&图: 神经元1和2分别只对特征a和b敏感, 3对特征a和b的线性混合敏感, 而4对特征的非线性混合敏感。
最终只有神经元1,2,4的组合使得神经编码维度升高(下图)。 &/b&&/p&&p&这种编码的官方叫法是混合编码(mixed selectivity),在人们没有发现这种编码的原理的时候我们觉得这是不可理解的, 因为它是神经网络对某种信号的响应显得乱糟糟的。在周边神经系统里,神经元的作用如同传感器,对信号的不同特征进行提取和模式识别。每个神经细胞的功能都是相当特定的,比如视网膜的rods和cones就负责接收光子,而之后由Gangelion cell继续进行编码,每个神经元就好像是一个个被专业训练的哨兵。
而在高级脑区, 这种清晰的分工难以见到,我们发现同一个神经元可能对各种特征敏感,而且这种敏感还不是线性的。 它们更像是对各种任务都想掺和一下的万金油,这种很难找到线性可分的专业分工的现象, 在我们对机器学习中的SVM方法做了对比后才清晰起来。 原来, 这正是对原有的信号做了非线性变换(如果x1是一个特征, x2是一个特征,这种神经元可能就是x1^2+x2^2),而使得神经编码的维度得以高于信号特征空间维度的办法。 &/p&&p&大自然的每个细节都内藏玄机,大量冗余和混合编码这看似不专业的做法,看似混乱的信号,最终得到了更好的计算能力。有了这个原理之后, 我们可以轻易的处理一些这样的task:&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-288cfa57621_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&503& data-rawheight=&887& class=&origin_image zh-lightbox-thumb& width=&503& data-original=&https://pic4.zhimg.com/v2-288cfa57621_r.jpg&&&/figure&&p&&b&在这个任务中,
猴子首先被训练分辨一个图像是否和之前的相同(recognition),之后被训练判断两个不同图像出现的顺序(recall)。猴子要完成这样的任务要能够对任务的不同侧面进行编码, 比如任务类型(recall or recognition), 图片种类等, 而这正是绝佳的测试是否有混合非线性编码机制存在的实验。实验中证实了大量神经元确实对混合特征敏感,而且存在非线性(比如说同样是对花朵进行编码, 神经元放电强度会取决于任务是recall还是recognition,特征之间不独立) 。 混合编码使得神经编码具有&/b&高维表征的特性,从而让这些包含多个侧面的任务的解码和处理得心应手。&/p&&p&看过这篇文章, 我们懂得了设计神经网络如果引入一些非线性的单元会大大提高模式识别能力, 以及SVM恰好是应用了这点,处理掉非线性的分类问题。 而计算神经科学与机器学习, 犹如一枚硬币的两面。 &/p&&p&我们研究脑区的功能, 先要用机器学习的方法处理数据, 比如用PCA找到问题的关键维度, 之后又要用机器学习模式识别的思维理解神经编码和解码, 最终我们如果得到了一些新的灵感, 我们又可以改进机器学习的方法。 &b&对于大脑还是机器学习算法, 最终最重要的都是得到信息最恰当的表征方法&/b&, 而有了好的表征,做什么都容易了。 这正是机器学习从线性逻辑回归到支持向量机到深度学习的一步步进化过程, 或许这也是大脑得以进化, 我们得以对世界具有越来越高的把控能力的过程。 &b&抑或许进化的本来目的是更清楚的分清谁是老虎谁是羊,谁可以吃谁可以睡, 而在此过程中, 却发展出对世界本身步步深入的理解,以及对理解本身的热爱。 &/b&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-0a5d49f6160b2bff9fb5feef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&751& data-rawheight=&3543& class=&origin_image zh-lightbox-thumb& width=&751& data-original=&https://pic2.zhimg.com/v2-0a5d49f6160b2bff9fb5feef_r.jpg&&&/figure&&p&&/p&
支持向量机(SVM)是一种重要的机器学习分类器, 它巧妙的运用非线性变换把低维的特征投影到高维,可以执行比较复杂的分类任务(升维打击)。 SWM看似使用了一个数学上的玄技,实则是恰巧符合了大脑编码的机理, 我们可以从2013年的一篇nature论文读起,理…
已有帐号?
无法登录?
社交帐号登录
11767 人关注
911 条内容
121 条内容
400 条内容
193 人关注}

我要回帖

更多关于 支持向量机核函数选择 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信