机器学习(3)-支持向量机(SVM)

支持向量机是比较经典的二类分类机器学习算法,和上一篇写的感知机存在一些关系,简单来说,SVM和感知机的最大不同就是学习策略的不同。SVM按照数据集的分布特点分为三种,即线性可分支持向量机、线性支持向量机和非线性支持向量机。

(一)线性可分SVM

首先,来看第一种线性可分支持向量机。它的特点是训练数据集是线性可分的,同感知机一样,也是需要在特征空间中找到划分正负样本的超平面,不同的是,感知机得到的分离超平面存在无穷多个,而SVM只存在一个最优分离超平面,主要原因是SVM采用间隔最大化的学习策略。为了说明这一点,我们先介绍下函数间隔和几何间隔的概念。

函数间隔

几何间隔

函数间隔和几何间隔的关系

如上所示,函数间隔和几何间隔只差除以一个实数的区别。函数间隔有个性质,就是成倍改变w和b的值,不影响最大间隔分离超平面,也就是说,函数间隔并不影响最优化问题的解。因此,可令函数间隔等于1,这样取得的几何间隔就只与w的大小有关。再根据等价性,我们可以总结线性可分支持向量机的最优化问题为:

这是一个凸二次规划问题。那么线性可分支持向量机的原始形式为:

由拉格朗日对偶性,我们可以得到线性可分支持向量机的对偶算法。首先定义拉格朗日函数:

原始问题的对偶问题是极大极小问题:

对偶形式的最优化问题:

由此可得线性可分支持向量机学习算法的对偶算法:

(二)线性SVM

对于线性不可分的训练数据集而言,线性可分SVM不再适用。需要修改下最优化目标和约束条件,如下:

加入了一个松弛变量,这是线性支持向量机的原始问题,可以定义拉格朗日函数为:

可以得到线性支持向量机的对偶问题:

这样,线性支持向量机学习算法的对偶算法如下:

(三)非线性SVM

如果训练数据集可以用超曲面将正负样本正确分开,则这就是非线性可分问题。核技术是利用非线性变换将输入空间映射到一个特征空间,这样划分数据集正负样本的超曲面就可以转化为超平面,也就是说,非线性的分类问题就可以转化为线性分类问题来解了。对于非线性SVM,就是利用核函数来达到这一目的。非线性SVM的对偶问题的目标函数如下:

分类决策函数如下:

a.常用的核函数有多项式核函数:

对应的分类决策函数为:

b.高斯核函数:

对应的决策分类函数为:

猜你喜欢

转载自blog.csdn.net/xiaoyu_2011/article/details/81839469