支持向量机(SVM)
来源:互联网 发布:知乎雅思阅读技巧 编辑:程序博客网 时间:2024/06/03 17:42
(本文介绍什么是SVM,SVM推导公式等。所有内容来自Anrew Ng教程)
SVM(support vector machine)是一种二分类模型,其基本模型定义是期望特征空间上分类间隔最大的线性分类器。
1.1 SVM起源-函数间隔和几何间隔
首先我们考虑,在逻辑回归中(可参见前面逻辑回归章节内容),数据被分类为正样本的概率被表示为
从另外一个角度来考虑,观察下图,实线表示样本点分类界面,叉号点表示“正样本”点,“圆圈”点表示“负样本”点。对于图示中的三个点,我们可以说,点A距离决策边界是最远的,如果对A附近的点进行类别预测,我们将有足够的把握说该样本属于“正样本”;而对于样本点C,距离决策边界是最近的,当决策边界稍微发生偏移,将会影响该样本点的类别判定,所以说对于样本点C被分类为“正样本”这件事,我们的把握是很小的;而样本点B距离决策面的距离介于样本点A和样本点C之间,对于该样本点被分类为“正样本”的把握自然介于A和C之间。总结上面的说法,对于给定的训练数据,我们期望寻找一个分界面,使得我们有足够的把握使得所有样本被正确分类,按照上面的推理说法,我们期望所有样本点距离分界面的距离越远越好。这种说法刚好对应于后文提到的“几何间隔”的概念。
接下来,我们将函数间隔和几何间隔进行数学描述,在这之前,首先对分类问题的数学表达进行重新描述。
考虑二分类问题,寻找线性分类器
且有,当
1.1.1 函数间隔
给定训练集
那么,给定一个训练集
但是函数间隔存在一个问题,当参数
1.1.2几何间隔
几何间隔表征的是样本点到分界面的距离。如图所示,
实线表示分界面
又由于B点是位于分界面
变换公式,可以得到样本点到分界面的距离
由此,我们可以按照函数间隔的方式定义几何间隔为,
注意的是,如果有
同理,对于训练集
1.2 SVM模型
通过上面的分析我们知道什么是函数间隔,什么是几何间隔,而几何间隔因不存在参数缩放问题而要优于函数间隔。对于二分类问题,我们期望找到一个线性分类器,可以使得所有样本距离分界面的距离越大越好,也就是说所有样本的几何间隔要尽可能得大,这个思想正是SVM思想的核心。
因为SVM是线性分类器,所以我们首先假设样本是线性可分的,那么接下来介绍,如何寻找该线性分界面,使得样本数据的几何间隔最大化。该问题的数学描述为,
也就是说,我们期望最小化m个数据样本的几何间隔,另外,条件
也就是,通过几何间隔和函数间隔转换公式
但是这样,又引入了一个非凸函数
注意,这里的目标函数是
最终,我们将SVM求解目标转化为一个可以方便求解的形式,满足目标函数的参数确定一个最优二分类器。
1.3SVM优化求解
1.3.1拉格朗日对偶问题
在说明如何优化求解SVM目标函数之前,首先来介绍如何求解带约束的优化问题。
优化问题一般三类:不带有约束条件、带有等式约束条件但不包含不等式约束条件、带有不等式约束条件(也可包含等式约束条件)。对于第一类求解比较简单,可以通过求导直接得到。而对于带有等式约束的优化问题,通常通过构造拉格朗日函数,并分别对各个变量及拉格朗日乘子求导得到。而对于带有不等式约束,也就是像SVM优化问题这样的,则不能采用上面的方法求解。接下来我们详细分析如何求解该问题。
+++++++++++
首先,对于含有等式约束的优化问题,如,
求解方法为构造拉格朗日公式,
+++++++++++
而对于含有不等式约束的优化问题,
同样构造拉格朗日公式,
接下来,我们来考虑这样的一个等式,
分析该式子的含义:当有
那么,为了使得与原始优化目标等效,我们定义问题,
很明显,该问题与原始问题是一致的,因为要使得
+++++++++++
接下来,定义另一个问题,
那么对偶优化问题被定义为,
我们可以看到,对偶优化问题与原始问题基本是一样的形式,除了颠倒了最大化符号和最小化符号而已。同样定义
+++++++++++
对于原始问题和对偶问题,很容易可以看出,满足下面的不等式条件(可以理解为最小化的最大化是要小于最大化的最小化的),
假如有,原始问题和对偶问题不是不等式关系,而是两者等效的,那么我们求解原始问题和对偶问题都会得到一致的解,而当原始问题不好求解的时候,就可以通过求解对偶问题来降低求解难度。那么,很自然地考虑,在什么时候原始问题和对偶问题的解释一致的呢?实际上,当满足一定条件时,两个问题的解是等价的,而这个“一定的条件”,就是接下来要说的KKT条件。
1.3.2KKT条件
如果有,函数
在后面的分析中,我们会提到对于当前的SVM优化目标是满足KKT条件,所以求解对偶问题和求解原始问题是等价的,这样就把原来的求解目标转换为对偶问题的求解上。接下来,将仔细道来。
1.3.3最优间隔分类器优化问题
上面提到可以通过求解对偶问题来变向求解原始问题的解,首先我们需要明确这样做的提前是要有目标函数和不等式约束是凸函数,最优解满足KKT条件或者不等式约束满足Slater条件,此时对偶问题和原始问题的解值将是一致的。那么SVM优化模型是否符合这个场景呢?如果符合又该如何求解对偶问题呢?
首先,在1.2部分我们讲到如何设计SVM优化函数,即,
为了符合优化问题的一般形式,我们将不等式约束调整为,
其中
构造对偶问题为,
我们要想通过求解对偶问题来求解原始问题,必须要保证两者的求解是等效的。而我们知道优化函数在满足凸函数的提前下,也满足Slater条件(即,存在一个样本点使得
有趣的是,在KKT条件中,有
接下来,将回到如何求解对偶问题。首先根据
则有,
对b求导得到,
将两个式子带入原始拉格朗日函数中,可以得到,
又因为最后一项式子为0,所以有,
将所有公式综合起来,可以得到对偶问题的数学表达,
考虑,如果我们可以通过某种方法将对偶问题的
这样,分界面
最后,我们来进一步的分析,对于新样本判断分类时,有公式,
其中,<>表示内积,至于为什么要表示成内积的形式,这一点在核SVM部分很有用!在前面我们已经提到,只有在支持向量上的样本点,对应的
至此,已经将SVM在线性分类情况下的道理讲清楚了。但目前的SVM分类器的处理能力还比较弱,只能处理线性可分的情况,而对于线性不可分的数据,SVM会使用核函数进行处理。这在下一章节中会进行阐述。
如有问题,欢迎指正~**重点内容**
- 支持向量机SVM
- SVM支持向量机
- svm支持向量机
- SVM支持向量机
- [SVM]支持向量机
- SVM 支持向量机
- 支持向量机SVM
- SVM 支持向量机
- svm支持向量机
- 支持向量机SVM
- svm支持向量机
- SVM (支持向量机)
- SVM支持向量机
- SVM支持向量机
- 支持向量机SVM
- 支持向量机(SVM)
- 支持向量机-SVM
- 支持向量机SVM
- Java多态
- Android常用工具类
- 一个G++AC,C++WA的例子(hdu 4107)
- Remove Linked List Elements
- 【Linux】ssh--linux远程连接
- 支持向量机(SVM)
- iOS开发之Objective-C与JavaScript的交互 ——stringByEvaluatingJavaScriptFromString
- mybatis sql in 查询
- C语言的新扩展typeof
- Android菜鸟级讲师进阶日记(2)
- React和Redux的连接react-redux
- K8s概念指南
- part3.内存管理源码分析Ⅰ
- 首字母变大写