SVM系列-小白都看得懂的SVM学习笔记
来源:互联网 发布:php curl 下载文件 编辑:程序博客网 时间:2024/06/03 23:53
之前学SVM的时候是在看Deformable Part Model的论文才去翻看了Bishop的经典书籍,学了个推导。学的时候是小白,只弄懂了SVM推导的过程,但是一些细节是知其然不知其所以然。所以参考了一些博客和书籍,总结一下SVM的一些知识点和经常被忽略的细节。这是自我认知的学习笔记,也希望能帮到一些和我一样的小白
在机器学习领域,无论是分类还是回归,都可以看做是一个用数据去雕刻一个模具的过程。回归模型是给定输入数据x∈
通常,我们有两个数据集,training set 和testing set; 我们先用training set的数据去雕刻模具(模型),再用testing set 数据去检验模型的性能。
- training set 通常包含输入x和输出y,告诉你“这样的x我期望得到这样的y”
- testing set 也包含多个输入x和输出y,让你“根据这个x预测y的值,并和我的y比较”
- 通常,training set的数据量要远超过testing set
数据集的选择是影响机器学习性能的一大关键点。好的数据集能保证在训练之后,用新加入的testing数据也可以做出精准预测;而差的数据集即使在给定的testing set能有100%的预测率(无论是分类预测还是回归预测),也很难应用到开放的测试数据中。关于数据集的质量胖丁我也半知半解,有兴趣的朋友可以自己研究一下。
————————————————万恶的分割线———————————————————-
在这里,我们先写下SVM的几个特性,后面我们会慢慢说明:
- SVM的模型只取决于training set中的少数几个点
- 基本的SVM模型假设所有数据点线性可分,即存在一个线性方程将两个类别的点分隔在两边
- SVM算法的一大前提是其代价函数(cost function)是凸函数(convex):
- 在机器学习领域,凸函数通常是保证我们能得出全局最优解的前提。
- 对于一个函数
f(x) ,我们可以这么求证它是凸函数:如果∀x≠0 我们有f(x)≥0 ,则可以说f(x) 的Hessian矩阵(二阶导矩阵)是半正定的,所以f是凸函数 - 在凸函数领域,当原问题不方便求解时,我们可以先求解其对偶问题;在满足一定条件的情况下,其对偶问题的解等同于原问题的解。
- 核函数是SVM的魅力所在,不同选择的核函数使得SVM的分类面更加变化多端
SVM分类器既是分类模型,也可以看作线性回归模型。以SVM使用最普遍的binary分类来说(即两个类别做分类),SVM分类器通过寻求最佳分类边缘的方式,将两个类别的点(x向量)用我们的最佳边缘分割开。对于n=2而言,就是寻找一条最完美的直线;如果n>2,则是寻找超平面。我们的任务就是要找到这个最佳边缘,使得
- 两个类别的点分处于直线/超平面(super plane)两边
- 直线与最近的点的(Euclidean)距离尽可能大
接下来我们来进行最复杂也是最有趣的部分—-SVM的推导。
首先,我们要定义我们对于模型的假设函数(hypothesis):
其中,
所以我们寻找最佳边缘的任务,也就是根据训练集 D =
- 当
y(xi)>0 时,ti=+1 - 当
y(xi)<0 时,ti=−1 - (当
y(xi)=0 时,xi 在我们的分类面上)
因为我们假设所有的数据点线性可分,所以存在这么一个
接下来,我们对y里面的参数
是不是很眼熟?这就是
通俗点解释这道式子,就是我们要找到这么一对
前面说过,我们的模型
现在我们要来找
…
式子太复杂了啊!!胖丁我比较笨,所以先给支持向量们加一个条件,让式子简化一下:
我们知道
换句话说,我们的优化问题变成了
也就是
因为我们后面会将这个式子求导,所以我们稍微改变一下:
这是一个凸函数求极值。然后把限制条件也改一下:
但是就是这样一道问题,胖丁还是解不出来~所以,只能借助先人伟大的智慧—-Lagrange 乘子法。
对于一般优化问题:
根据Lagrange乘子法求极值法则,我们能得到Lagrange公式:
其中
其中第三个条件实际上造就了SVM的高效性:当
这里我们省略了原Lagrange和KKT条件中的等式项,因为SVM优化的元问题中并没有等式约束项。
接下来我们简单介绍一下Lagrange+KKT的基本原理。不求面面俱到,只求通俗易懂。实际上,Lagrange本身只有一个约束条件:
通过观察我们可以发现,原问题的
因为
那么要如何求
“在凸函数领域,当原问题不方便求解时,我们可以先求解其对偶问题;在满足一定条件的情况下,其对偶问题的解等同于原问题的解。”
也就是说
通过观察我们发现,对偶问题中的
至此,我们得到了KKT的全部三个条件。在满足这三个条件的情况下,我们就能找到最佳的
接下来我们把Lagrange公式和KKT条件移植到我们的问题上:
由于元问题条件中的
探究第二个条件可得:
探究第三个条件可得:
将第二个条件和第三个条件的推导代入Lagrange公式,(省略步骤)可得:
带有约束条件:
到这里,我们就可以通过找出最佳的
SMO算法是解决二次规划问题的常用方法之一,特别对于线性SVM的求解有较好的表现。原算法的论文参考John C. Platt在1998年发表的《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》
以下内容参考
http://blog.csdn.net/huangynn/article/details/18553069?locationNum=11
并加以改进和完善
John C. Platt给这个QP问题的
s.t.
我们知道,式子中
算法的基本思路是:使用迭代优化,先选取一个符合条件的
而之所以一次迭代2个参数而非1个,是因为限制条件中的第二个不允许只改变单一个
下面是一次迭代的示例:
假设我们已经拥有一组序列
根据
在这里我们分别规定两种情况的上下限,后面有用:
当
当
把
将其代入
由于除了
已知
然而,
最后可以由
(未完待续)
松弛变量:
由于我们假设所有在D上面的点线性可分,我们有原问题:
但是现实问题中,D通常是线性不可分的,所以我们要允许【少许】的点不满足原问题的限制条件。而这个【少许】的量,就由松弛变量
由于有松弛变量的加入,对偶函数的求解难度较高。可以使用hinge代替原损失函数。
(未完待续)
参考博文:
http://blog.sina.com.cn/s/blog_67ad2e480100zaue.html
http://www.wtoutiao.com/p/104xLRm.html
http://blog.csdn.net/xianlingmao/article/details/7919597
http://wenku.baidu.com/link?url=vJvmMRrRVd0_nN9_xDKi_yd8TUYRBz0oji1l_aDjQjtOc02ylR4BAfb0hgrjzTeu8Gxw79HNdtl4WUu-b4jHKft7C-RPjKP3lmz_0Hl_B8y
《Machine Learning and Pattern Recognition》 –Christ Bishop
- SVM系列-小白都看得懂的SVM学习笔记
- SVM的学习笔记
- SVM学习笔记-对偶形式的SVM
- SVM学习之系列
- svm学习系列
- 机器学习系列----SVM
- SVM的系列一
- SVM算法学习笔记
- SVM学习笔记1
- svm学习理解笔记
- SVM 学习笔记
- SVM学习笔记
- SVM学习笔记
- 机器学习笔记-SVM
- SVM学习笔记
- SVM学习笔记
- SVM学习笔记
- SVM学习笔记
- 《剑指Offer》面试题二之实现Singleton
- 1266: [AHOI2006]上学路线route
- Linux学习笔记之一 ---Shell语法(2)
- Java(3)
- Codeforces 671B 二分
- SVM系列-小白都看得懂的SVM学习笔记
- python读取文本中的坐标
- Atitit 团队工具链体系打造---提升团队效率的一些通用软件 attilax总结
- 1.3逗比又回来了!
- 阿里云centos6.5 wdcp安装完成后yum出错的解决办法
- leecode 解题总结:350. Intersection of Two Arrays II
- TabBarController设置
- Qt编译MySql5.7.17驱动
- word发布到CSDN博客