svm:简介及总结

来源:互联网 发布:海外淘宝首页 编辑:程序博客网 时间:2024/05/23 15:26
一、前言
     支持向量机的思路很简单,难的是求解过程以及支持向量的理解。
     支持向量的目标就是找到一个分割面能够将两类给区分开来,同时和两类中离分割面最近的那些样本点保持最大的距离。首先距离的度量应该选什么?这里有两个间隔:函数间隔和几何间隔,就经验来看,函数间隔表达形式简单,看起来没有那么复杂,但是会随着函数方程式的倍数的增加(虽然增加函数的倍数并不会改变它分割面的任何属性),距离也会增加,这导致优化的时候优化目标不明确。几何间隔的距离固定,不会随着函数的倍数的增加而增加,但是计算稍显复杂(具体课看统计学习方法这本书中的方程式进行理解)。
     它的求解一般是通过转换方程式为对偶问题进行求解,同时通过它的KKT条件的约束,发现了它具有支持向量的优越的性质。


其中通过求解后得到:



     其中alpha是拉格朗日乘子

二、svm的原始问题和对偶问题
     ——svm的原始问题有目标式,也有约束式,我们可以将目标式和约束式通过拉格朗日乘子法将目标式和约束式统一到一个式子中,使用拉格朗日乘子法对式子进行求解
     ——svm的原始问题还有个对偶问题,形式上真的很对偶,如果原始问题和对偶问题的的最优值相对,那么他们的解相等,引入对偶问题主要是希望用到KKT条件来求解。

三、支持向量的理解
     KKT对偶互补条件:
          
     这个互补条件是通过引入松弛变量将不等式约束变成等式约束,然后拉格朗日乘子法求解推出来的,对每一个拉格朗日乘子和约束条件都有这样的结论,由于前文中有规定说alpha是大于等于0的,c(x)是小于等于0的,所以当alpha大于0时,c(x)是等于0的,怎么理解呢?就是说,如果x是支持向量(方程式等于0),那么alpha则可以大于0 ,可以有值;当c(x)小于0(即x不是支持向量),那么alpha就为0
     alpha是求解w的重要材料。

四、SVM的求解(SMO算法)
     SMO算法主要是通过约束条件进行来回迭代进行求解。最后得到的约束最优化问题如下所示:

     
五、软间隔【以后需要用到再回来补写】
     
六、核函数【以后需要用到再回来补写 】

七、一些参考资料
1)关于SVM一篇比较全介绍的博文
2)libsvm的官方网站
3)matlab的libsvm工具箱的安装:普通介绍
4)再论matlab的libsvm的按照:可能遇到的问题以及解决方案
5)svm算法实现
6)libsvm参数说明
7)eclipse + libsvm-3.12 用SVM实现简单线性分类
8) 支持向量机通俗导论(理解SVM的三层境界)
9) tmsvm源代码
原创粉丝点击