( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

本节主要解决怎么算拉格朗日系数的问题,和大多数的SMO算法的介绍不同的是,每一步都有详细的过程和说明。希望能对你有一定的理解上的帮助。进入本节之前,确保你已经看懂了以下内容:

SVM系列(一)hard-margin SVM 详细原理  https://blog.****.net/Lee_Yu_Rui/article/details/107420870

SVM系列(二)soft-margin SVM 详细原理以及一点点的kernel SVM https://blog.****.net/Lee_Yu_Rui/article/details/107436175

hard-margin 求解实例

到目前为止,三种SVM的原理都已经阐述明白。可能你发现,好像还没有算出来呢?先以一个简单的低维度数据为例看一下整个的求解过程,

                                                         ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                           s.t. ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理        and   ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理                                         

总结KKT条件,在整个过程中的限制条件:按照(11)可得

                                                         ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理,( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                          ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                          ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                          ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理                                                                           

求出满足KKT条件的u,然后就可以得到w,b,若存在(xk,yk)满足( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                           ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                           ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理                                                    

则最终的分类决策函数

                                                        ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理                                                      

题就是,求下图的最大间隔分离超平面,求解过程下面都给了,最后要计算b的地方简单提一下,就是将在直线( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理中的点带入即可,任何一个都行,就是u不等于零的哪一个都可以

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

最后的结果是右边的红色和黄色部分,与我们最开始的直观看见的直线方程一致

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

SMO 算法

通过以上实例,我们已经看到了利用拉格朗日推导得到的SVM的可行性,但是实例中的数据太简单了,就两个特征,一眼都能看出来,但是现实中,这种问题不会存在,我们会处理具有超多特征数量的数据集,那这时候就没有办法用刚刚的方法了。所以就提出来了一种SMO算法,两篇SVM之后终于到了这个(保证能看晕的系列了)有条件的请拿出你正经的草纸,一起推导把...我尽量让你能坚持到最后,其实一点都不难,一点也不难........

(1)基本思想

将N 个参数的二次规划问题,拆成多个子二次规划问题,在每个子二次规划问题中只优化两个参数,剩余N-2个参数固定,然后不断迭代指导最终的目标函数满足条件。

(2)待求问题

如果这里就懵圈了,建议退回“SVM系列(一)hard-margin SVM 详细原理”和“SVM系列(二)soft-margin SVM 详细原理以及一点点的kernel SVM”,以下过程假设你们(一)和(二)都会

                                                       ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                         s.t. ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理        and   ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理                                            (1)

总结KKT条件,在整个过程中的限制条件:

                                               ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理,

                                              ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                     ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理,( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                      ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                      ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理, ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理                                                                 (2)

其中:                                                             

                                                       ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

                                                        ( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

(3)得到关于( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理的目标函数

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

(4)消去( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理,只保留( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

(5)求令目标值最小时候的( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

(6)考虑约束条件下的( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

(7)b,w,E的更新

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

关于坑1的填土方案 

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

关于这个式子形式就不写了,直接网上找来了一个

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

 参数的启发式选择

最后一部分就是 这两个u选啥,当然你可以随便选,然后重复迭代。也可以选择最有影响的u,所以参数的选择原则就是:先”找到“不满足KKT条件的都给它“快速”干掉,注意这里说的找到和干掉,这里第一步找到的外层循环就是为了“找到”,第二步的u1就是为了把u2快速干掉,使其满足KKT

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

( 保证能看晕系列)SVM系列(三)hard-margin 求解实例 + SMO算法 详细原理

最终使得目标函数有足够的下降,如果没成功,那就只能遍历数据集合了,以非边界的集合为先,不行再找所有样本集,再不行就只能换u2了

希望看你看到了这里,针对每一步都给了详细的过程和具体的推导,over