0
点赞
收藏
分享

微信扫一扫

神经网络与深度学习-7- 支持向量机2 -PyTorch

参考文档:

    《统计学习方法》

 

目录

    1: SMO  算法流程

    2: SMO 推导过程

    2:    pytorch 例子


一   SMO(sequential minimal optimizaion) 

      

       输入:

             训练数据集T=\begin{Bmatrix} (x_1,y_1) & (x_2,y_2) & .... &, (x_N,y_N) \end{Bmatrix}

             其中 x_i \in \chi=R^n, y_i \in \begin{Bmatrix} -1, & +1 \end{Bmatrix}

             i=1,2...,N

            精度\epsilon

       输出:

             \hat{\alpha}

      优化过程:

             1 初始值\alpha^{0}=0,k=0

             2 选取优化变量\alpha_1^{k},\alpha_2^{k} 解析求解两个变量的最优化问题 (101-103),求得最优化问题

,求得最优解

              \alpha_1^{k+1},\alpha_2^{k+1},更新\alpha\alpha^{k+1}

           3 如果精度\epsilon 范围内满足停机条件,执行4

          

                 否则设k=k+1,转2

        4   取 \hat{\alpha}=\alpha^{k+1}


二  SMO 原理推导

       整个算法包含两个部分:

       两个变量二次规划的解析方法   和 选择变量的启发式方法

      2.1  两个变量的二次规划求解方法

            

       W(\alpha_1,\alpha_2)=\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2-\zeta )+y_1\alpha_1\sum_{i=3}^{N}\alpha_iy_iK_{i1}+y_2\alpha_2\sum_{i=3}^{N}\alpha_iy_iK_{i2}\bigl(\begin{smallmatrix} 101 \end{smallmatrix}\bigr)

         s.t \left\{\begin{matrix} \alpha_1 y_1+\alpha_2 y_2 =-\sum_{i=3}^{N}y_i \alpha_i=\zeta \begin{pmatrix} 102 \end{pmatrix}\\ 0\leq \alpha_i\leq C, i=1,2 \left ( 103 \right ) \end{matrix}\right.

        2.1 约束条件

          \left\{\begin{matrix} L= max(0,\alpha_2^{old}-\alpha_1^{old}),H=min(C,C+\alpha_2^{old}-\alpha_1^{old}),y_1 \neq y_2\\ L= max(0,\alpha_2^{old}+\alpha_1^{old}-C),H=min(C,\alpha_2^{old}+\alpha_1^{old}),y_1 = y_2 \end{matrix}\right.

 2.2  最优化问题定理,未经剪切的解

       \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_2-E_1)}{\eta}

        \eta=K_{11}+K_{22}-2K_{12}=||\Phi(x_1)-\phi(x_2)||^2

       经剪切后\alpha_2的解为

      \alpha_2^{new}=\left\{\begin{matrix} H,\alpha_2^{new,unc}>H\\ \alpha_2^{new} \\ L, \alpha_2^{new}<L \end{matrix}\right.

      \alpha_1^{new}=\alpha_1^{old}-y_1y_2(\alpha_2^{new}-\alpha_2^{old})

2.3 变量的选择方法 

     

      1 外循序

         选取出违反KKT条件最严重的点​​​​​​​

        KKT 条件

        ​​​​​​​

       s.t

         

 

     2  内循环

 

          目的: 希望\alpha_2^{new} 变化最大化

           原理:

          已知

           

          则:

          为了使得​​​​​​​ 变化最大,就要使得

 最大... 式1

         前面知道

         \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}

        要使得式1最大,则

          ​​​​​​​ 必须最大

 

     3 : 计算阀值b 和 差值 ​​​​​​​

             由KKT条件可知

         3.1 

 

 同理

  

 

 如果二者都是0,或者C ,则选取它们之间的中间值

           

           

         

      

举报

相关推荐

0 条评论