机器学习入门学习笔记:(4.1)SVM算法
来源:互联网 发布:淘宝微淘广播有什么用 编辑:程序博客网 时间:2024/06/06 02:18
前言
支持向量机(Support Vector Machine,简称SVM)可以说是最经典的机器学习算法之一了。这几天再看SVM,参考了一些书籍和博客,这里把自己的笔记记录下来,以便以后复习查看。
间隔(margin)
分类学习最基本的思想就是:寻找一个超平面把数据集的样本空间划分成不同的样本。
比较直观的一种情况就是二维下的,如下图:
(摘自百度百科)
直观上看,我们应该去寻找两类样本正中间的直线来划分这两类样本。图中有三根直线:先看绿线,不难发现,它穿过了黑色点集,分类肯定错误了;红线和蓝线都正确地分开了两类样本。然而,我们肯定都觉得蓝线不是一种很好的方法,因为它距离样本太近了,在这个数据集附近随机再取一个新的样本,很有可能就越过了它,导致分类错误;相对而言,红线更好,因为它到两类样本的距离都有一定距离,这也意味着,它对未知示例的泛化能力更强,是最鲁棒的。
以上也仅仅是直观上的理解,下面从数学层面进行分析。
在样本空间中我们用如下线性方程来描述划分超平面:
其中,
假设训练样本集
接下来先推导样本空间中一个点到超平面距离的公式:
补充:样本空间中一个点到超平面距离的公式证明
我们要求:点
先设点
由于点
我们知道超平面
由于平行,两向量的夹角为0度或者180度,
所以:
又因为:
这里要用到前面的条件了,因为
所以得到:
所以:
上面推导出了任意点
假设有一个超平面
距离超平面
那么,假设超平面能将正负样本正确分类,则要满足如下条件:
对于任意样本
令:
使用之前推出的任意点
这个东西就叫做间隔(margin)。
而SVM的目标是就是找到一个超平面,使得间隔取到最大值,同时也要能保证正确地划分正负样本。
对偶问题
既然我们的目标是最大化间隔(margin),那么可以给出如下问题:
其中的约束条件:
欲最大化
那么上面的优化问题可以改写为:
好的,上示就是SVM的基本型。
接下来考虑如何求解这个问题,找到最合适的
我们要用到拉格朗体乘数法进行求解,由于约束条件中还带有不等式约束,所以还需要考虑KKT条件。
补充:拉格朗日乘数法与KKT条件
通常的优化问题有三种:
- 无约束优化问题:
minxf(x) - 约束条件有等式优化问题:
minxf(x)s.t.hi(x)=0,i=0,1,...,n - 约束条件有不等式优化问题:
minxf(x)s.t.hi(x)=0,gi(x)≤0,i=0,1,...,n
分别考虑这几种情况吧:
无约束优化问题:求导,令导数为0,求得的解就是极值,随后从中选出最优解。
约束条件有等式优化问题:使用拉格朗日乘数法,把等式约束
约束条件有不等式优化问题:同样使用拉格朗体乘数法,最常使用的就是KKT条件。与前面一样,将所有等式约束与不等式约束和
我们主要考虑的就是约束条件有不等式优化问题,毕竟我们的SVM的基本式就是有不等式约束。
拉格朗日乘数法
假设给出如下问题:
对于等式约束与不等式约束,将其与
对各参数求导取0,联立求得最优值。
KKT条件
对于含有不等式约束的优化问题,将其转换为对偶问题:
其中
KKT条件就是说,原始问题的最优值
1.
2.
3.
4.
当原始问题和对偶问题的解都满足KKT条件,并且
下面简单证明一下:
就用前面给出的问题:
我们可以构造函数:
由于KKT条件还要有
我们发现:
由于
由于
最后发现:
因此我们最初的目标函数可以改写为:
如下展开对偶式子
假设最后取得的最优值是
由于
由于
所以上式变为:
这里就证明了,原问题与对偶问题的最优值是相同的。
原问题可以转换为对偶问题求解
好的,回到SVM的问题上来。
我们希望优化的问题是:
建立拉格朗日函数:
其中
令
这里涉及矩阵求导,不了解请自行百度
所以得到两个式子;
将它们代回到拉格朗日函数中,可以消去
接下来求原问题的对偶问题:
KKT条件:
到这里SVM的模型已经出来了。现在我们的问题是如何求出这些
我们可以求出
观察一下不难发现,这里的b可能有很多个解,因为每一个样本集
实际中采用一种更鲁棒的方法,即取所有的支持向量求解的b的均值:
假设
最后得到模型:
由KKT条件:
分类讨论可以知道,只有可能有两种情况:
-
-
在这个模型中,除了支持向量的
这次就先到这里吧,下次在介绍svm的核函数、软间隔以及SMO算法等概念。前面推导分析了基本的SVM模型,也介绍了拉格朗日常数法与KKT条件的应用。不得不说,打公式很累啊。
参考资料:
《机器学习》周志华
http://blog.csdn.net/dawnranger/article/details/53133450
- 机器学习入门学习笔记:(4.1)SVM算法
- 机器学习算法入门之(四) SVM
- 机器学习-SVM算法
- 机器学习算法-SVM
- 机器学习笔记之SVM(SVR)算法
- 机器学习笔记-SVM
- 机器学习笔记:SVM
- 机器学习:SVM学习笔记(三)
- 机器学习:SVM学习笔记
- 机器学习算法疗程(SVM)
- 机器学习(2)-SVM分类算法
- 机器学习算法-SVM理论
- 复习机器学习算法:SVM
- 【机器学习算法】之SVM
- 机器学习算法总结--SVM
- 机器学习算法总结--SVM
- SVM算法学习笔记
- 机器学习笔记2:支持向量机SVM基础入门
- 是死循环!
- PHPStrom中一些我收藏的小插件
- LeetCode-Search a 2D Matrix II
- Java——————设计模式(视频:单例设计模式)
- file_operations结构体
- 机器学习入门学习笔记:(4.1)SVM算法
- 企业邮箱在 Foxmail 7.2 上 POP3/IMAP 协议设置方法
- 仿写简单的vue虚拟dom
- servlet
- HTML5网页背景图片属性练习
- 201403-1 相反数
- 窗口作业1 作业: 1.创建一个窗口程序(JFrame),标题栏起名为“浏览器”,有一个菜单条,有“文件”、“编辑”、“查看”3个菜单。“文件”菜单有两个菜单项,一项是“打开”,一项是“保存
- [Java]给定二维平面中的4个坐标点,如何判定这四个坐标点能否构成长方形?(经_典_面_试_题_目)
- 【操作系统】第五章 CPU调度