支持向量机,带你跳出轮回?
Posted 智能之河
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机,带你跳出轮回?相关的知识,希望对你有一定的参考价值。
引言:今天给大家介绍支持向量机(SVM),它与神经网络一直处于相互“竞争”的关系,可以认为它们都源自感知机(Perceptron)——这是Rosenblatt1958年发明的线性分类模型。现实中的分类问题通常都是非线性分类,神经网络是多层的非线性模型,而支持向量机则利用核函数把非线性问题巧妙地转换成线性问题。
支持向量机(SVM)是什么?
SVM是一种有监督的机器学习算法,可用于分类或回归,实际应用中主要用来处理分类问题。它找到最佳边界(optimal boundary)进行分类,当线性不可分时,则采用一种称为核函数(kernel)的技术来变换数据,然后基于这种变换算法找到最佳边界,进行分类。为方便理解,请看下面这张图:
SVM就是试图用一条线分开两种球,并且要找到这条线的最佳位置,使两种球分得越开越好:
但是如果两种球是这样放的,怎样让它们分开呢?
这个时候可以引入第三个维度。原来是在平面上,有两个维度:x 和 y。现在,让我们加入维度 z,并且让它以直观的方式出现:z =F( x,y) ,于是我们就有了一个三维空间,如下所示:
打个更形象的比方,想象有一个魔术师,轻吹一口气,让球直接飞到空中。然后,用一张纸插到两种球的中间。
请注意,现在我们处于三维空间,这张纸是z某个刻度上一个平行于x轴的平面。它在二维上的投影是这样:
现在看起来,两种球就像是被一条曲线分开了。
这样,你是不是很容易理解SVM了?那现在让我们再专业一些,回到那些唬人的专业术语。上面所举的例子中,球就是数据源(data),用于分开不同类球的线或纸叫做分类器( classifier), 最大化分类间隔叫做最优化(optimization),吹口气叫做建立核函数(kernelling), 那条线或那张纸叫做超平面(hyperplane),超平面是平面的抽象:在一维空间,超平面是一个点在二维空间,它是一条线;在三维空间,它是一个面;在更高维度上,你能够称它为超平面。离分界超平面最近的点就是支持向量(support vector)。
理论上,SVM几乎通用于所有分类,所以又称为万能分类器。
SVM背后的原理是什么?
SVM的目标是寻找最优分类超平面。对于非线性的SVM分类,可以通过核函数将将在低维空间中线性不可分的数据非线性映射到高维空间中,在高维空间中将样本线性分开。
SVM名为支持向量机,其实并不需要真正的向量,它可以用它们的数量积(点积)来进行分类,这意味着我们可以避免耗费计算资源。
· 想象一个我们需要的新空间:
o z = x² + y²
· 找到新空间中点积的形式:
o a · b = xa· xb + ya· yb + za· zb
o a · b = xa· xb + ya· yb + (xa² + ya²) · (xb² + yb²)
· 让 SVM 处理新的点积结果——这就是核函数
这就是核函数的技巧,它直接计算求取非线性分类器,可以减少大量的计算资源需求。如果内核是线性的,就会得到一个线性分类器。但如果使用非线性内核(如上例),我们可以在完全不改变数据的情况下得到一个非线性分类器:我们只需改变点积为我们想要的空间,SVM 就会对它忠实地进行分类。
还有一点要注意,核函数技巧实际上可以与其他线性分类器共同使用,如逻辑回归等。 SVM本身只负责找到最佳边界。
SVM如何用于自然语言分类?
相比于神经网络这样更先进的算法,支持向量机有两大主要优势:更高的速度、用更少的样本(千以内)取得更好的表现。这使得该算法非常适合文本分类问题。
有了这个算法,我们就可以在多维空间中对向量进行分类了。如何将它引入文本分类任务呢?首先你要做的就是把文本的片断整合为一个数字向量,这样才能使用 SVM 进行区分。换句话说,什么属性需要被拿来用作 SVM 分类的特征呢?
最常见的是词频,这意味着把文本看作是一个词袋,对于词袋中的每个单词都存在一个特征,特征值就是这个词出现的频率。问题也就被简化为:这个单词出现了多少次,并把这个数字除以总字数。在句子“Put up or shut up”中,单词 up出现的频率是 2/5=0.4,而shut 的频率是 1/5=0.2。
这样我们就可以让数据集中的每个单词都被几千(或几万)维的向量所代表,每个向量都表示这个单词在文本中出现的频率。通过这样的向量空间模型对文本进行结构化后,就可以把数据输入 SVM 进行训练了。
SVM不适用的场合
是否所有分类问题都能使用 SVM呢?很遗憾,SVM 的魅力也是它最大的缺点。复杂数据变换以及得到的决策边界平面难以解释,这就是为什么它通常被称为“黑箱”的原因。另外,SVM对大规模训练样本难以实施,解决多分类问题也存在困难。
进一步的启示
其实核函数技巧蕴含的思想也可以用到我们的生活中,这就是所谓的“大局观”或者“升维思考”的概念,当局限在自己固有的维度时,你再努力也只是在原有的圈子里打转,这时只有跳出这个轮回,才能根本解决这个问题。比如说一个人的成功,取决于一个“能力-站位-趋势”的多层体系,所谓的“取势、明道、优术”,个人的努力精进是放在最后一位的,所以如果你已经非常努力了却收效甚微,这时你就应该提升自己的格局,跳到更上一层,看到自己是否明白了世界运行的规律?而在已经洞察了世界运行的规律基础上,再升级一个层次,把握时代发展的趋势,并顺应这个趋势,那时你想不成功都难。
以上是关于支持向量机,带你跳出轮回?的主要内容,如果未能解决你的问题,请参考以下文章