Java教程

支持向量机(SVM) 凸优化与对偶问题求解

本文主要是介绍支持向量机(SVM) 凸优化与对偶问题求解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、对偶问题的转化

先写出一个转化对偶问题的一般性结论

原问题:

min:f(x)

s.t.:g_{i}(x)\leq 0

     h_{i}(x)=0

转化为的对偶问题是:

max:\theta (\alpha ,\beta )=\underset{\forall x}{inf}:[f(x)+\sum_{i=1}^{g}\alpha _{i}*g_{i}(x)+\sum_{i=1}^{h}\beta _{i}*h_{i}(x)]

s.t.:\alpha _{i}\geq 0

其中a,b是根据原问题的限制条件产生的新的变量。


二、SVM模型问题转化

原问题:

min:\frac{1}{2}\left \| w \right \|^{2}+C\sum_{i=1}^{N}\xi _{i}

s.t.:y_{i}(w^{T}x_{i}+b)\geq 1-\xi _{i}

\xi _{i}\geq 0

即:

min:\frac{1}{2}\left \| w \right \|^{2}-C\sum_{i=1}^{N}\xi _{i}

s.t.:1+\xi _{i}-y_{i}(w^{T}x_{i}+b)\leq 0

 \xi _{i}\leq 0

注意这里待求参数是w,xi,b。

转化为的对偶问题是:

\tiny max:\theta (\alpha ,\beta )=\underset{\forall w,\xi ,b}{inf}:[\frac{1}{2}\left \| w \right \|^{2}-C\sum_{i=1}^{N}\xi _{i}+\sum_{i=1}^{N}\alpha _{i}*[1+\xi _{i}-y_{i}(w^{T}x_{i}+b)]+\sum_{i=1}^{N}\beta _{i}*\xi _{i}]

s.t.:\alpha _{i}\geq 0,\beta_{i}\geq 0

注意这里实际只有a,b其实还是a只是为了区别不同的限制条件。

先求xita(a,b),分别对w,xi,b求偏导,再代回,得

max:\theta (\alpha ,\beta )=\sum_{i=1}^{N}\alpha _{i}-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}x_{j}

s.t.:0\leq \alpha_{i}\leq C \\ .\quad.\quad.\quad\sum_{i=1}^{N}\alpha _{i}y_{y}=0

这样的方程求解就比较容易了,书上说用SMO算法。得到所有的a;

大学课上编程实现的好像是梯度下降。。。

对于支持向量机的优化模型来说,原问题与对偶问题同解所以可以这么做,即minf(x)=max xita(a,b)。


三、对样本进行判别求解

1、按正常的逻辑来说,根据得到的a,可以带入求得w,b;从而得到超平面,可以带入判断yi是否大于0进行判别。计算方法如下,直接截图了,公式实在打不动了。

w:

 b:

 2、但考虑到用核函数时,具体的fa(x)时不知道的,只能得到fa(x1)*fa(x2)=K(x1,x2)这样的结果,所以我们计算不出来W,但可以通过计算w*x来规避这样的问题。

w:

 


四、总结

最后总结下SVM具体的流程,因为其中很多证明的步骤在运用时时不需要的,这样剩下的就不多了。

第一步:直接求解之前得到的对偶问题就行了 ,得到a。

第二步,计算得到超平面的偏移量b。

第三步,基于判别条件,带入y(wfa(x)+b)计算得到判别结果。

收官,公式实在太难打了。证明的部分有些我还不是特别理解就没写了,KKT条件那个略懂。

主要参考浙大机器学习那个。

这篇关于支持向量机(SVM) 凸优化与对偶问题求解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!