6.SVM的优化算法--SVMlight中核心优化代码详解
对于SVM的求解最终转换为一个二次优化问题,该二次优化问题具有界约束(bound constraints)以及一个线性等式约束(linear equality constraint)。与其他SVM的求解算法相比,SVMlight更适合训练大规模数据集。SVMlight之所以能够在大数据集上训练,就是因为它将待求解问题进行分解,得到一系列子任务,其分解思想借鉴于[4]。
(1)SVMlight算法框架
SVMlight算法中涉及到的两个重要步骤:1)如何分解,借鉴[4];2)如何收缩(shrinking)?
while the optimality conditions (KKT) are volated
1.select a good working set B with constant q variables
该问题可以转化为一个优化问题:选择一个working set B,使之在B上优化的结果尽可能逼近原始优化问题的解。求解思想:找到最速下降的梯度方向使之包含q个不为0的元素。
min_d V(d)= g(alpha)'d
s.t. y'd=0
di>=0 for alpha_i=0
di<=0 for alpha_i=C
-1<=di<=1
|{di:di!=0}|=q
该优化问题的解可以简单的通过以下方式得到:将yg(alpha)的值降序排列,从整个排序列表的前面几位中找到q/2个元素,使之满足0<alpha_i<C或di=-yi,从后面几位中找到q/2个元素,使之满足0<alpha_i<C或di=yi。
2.Solve the subproblem (Quadratic Programming) on the working set B
求解方法借鉴Primal-Dual Interior-Point method (proposed by Alex. Smola [2])
min_alpha W(alpha)=-alpha_B'(1-Q_{BN}alpha_N)+1/2alpha_B'Q_{BB}alpha_B
s.t. alpha_B'y_B+alpha_N'y_N=0
0<=alpha<=C1
3.Shrinking: reducing the size of orginal problem
先验:(1)有些SV可以再早期就确定;(2)大部分的SV对应的alpha_i的值是取到其上界值C的。
基于这两个先验将当前的变量进行分为三类:(1)X:unbounded support vectors;(2)Y:Bounded support vectors;(3)Z:non-support vectors。
将原始求解alpha的问题变为求解alpha_X的问题。
terminate and return alpha
(2)求解子问题QP(Quadratic Programming)算法框架:原对偶内点法(Primal-Dual Interior-Point)
参考文献:
- Making Large Scale SVM Learning Practical
- Convex Cost Functions for Support Vector Regression (1998)
- LOQO: An Interior Point Code for Quadratic Programming (1998)
- Training Support Vector Machines: An Application to Face Detection (1997)