生存?还是毁灭?——哈姆雷特
可分?还是不可分?——支持向量机
之前一直在讨论的线性分类器,器如其名(汗,这是什么说法啊),只能对线性可分的样本做处理。如果提供的样本线性不可分,结果很简单,线性分类器的求解程序会无限循环,永远也解不出来。这必然使得它的适用范围大大缩小,而它的很多优点我们实在不原意放弃,怎么办呢?是否有某种方法,让线性不可分的数据变得线性可分呢?
有!其思想说来也简单,来用一个二维平面中的分类问题作例子,你一看就会明白。事先声明,下面这个例子是网络早就有的,我一时找不到原作者的正确信息,在此借用,并加进了我自己的解说而已。
例子是下面这张图:
我们把横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类。试问能找到一个线性函数把两类正确分开么?不能,因为二维空间里的线性函数就是指直线,显然找不到符合条件的直线。
但我们可以找到一条曲线,例如下面这一条:
显然通过点在这条曲线的上方还是下方就可以判断点所属的类别(你在横轴上随便找一点,算算这一点的函数值,会发现负类的点函数值一定比0大,而正类的一定比0小)。这条曲线就是我们熟知的二次曲线,它的函数表达式可以写为:
问题只是它不是一个线性函数,但是,下面要注意看了,新建一个向量y和a:
这样g(x)就可以转化为f(y)=<a,y>,你可以把y和a分别回带一下,看看等不等于原来的g(x)。用内积的形式写你可能看不太清楚,实际上f(y)的形式就是:
g(x)=f(y)=ay
在任意维度的空间中,这种形式的函数都是一个线性函数(只不过其中的a和y都是多维向量罢了),因为自变量y的次数不大于1。
看出妙在哪了么?原来在二维空间中一个线性不可分的问题,映射到四维空间后,变成了线性可分的!因此这也形成了我们最初想解决线性不可分问题的基本思路——向高维空间转化,使其变得线性可分。
而转化最关键的部分就在于找到x到y的映射方法。遗憾的是,如何找到这个映射,没有系统性的方法(也就是说,纯靠猜和凑)。具体到我们的文本分类问题,文本被表示为上千维的向量,即使维数已经如此之高,也常常是线性不可分的,还要向更高的空间转化。其中的难度可想而知。
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->小Tips:为什么说f(y)=ay是四维空间里的函数?
大家可能一时没看明白。回想一下我们二维空间里的函数定义
g(x)=ax+b
变量x是一维的,为什么说它是二维空间里的函数呢?因为还有一个变量我们没写出来,它的完整形式其实是
y=g(x)=ax+b
即
y=ax+b
看看,有几个变量?两个。那是几维空间的函数?(作者五岁的弟弟答:五维的。作者:……)
再看看
f(y)=ay
里面的y是三维的变量,那f(y)是几维空间里的函数?(作者五岁的弟弟答:还是五维的。作者:……)
用一个具体文本分类的例子来看看这种向高维空间映射从而分类的方法如何运作,想象一下,我们文本分类问题的原始空间是1000维的(即每个要被分类的文档被表示为一个1000维的向量),在这个维度上问题是线性不可分的。现在我们有一个2000维空间里的线性函数
f(x’)=<w’,x’>+b
注意向量的右上角有个 ’哦。它能够将原问题变得可分。式中的 w’和x’都是2000维的向量,只不过w’是定值,而x’是变量(好吧,严格说来这个函数是2001维的,哈哈),现在我们的输入呢,是一个1000维的向量x,分类的过程是先把x变换为2000维的向量x’,然后求这个变换后的向量x’与向量w’的内积,再把这个内积的值和b相加,就得到了结果,看结果大于阈值还是小于阈值就得到了分类结果。
你发现了什么?我们其实只关心那个高维空间里内积的值,那个值算出来了,分类结果就算出来了。而从理论上说, x’是经由x变换来的,因此广义上可以把它叫做x的函数(有一个x,就确定了一个x’,对吧,确定不出第二个),而w’是常量,它是一个低维空间里的常量w经过变换得到的,所以给了一个w 和x的值,就有一个确定的f(x’)值与其对应。这让我们幻想,是否能有这样一种函数K(w,x),他接受低维空间的输入值,却能算出高维空间的内积值<w’,x’>?
如果有这样的函数,那么当给了一个低维空间的输入x以后,
g(x)=K(w,x)+b
f(x’)=<w’,x’>+b
这两个函数的计算结果就完全一样,我们也就用不着费力找那个映射关系,直接拿低维的输入往g(x)里面代就可以了(再次提醒,这回的g(x)就不是线性函数啦,因为你不能保证K(w,x)这个表达式里的x次数不高于1哦)。
万幸的是,这样的K(w,x)确实存在(发现凡是我们人类能解决的问题,大都是巧得不能再巧,特殊得不能再特殊的问题,总是恰好有些能投机取巧的地方才能解决,由此感到人类的渺小),它被称作核函数(核,kernel),而且还不止一个,事实上,只要是满足了Mercer条件的函数,都可以作为核函数。核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。几个比较常用的核函数,俄,教课书里都列过,我就不敲了(懒!)。
回想我们上节说的求一个线性分类器,它的形式应该是:
现在这个就是高维空间里的线性函数(为了区别低维和高维空间里的函数和向量,我改了函数的名字,并且给w和x都加上了 ’),我们就可以用一个低维空间里的函数(再一次的,这个低维空间里的函数就不再是线性的啦)来代替,
又发现什么了?f(x’) 和g(x)里的α,y,b全都是一样一样的!这就是说,尽管给的问题是线性不可分的,但是我们就硬当它是线性问题来求解,只不过求解过程中,凡是要求内积的时候就用你选定的核函数来算。这样求出来的α再和你选定的核函数一组合,就得到分类器啦!
明白了以上这些,会自然的问接下来两个问题:
1. 既然有很多的核函数,针对具体问题该怎么选择?
2. 如果使用核函数向高维空间映射后,问题仍然是线性不可分的,那怎么办?
第一个问题现在就可以回答你:对核函数的选择,现在还缺乏指导原则!各种实验的观察结果(不光是文本分类)的确表明,某些问题用某些核函数效果很好,用另一些就很差,但是一般来讲,径向基核函数是不会出太大偏差的一种,首选。(我做文本分类系统的时候,使用径向基核函数,没有参数调优的情况下,绝大部分类别的准确和召回都在85%以上,可见。虽然libSVM的作者林智仁认为文本分类用线性核函数效果更佳,待考证)
对第二个问题的解决则引出了我们下一节的主题:松弛变量。
相关推荐
### SVM入门:SVM的八股简介 #### 1.1 SVM的基本概念 支持向量机(Support Vector Machine,简称SVM)是一种监督学习模型,主要用于分类和回归分析。SVM最早是由Cortes和Vapnik在1995年提出的。其核心思想是在特征...
SVM的独特之处在于,它并不受样本维度的影响,即使面对高维数据也能有效地工作,这是由于SVM的核心思想——核函数的引入,使得原本非线性可分的问题通过映射到高维空间变得线性可分。 机器学习的本质是找到一个模型...
SVM的一个关键优点在于它不受样本维度的影响,即使在高维空间中,SVM也能有效工作,这得益于其引入的核函数技术,它能够将低维输入数据映射到高维空间,从而实现非线性分类。 结构风险最小化是SVM优化目标的核心。...
其核心概念包括超平面、间隔、支持向量和核函数,通过这些工具,SVM能够在高维空间中找到最佳的决策边界。在实际应用中,SVM可以应用于各种领域,如文本分类、图像识别、生物信息学等。通过深入理解SVM的工作原理和...
- 非线性可分时,SVM引入核函数,将原始特征空间映射到高维空间,使得在高维空间中可以找到一个线性超平面进行分类。 3. **最大间隔**: SVM的目标是找到具有最大间隔的超平面,间隔(margin)定义为分类超平面与...
常用的核函数包括多项式核、径向基函数核(RBF)等。 #### SVM的应用场景 - **文本分类**:SVM可以用于识别文本中的情感倾向、主题分类等。 - **图像识别**:在计算机视觉领域,SVM被广泛应用于对象识别和分类任务...
- 参数选择:选择合适的核函数和参数 \(C\) 需要经验,对结果有较大影响。 - 解释性较差:核函数导致决策边界变得复杂,难以直观解释。 ### 7. SVM的应用 SVM已被广泛应用在各种领域,如文本分类、图像识别、生物...
SVM的一个关键优点是它关注的是VC维,这意味着即使在高维空间中,SVM也能有效地处理问题,这是因为它引入了核函数,使得高维数据能在低维空间内进行有效操作,特别适合文本分类等应用。 结构风险最小化是SVM算法的...
### SVM入门知识详解 #### 一、SVM概述与起源 支持向量机(Support Vector Machine,简称SVM)是一种有监督的学习模型,主要用于分类和回归分析。它是由Cortes和Vapnik在1995年首次提出的。自那时起,SVM因其在...
### SVM入门(七)为何需要核函数 #### 核心知识点概述 支持向量机(Support Vector Machine,简称SVM)是一种广泛应用于机器学习领域的分类与回归分析算法。本文档旨在解释为什么SVM中需要引入核函数(Kernel ...
在处理非线性可分问题时,SVM通过使用核函数将低维空间中的非线性问题转换为高维空间中的线性问题。常见的核函数包括多项式核、径向基核(Radial Basis Function, RBF)等。通过选择合适的核函数,SVM能够有效地处理...
- **作用**: 通过核函数可以将低维空间中的非线性问题转换为高维空间中的线性问题,从而解决了非线性分类的问题。 - **常见核函数**: - **线性核**: \(K(u, v) = u \cdot v\) - **多项式核**: \(K(u, v) = (u \...
### SVM入门:支持向量机详解 #### 一、SVM简介 支持向量机(Support Vector Machine,简称SVM)是由Cortes和Vapnik于1995年首次提出的机器学习算法。它是一种监督学习方法,在解决小样本、非线性和高维模式识别等...
总的来说,SVM是一种基于统计学习理论的高效机器学习模型,它通过最小化结构风险和利用核函数实现非线性分类,尤其适用于小样本和高维数据场景。SVM的这些特性使其在模式识别、文本分类、计算机视觉等领域有着广泛的...
这是由于SVM利用了核函数技术,将数据从原始空间映射到高维特征空间,从而实现非线性决策边界。 结构风险最小化是SVM优化目标的核心概念。在机器学习中,我们试图找到一个最优的假设来近似未知的真实模型。由于真实...