从零到精通SVM之SMO算法原理

从零到精通SVM之SMO算法原理



嗯哼将求最大值转化为最小值

从零到精通SVM之SMO算法原理


先来分析下

本期目标是寻找一个α向量 是的上述函数取得最大值

回顾下α是什么

α是拉格朗日因子

其中α>=0看下 为什么要这样子

首先

我们先回顾下原始约束

从零到精通SVM之SMO算法原理

其中 KTT条件 是要

从零到精通SVM之SMO算法原理

我们来看下 这条件在分类时具体的意义

从零到精通SVM之SMO算法原理

嗯哼哼 

首先 ab区域的点

其都满足 到超平面的函数间隔 大于1也就是说

从零到精通SVM之SMO算法原理

那么这些点对应的α = 0

嗯哼 以此类推

嗯哼哼 马上有人就看出来了

在c区域上的点呢

从零到精通SVM之SMO算法原理

其是不满足KKT条件的 

而我们正是要利用这一点 

让其不断的向我么的约束区域运动 

而 α 正是这样的一个存在

因为一旦w,b确定其函数间隔就是已经确定了

 只能通过改变α的值

来调整w,b使得函数间隔发生变化

也就是说整个过程就是

对不满足KKT的条件的点 对其α不断迭代更新使得其满足KTT条件

嗯哼哼

而满足KTT条件的点

也就是使得上述函数

W(α)取得最大值

故只要函数不断变大即可

说得有点迷糊了,总结下

SMO

就是找到不满KKT的点 使其更新迭代使其满足条件,而自然而然函数的值也就不断增大

其实在SMO迭代只要从零到精通SVM之SMO算法原理中有一个违背了KKT条件,迭代完成后,目标函数的值必然会增大而且KKT条件违背的程度越大,迭代后的优化效果越明显,增幅越大。

而目的是全部点都满足KKT,并使函数值最大

SMO采取的策略是从这些不满足条件的点选择两个α出来,就假设为α1,α2吧,SMO先选取违背KKT条件程度最大的变量,那么第二个变量选择使目标函数值增大最快的变量.这和梯度下降算法思想类似。

在通过从零到精通SVM之SMO算法原理在更新两个α的时候 其他α是不变的 所以

从零到精通SVM之SMO算法原理等于一个常数

嗯哼哼 这就是说α1,α2有着约束,只要求出其中一个 另一个也就迎刃而解了

换而言之 就是说 W(α)会变成W(α1,α2)在变成W(α1)然后求其最大值即可


在通过约束 将α2去除

这就变成单一的W(α1)

然后在对其求导嗯哼 再重新计算w和b

在这之前我们必须要计算下从零到精通SVM之SMO算法原理是不是符合条件

嗯哼哼 我们要先要计算

从零到精通SVM之SMO算法原理的取值范围 计算出的从零到精通SVM之SMO算法原理要在合理范围

先看下约束条件

(1)

从零到精通SVM之SMO算法原理


(2)

从零到精通SVM之SMO算法原理

而y的标签取值为-1或者1

嗯哼哼  先往大的算

假设其中一个从零到精通SVM之SMO算法原理

y都设为1

那么 从零到精通SVM之SMO算法原理的取值为

从零到精通SVM之SMO算法原理

同样也可以算出其他的上限和下限

从零到精通SVM之SMO算法原理

其中L为LOW ,H为HIGH

最后

从零到精通SVM之SMO算法原理

嗯哼 下面是具体计算过程

首先假设

从零到精通SVM之SMO算法原理

从零到精通SVM之SMO算法原理从零到精通SVM之SMO算法原理


嗯哼哼算不下去了 只能无耻的抄袭刘建平大佬的http://www.cnblogs.com/pinard/p/6111471.html

从零到精通SVM之SMO算法原理

求导后整理的

从零到精通SVM之SMO算法原理

从零到精通SVM之SMO算法原理

最后

从零到精通SVM之SMO算法原理

在根据其取值范围

从零到精通SVM之SMO算法原理

最后 根据约束求出从零到精通SVM之SMO算法原理

嗯哼哼 然后在从新更新w

从零到精通SVM之SMO算法原理

b呢

老规矩

从零到精通SVM之SMO算法原理

可以求出b

你会发现有两个从零到精通SVM之SMO算法原理


先判断 其对应α是否满足约束

从零到精通SVM之SMO算法原理

然后循环

最后附上知乎大佬一段参数选择的话

https://www.zhihu.com/question/40546280/answer/88539689?utm_medium=social&utm_source=qq

从零到精通SVM之SMO算法原理