【机器学习】SVM核函数的计算

【机器学习】推导支持向量机SVM二分类中,我们已经推导出线性核SVM的对偶优化问题:

J=iαi12ijαiαjdidjk(xi)Tk(xj)=iαi12ijαiαjdidjK(xi,xj)subject to αidi=0,0αiC

在优化好αi 拉格朗日量后,我们得到的w和b为:
w=αidixib=(y1+y1)/2
需要注意的是,w 的表达式中有xi
  我们引入核函数K(xi,xj) 到SVM,必须注意到K(xi,xj)=ϕ(xi)Tϕ(xj) ,也就是说理论上核函数应该能拆开。在引入核函数的前提下,w的表达式为
w=αidiϕ(xi)T

  我们已知几个常用核函数,比如多项式核函数和径向基核函数。多项式核函数的的定义为
K(xi,xj)=(xTixj+1)n
假设n=2,那么拆开为
K(xi,xj)=(xTi)2x2j+2xixj+1=[(xTi)2,2xTi,1][(xTj)2,2xTj,1]T
这里,我们可以确实求出w的值。
  径向基核函数定义为
K(xi,xj)=e(xixj)2σ2=ex2iσ2ex2jσ2exTixjσ2=ex2iσ2ex2jσ2k=0(2xTixj/σ2)kk!=[ex2iσ2,1,21xiσ,222!(xiσ)2,...][ex2jσ2,1,21xjσ,222!(xjσ)2,...]T
结果表明,Φ(x) 函数是一个无限维度的函数。这说明,在工程上我们不一定能够完美地拆开核函数为K(xi,xj)=ϕ(xi)Tϕ(xj) 。之后还有很多各种类型的核函数,比如使用了tanh函数的核函数,这些核函数在工程上是很难拆分求解的,很难获取ϕ(x) 函数,亦难以求取w的确切值。
  那么如何求解引入复杂核函数的SVM呢?在优化求解J之后,我们可以获取并保存αi 。由于SVM只有少量支持向量(数据)对决策超平面有决定作用,很多拉格朗日参数αi0 ,我们可以只保存足够大的αi 以及对应的训练数据xi 、标记di ,不直接计算出w的确切值,这在工程上是确实可行的。
  当我们需要进行预测的时候,我们导入αi ,xidi ,然后把新数据x代入核函数,计算y=iαidiK(xi,x)+b 即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章