SVM入门级别简单总结
来源:互联网 发布:流量软件哪个好 编辑:程序博客网 时间:2024/05/19 18:44
本文只做简单的总结,详细的过程请大家参考别的文章!
--------------------------------原问题---------------------
假设2维平面有点分布如图:
想找一条直线把这些点分开。也就是说满足两个条件(假设两个点的标签分别为1 和 -1)
当y=1时,有
当y=-1时,有
在平面上就是这样两条直线
现在,希望这个直线能够很好的把两类点分开,那就是希望两条直线的间隔尽可能的大。
也就是
这个问题等价于 其中约束条件为:(添加平方项不影响取得最值时的w,这样便于后于的求导)
至此,这就是硬间隔的SVM的基本型(所谓硬间隔其实就是不允许有分类错误,即后面提到的C=0的情况)。
原问题是带约束优化问题,直接求解不好求,所以才有转化成对偶问题来求解。
--------------------------对偶问题------------------------
对偶问题利用拉格朗日乘子法:
优化目标:
如果高数知识没忘的话,我们下一步很自然就会做对w和b求偏导
对w求偏导:
对b求偏导:
可以看到w和b都是只含未知变量
把w和b带进去可以得到下面这个式子(附详细的推导过程)
注意这里的,把摸的平方,展开写成这样便于理解
把上面推导得到的w带进来,这里要注意一下下标。不是一样的下标,因为最终是有m*m项而不是只有m项
注意利用上面对b求偏导等于0的条件。
至此,对偶问题的目标函数就推导完毕了。下面就是要补充一下KKT条件。
条件1:拉格朗日乘子需要大于等于0。
条件2:原问题带下的条件约束:
条件3:
对于条件1,2大家可能没疑惑,但是条件3是怎么一回事呢?
我们可以这样简单直观的理解:我们优化目标是以下这个函数
假如我们不加条件3的约束,其实求出来的并不是单单的最值。
而是整一串的最值。
如果我们约束了,那么其实这个优化目标就是等价的。
也就是:
至此,KKT条件也补充完毕。
硬间隔的SVM推导到这里可以告一段落,下面就是软间隔的SVM推导,其实,和硬间隔没有多大区别。
-------------------------------------------------------------软间隔SVM---------------------------------------------
在上面的约束条件中,我们严格要求对于每一个样本都要有
然而,现实中的许多任务很难找到合适的核函数使得训练样本在空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合所造成的。
也就是说,我们不需要严格的要求上面的约束条件严格成立,只要要求以下这个式子成立:
其实,我们这个就是我的误差(误差是大于等于0的),既然每个都允许有一定的误差,那么整个优化目标函数就可以变成
这里的常数C可能有点突兀,大家都可以在网上找到更多关于常数C的解读。
在硬间隔时,我做到这里的时候,下面就是转为对偶问题,这里同样也是这个思路。
转为对偶问题:
这里我不妨先写出KKT条件:
最后两个其实是保证优化函数里面后面两项为0的(这里上面解释过)
OK,至此SVM的基本推导就结束了。
------------------------------我是分割线-------------------------------------------------------
这里我再补充一下关于的一些问题。
其实,是误差,这个误差可以有很多种形式。
例如,0/1损失函数,所谓0/1损失函数就是,对于不满足的样本,我们就令为1,满足的就令为0
又比如hinge损失,就是令
什么意思呢?这样,假如对于某一个样本,我们算出来为2,且此时=1
那么,也就是没有误差。
如果=0.8,且=1,那么
也就是说有0.2的误差。
----------------------------------------------我还是分割线-----------------------------------------
首先,我们把记作
然后把w带进去。
其实,公式,推到完了,但是为什么这个模型要叫支持向量机?机的意思可以理解成“算法”,那么支持算法是什么呢?
支持向量的概念可以从KKT条件中导出。
在KKT条件中,如果我们对做一些简单的不等式分析可以得到一些结论。
,这个式子其实告诉我们,或者至少有一个为0。
①不妨假设时,这个时候,样本由于系数等于0就不再对起作用。
②不妨假设时,有,没有误差,即位于间隔上。
③不妨假设,也就是说位于间隔内部。
具体可以参考下面这个图。
总结一下:
1.如何把SVM的优化目标找出来(即原问题)?
2.为什么要转成对偶问题?对偶问题是什么?
3.KKT条件是哪些?
下一篇是关于利用SMO算法求解这个最优解的问题也涉及到一些公式的推导,稍等...........................
- SVM入门级别简单总结
- SVM入门学习总结
- SVM总结及SMO简单实现
- 数据库事务的隔离级别简单总结
- SVM入门
- SVM入门
- SVM入门
- SVM入门
- SVM入门
- SVM入门
- SVM入门
- SVM入门
- svm 入门
- svm入门
- SVM入门
- SVM入门
- SVM入门
- 单元测试简单入门总结
- 好程序员的考核指标
- Android NDK开发Crash错误定位
- HashMap和Hashtable的区别
- Java 处理异常
- ios UITableView的cellForRowAtIndexPath方法不执行的原因
- SVM入门级别简单总结
- 记:combotree中getValue和getText问题
- synchronized的可重入性
- Java实现-链表排序
- Struts2简短的学习笔记
- js假分页(tabel)
- LeetCode 65. Valid Number
- NI/NDK开发指南(开山篇)
- JavaSE学习--正则表达式