zoukankan      html  css  js  c++  java
  • 改进的SMO算法

     

     

    S. S. Keerthi等人在Improvements to Platt’s SMO Algorithm for SVM Classifier Design一文中提出了对SMO算法的改进,纵观SMO算法,其核心是怎么选择每轮优化的两个拉格朗日乘子,标准的SMO算法是通过判断乘子是否违反原问题的KKT条件来选择待优化乘子的,由KKT条件:

    clip_image002[4]

    是否违反它,与这几个因素相关:拉格朗日乘子clip_image004[12] 、样本标记clip_image006[4] 、偏置b b的更新依赖于两个优化拉格朗日乘子,这就可能出现这种情况:拉格朗日乘子 clip_image004[13]已经能使目标函数达到最优,而SMO算法本身并不能确定当前由于两个优化拉格朗日乘子计算得到的b是否就是使目标函数达到最优的那个b,换句话说,对一些本来不违反KKT条件的点,由于上次迭代选择了不合适的,使得它们出现违反KKT条件的情况,导致后续出现一些耗时而无用的搜索,针对标准SMO的缺点,出现了以下改进方法。

             对于SVM的最优化问题的解:

    clip_image008[4]

    定义:clip_image010[4]

    clip_image004[14]是拉格朗日乘子,通过解下面对偶问题,我们可以得到clip_image004[15]

    clip_image013[4]

    一旦clip_image004[16]确定,其他参数如:clip_image015[4]就很容易由KKT条件确定了,并且解是不唯一的,最后得拉格朗日函数如下:

    clip_image017[4]

    定义:

    clip_image019[4]

    则对偶问题的KKT条件如下:

    clip_image021[4]

    这个条件可以简化成下面三种情况:

    1.clip_image023[4]

    clip_image025[4]

    2.clip_image027[4]

    clip_image029[4]

    3clip_image031[4]

    clip_image033[4]

    定义如下数集:I0 = {i: 0 < αi < C}; I1 ={i: yi = 1i = 0}; I2 = {i: yi = −1i = C}; I3 = {i: yi = 1i = C};I4 = {i: yi = −1i = 0}.

    可以看到以上的KKT条件成立当且仅当有一个clip_image035[4]使得下式成立:

    clip_image037[4]

    定义:

    clip_image039[4]

    当且仅当blow bup.成立时KKT条件成立。更进一步KKT条件可以写成如下形式:

    clip_image041[4]

    clip_image043[4]是一个正的容忍因子。

     

  • 相关阅读:
    简单使用GDB
    【老人孟岩经验谈】如何学习一本新的编程语言
    【做存档】如何争取到真正有用的人脉?
    回头来看C语言里的static
    Spring MVC 教程,快速入门,深入分析[1220]
    eclipse ibabis代码生成插件abator功能扩展
    在MyEclipse中配置Tomcat服务器
    将远程调试的控制台信息输出至Eclipse
    LOG4J.PROPERTIES配置详解
    java Map 怎么遍历
  • 原文地址:https://www.cnblogs.com/hustlx/p/5264528.html
Copyright © 2011-2022 走看看