SVM算法理论推导
断断续续折腾了好几天,终于对SVM算法有了个大致的了解,趁热将自己的理解写下来,一方面加深自己的理解,另一方面以便日后有所遗忘时可随时查阅。理解有不对的地方,请大家多多批评指正。
(1)将原问题化为对偶问题
支持向量机的原问题:
那这个原问题对应的对偶问题是什么样的形式呢?我们再来回顾一下原问题与对偶问题的定义:
原问题:
定义一函数$L(w,\alpha,\beta)$为:
当然可以用矩阵写成简单的形式:
公式$(3)$中$\alpha^T$和$g(w)$都是$K$维的,而$\beta^T$和$h(w)$都是$M$维的。则原问题的对偶问题为:
其中$\inf \limits_{所有w}{~L(w,\alpha,\beta)~}$的意思是在限制$\alpha$和$\beta$的情况下遍历所有的$w$求最小值,即每确定一个$\alpha$和$\beta$都能算出一个最小值,即每一个$\alpha$和$\beta$都对应一个值,很明显,这是$\alpha$和$\beta$的函数,故写作$\theta(\alpha,\beta)$。那么公式$(4)$是针对所有的$\alpha$和$\beta$求最大值,即在所有的最小值中找最大的。
我们发现原问题和对偶问题的定义中原问题的限制条件都是小于等于0的,所以为了更好的进行改写,我们也需要对支持向量机的原问题,即公式$(1)$进行适当的改写,这样就可以很方便的写出其对偶问题。我们看到,$(1)$ 中的限制条件都是大于等于0的,我们要将他们改成小于等于0的,以此对应于$(2)$中的${g_i(w)\leq 0}$。具体改法如下:
我们也可以看出$(1)$中并没有对应于$(2)$中 $h_i(w)=0$的限制条件。这样支持向量机的原问题$(1)$就可以改写成如下形式的原问题:
我们就可以写出其对偶问题为:
上式中的$\alpha_i,\beta_i$就对应$(5)$式中的$\alpha_i$。$(2)$式中我们待求的是$w$,而对应到$(6)$式中我们待求的就是$W,b,\xi_i$,所以在$(7)$式中的$inf$下面是遍历所有的$W,b,\xi_i$。
(2)对偶问题化简
为了方便,我们令:
遍历所有的$W,b,\xi_i$求$L(W,b,\xi_i)$的最小值,我们利用$L(W,b,\xi_i)$对$W,b,\xi_i$求偏导并使偏导为0来求,最终得到的最小值的表达式肯定是$\alpha,\beta$的函数。
进一步可推得:
将式$(10)、(11)、(12)$带入公式$(7)$得:
计算时比较麻烦的是$\frac{1}{2}||W||^2$,这里将计算过程记录一下。$||W||^2$可以写作:
将公式$(14)$展开就可以得到:
则将式$(15)$中第一行中括号里的变量分别乘以整个第二行整个中括号的表达式,然后再加起来即可:
而我们又知道两个$\sum$在一起,表示第一个固定的情况下,第二个从头改变到到尾,然后第一个再改变一下,第二个再从头改变到尾,一直到第一个改变到最后,把整个过程加起来。所以上面的$(16)$式就可以写作:
接下来我们来看限制条件有什么变化:
所以最终可得对偶问题化简以后问题为:
其中的$\varphi(X_i)^T\varphi(X_j)$正好是核函数,从这点可看出我们并不需要知道$\varphi(X)$ 的显示表达就可进行求解。同时这也是一个二次规划问题,可以使用通用的二次规划算法来求解,但有一种更高效简单的算法叫SMO算法。这个算法我们以后再说。
(3)求出分割超平面
当我们要求$W$时,我们发现一个问题:
我们并不知道$\varphi(X_i)$的具体表达式,根本无法求出$W$,事实是我们根本不用求出$W$。因为我们最终的结果是测试时,每输入一个样本$X$,看$W^T \varphi(X)+b$的结果是大于等于0还是小于0就行了。大于等于0的是一类,小于0的是另一类。于是我们有:
核函数又一次出现,解决了这个问题。接下来我们求$b$,根据$KKT$条件,对所有的$i=1\cdots N$,有:
$\alpha$是一个向量,可以写成矩阵形式$\alpha=[\alpha_1,\alpha_2,\alpha_3\cdots \alpha_k\cdots\alpha_N]^T$,如果对于$\alpha$的某一个分量$\alpha_k$,有$\alpha_k\neq0$且$\alpha_k\neq C$,则根据$KKT$条件,必有$\xi_k = 0$,且:
其种$X_k$就是$\alpha_k$对应的训练样本,$y_kW^T\varphi(X_k)$可以写成:
所以,只须找一个$0 \leq \alpha_k \leq C$,就可将$b$求出:
实际任务中常采用一种更鲁棒的做法:选择多个处于$0$到$C$之间的$\alpha$的分量求出多个$b$然后取平均。
(4)测试
对于一个测试样本$X$,我们要判断其所属的类别,则我们计算
判别标准为:
最终我们只通过核函数也能完成对$X$的类别判决。