SVM算法
2018-05-20 本文已影响0人
_Monk
svm是一种用来进行分类的算法,如果待分类数据是线性可分的,就可以求解线性可分支持向量机来进行分类;如果待分类数据是线性不可分的,就可以通过求解线性向量机来进行分类;如果待分类数据是非线性的可以通过求解非线性支持向量机来进行分类。本文简单的讲解了每一种向量机应的求解方法。
基本概念
1. 超平面方程
图1. 超平面方程2. 函数间隔
(1)一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。点距离超平面的距离如何用数学方程表示?
3. 几何间隔
注意:
- 怎么从函数间隔推出的几何间隔?
- 函数间隔可以表示分类预测的正确性及确信度,但是如果我们成倍的增大w和b,超平面并没有变,但是函数间隔会变大。为此,我们可以对函数间隔进行规约,使得间隔是确定的,为此引入了几何间隔。
4. 支持向量
线性可分支持向量机的支持向量线性支持向量机的支持向量
求解支持向量机
超平面方程即为支持向量机
1. 线性可分支持向量机
训练集线性可分时,怎么求分离超平面方程?
(1)目标函数
为了能够正确的对数据集进行分类,我们需要使得几何间隔最大。对于线性可分的数据而言,线性可分分离超平面会有无穷多个,但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化,数学表达式如下:
函数间隔和几何间隔有如下关系:
图3. 函数间隔和几何间隔关系
为此:目标函数可以转化为下式:
取 上式的最大化可以变为下式的最小化,最终的目标函数经过转化变成下式:
图4. 最终目标函数
(2)目标函数求解
上式是一个凸二次规划问题,可以使用拉格朗日对偶性,通过求解对偶问题得到上式的最优解。
求对偶问题解法如下:
对于对偶问题的求解可以使用序列最小优化算法(SMO),具体求解不作详细分析。
2. 线性支持向量机
(1)目标函数
对于线性非支持向量机的求解,上面求解线性可分支持向量机的求解是不适用的,因为上面的方法中的不等式约束并不能都成立,为了解决这个问题,需要修改硬间隔最大化,使其成为软间隔最大化。具体实现就是对每个样本点引入一个松弛变量,使函数间隔加上松弛变量大于等于1,所以线性可分支持向量机中的目标函数变为下式:
(2)目标函数的求解
参考上面的过程。
非线性支持向量机
- 有时待分类的数据集是非线性的,这时可以使用非线性支持向量机来进行分类。
- 对于非线性问题的求解,常用的方法是进行一个非线性变换,将非线性问题转化为一个线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
- 线性分类方法求解非线性分类问题分为两步:
- ① 首先使用一个变换将原空间的数据映射到新空间
- ②在新空间里用线性分类学习的方法从训练数据中学习分类模型。
- 核函数
图5. 核函数定义
注意:
核技巧的想法是,在学习和预测中,只定义核函数,而不显示的定义映射函数。
TODO
参考资料
- 《机器学习》,周志华著。
- 《统计学习方法》,李航著。