您的位置:首页 > 其它

SVM Support Vector Machine

2013-04-07 14:09 246 查看
要理解SVM的思想,可先看看什么是最优间隔分类器。

SVM的主要思想可以概括为两点:

(1)它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。

(2)它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化。

为了解决第1点“维数灾难"的问题,引入了核函数来解决高维空间的计算问题。另外在训练数据过程中,对参数迭代优化的时候,由于参数需要在一定的条件下迭代,不能只是简单地控制一个参数而固定其它参数,需要同时控制2个参数来保证满足已经的条件,因此使用SMO(sequential
minimal optimization)算法来迭代计算。

对于第2目前比较粗浅的理解就是每个分类中的点到分割平面的距离中的最小值要尽量地大,根据最差的正样本和最差的负样本来决定分割平面的位置。因为在SVM中,只要每个分类的点离分割平面的距离>0,就说明我们的分类是“正确”的。但我们希望的是这个距离越大越好。

稍微解释下核函数的思想。

假设输入特征只有一维X,现在考虑构建一个三次方的函数来拟合因变量Y和自变量X的之间的关系。输入的特征是一次项,因此考虑引入特征映射函数:

Φ(x)=[x,x2,x3]T
也就是说,非线性函数Φ实现输入间X到特征空间F的映射,我们想对Y和Φ(x)建模学习算法,而不是简单的只考虑Y和x之间的关系。
在二维空间中,我们如果模型wTx+b进行分类,当需要对新数据分类时,需要计算新数据与训练数据之间两个特征的内积<X,Z>。引入特征映射函数后,我们需要计算的是内积<Φ(X),Φ(Z)>。试想一下,如果我们在高维空间里计算内积<Φ(X),Φ(Z)>,肯定会有“维数灾难”问题。因此,核函数的目的就是将高维空间的内积运算转化为低维输入空间的核函数计算,从而巧妙地解决了在高维特征空间中计算的“维数灾难”等问题。来看一个简单的例子。
假设X,Z∈Rn,K(X,Z)=(XTZ)2
将平方项展开,得到:K(X,Z)=(∑xizi)(∑xizi)=∑∑xixjzizj=∑(xixj)(zizj)
则:K(X,Z) = Φ(X)TΦ(Z),其中
Φ(X)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)T
计算Φ(X)的时间复杂度是O(n2),而计算K(X,Z)的时间复杂度为O(n)。
在计算的过程中,无需知道非线性变换函数Φ的形式和参数。核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。
核函数的确定并不困难,满足Mercer定理的函数都可以作为核函数。常用的核函数有:线性核函数,多项式核函数,径向基核函数,Sigmoid核函数和复合核函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: