[置顶] 改进的SMO算法
2016-03-10 21:15
232 查看
是否违反它,与这几个因素相关:拉格朗日乘子
、样本标记
、偏置b 。 b的更新依赖于两个优化拉格朗日乘子,这就可能出现这种情况:拉格朗日乘子
已经能使目标函数达到最优,而SMO算法本身并不能确定当前由于两个优化拉格朗日乘子计算得到的b是否就是使目标函数达到最优的那个b,换句话说,对一些本来不违反KKT条件的点,由于上次迭代选择了不合适的,使得它们出现违反KKT条件的情况,导致后续出现一些耗时而无用的搜索,针对标准SMO的缺点,出现了以下改进方法。
对于SVM的最优化问题的解:
定义:
是拉格朗日乘子,通过解下面对偶问题,我们可以得到
:
一旦
确定,其他参数如:
就很容易由KKT条件确定了,并且解是不唯一的,最后得拉格朗日函数如下:
定义:
则对偶问题的KKT条件如下:
这个条件可以简化成下面三种情况:
1.
:
2.
3.
定义如下数集:I0 = {i: 0 < αi < C}; I1 ={i: yi = 1,αi = 0}; I2 = {i: yi =
−1,αi = C}; I3 = {i: yi = 1,αi = C};I4 = {i:yi = −1,αi = 0}.
可以看到以上的KKT条件成立当且仅当有一个
使得下式成立:
定义:
当且仅当blow ≤ bup.成立时KKT条件成立。更进一步KKT条件可以写成如下形式:
是一个正的容忍因子。
相关文章推荐
- srand和rand的用法
- 集合框架
- hadoop 完全分布式 下 datanode无法启动解决办法
- Static关键字的使用
- NVIDIA Jetson TK1学习与开发(六):如何安装CUDA
- web服务器集群session同步
- 卷积神经网络
- 维护IOS项目时遇到的一些问题
- 奇妙的数列
- 时间复杂度
- JAVA调用条码打印机打印二维码
- 继承类中利用派生类访问基类保护成员
- SQLServer与Oracle的对照
- iOS开发之保存照片到自己创建的相簿
- 数据结构与算法面试题80道(12)
- Boost库学习
- Problem G: C语言习题 输出月份
- 声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是()
- Java web学习(五)
- windows客户端开发--为你的客户端增加消息提示音