概述
支持向量机(support vector machines, SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化。支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机学习模型:线性可分支持向量机(linear support vector machine in linearly separable case )、线性支持向量机(linear support vector machine)及非线性支持向量机(non-linear support vector machine)。
学习方法包括:硬间隔最大化(hud margin maximization)、软间隔最大化(soft margin maximization)、核技巧(kernel trick)。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。这样的方法称为核技巧(kernel trick)。
线性可分支持向量机和硬间隔最大化
1、线性可分支持向量机
2、函数间隔与几何间隔
二者之间的关系:
3、间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类,也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。
(1)最大间隔分离超平面
推导步骤如下:
A.原始约束:
B.改写一下:
C.函数间隔y~的取值并不影响最优化问题的解.事实上,假设将w和b按比例改变为s*w和s*b这时函数间隔成为s*y~.函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就是说,它产生一个等价的最优化问题.这样,就可以取y~=1.将y~=1代入上面的最优化问题,注意到最大化1/||w||和最小化告||w||2/2是等价的,于是就得到下面的线性可分支持向量机学习的最优化问题:
如果求出了该约束最优化问题的解w* ,b*,那么就可以得到最大间隔分离超平面w*x+b*=0及分类决策函数J(x)=sign(w*x+b*),即线性可分支持向量机模型。
(2)线性可分支持向量机的学习算法——最大间隔法
(3)最大间隔分离超平面的唯一性
若训练数据集z线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。
(4)支持向量和间隔边界
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量( support vector )。支持向量是使约束条件式等号成立的点,即
如图,其中在H1和H2上的点就是支持向量,H1和H2之间的距离称为间隔(margin)。间隔依赖于分离超平面的法向量w,等于2/||w||。H1和H2称为间隔边界.
在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。
4、学习的对偶算法
构建拉格朗日函数(Lagrange function),引进拉格朗日乘子(Lagrange multiplier):
根据拉格朗日对偶性,原始问题的对偶问题是拉格朗日函数的极大极小问题:
求解步骤:
(1)先对w,b求极小化
得:
将上式代入拉格朗日函数:
(2)对a求最大化
(3)得出解
总结线性可分支持向量机学习算法:
对应的支持向量:
例子:
解法一:
解法二:
线性支持向量机和软间隔最大化
1、线性支持向量机
(1)针对线性不可分训练数据
线性不可分意味着某些样本点不能满足函数间隔大于等于1的约束条件,为了解决这个问题,可以对每个样本点引进一个松弛变量,约束条件变为:
同时目标函数变为:。其含义是使1/||w||2尽量小,即间隔尽量大,同时使误分点的个数尽可能少。该思路用于线性不可分的数据学习支持向量机,相应与硬间隔最大化,其被称为软间隔最大化。
(2)线性不可分的线性支持向量机的学习问题
线性不可分的线性支持向量机的学习问题变成凸二次规划(convex quadratic progamming )问题(原始问题):
其中可证明,w的解是唯一的,b的解不唯一。
(3)线性支持向量机的定义:
2、学习的对偶算法
(1)推导
(2)对偶问题及其最优解
(3)总结:线性支持向量机学习算法
步骤(2)中,对往一适合条件。0<aj*<C的aj*.按式((7.51)都可求出b*,但是由于原始问题(7.32)一(7.34)对b的解并不唯一,所以实际计算时可以取在所有符合条件的样本点的平均值。
3、支持向量
线性不可分的情况下,将对偶问题的解a*中对应于aj* > 0的样本点(xi,yi)的实例xi称为支持向量(软间隔的支持向量)。
软间隔的支持向量xi或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。
若a*=C,0<约束<1,则分类正确,xi在间隔边界与分离超平面之间;
若a*=C,约束=1,则xi在分离超平面上:
若a*=C,约束>1,则xi位于分离超平面误分一侧.
4、合页损失函数
线性支持向量机学习还有另外一种解释,就是最小化以下目标函数:
目标函数的第1项是经验损失或经验风险,函数称为合页损失函数(hinge loss ftmction)
下标“+”表示以下取正值的函数:
这就是说,当样本点(xi,yi)被正确分类且函数间隔(确信度)y(wx+b)大于1时,损失是0。也就是有的实例点被正确分类,但损失不是0。目标函数的第2项是系数为元的w的么范数,是正则化项.
合页损失函数的图形如图所示,横轴是函数间隔y(wx十b) .纵轴是损失.由于函数形状像一个合页,故名合页损失函数.
图中还画出0-1损失函数,可以认为它是二类分类问题的真正的损失函数,而合页损失函数是0-1损失函数的上界.由于0-1损失函数不是连续可导的,直接优化由其构成的目标函数比较困难,可以认为线性支持向量机是优化由0-1损失函数的上界(合页损失函数)构成的目标函数.这时的上界损失函数又称为代理损失函数(surrogate loss function).图中虚线显示的是感知机的损失函数[y(wx十b)]+.这时,当样本点(x,y)被正确分类时,损失是0,否则损失是-y(wx十b).相比之下,合页损失函数不仅要分类正确,而且确信度足够高时损失才是0.也就是说,合页损失函数对学习有更高的要求.
非线性支持向量机与核函数
1、核技巧
(1)非线性分类问题:如果能用Rn中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题.
上面的例子说明,用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型.核技巧就属于这样的方法.
核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间(欧氏空间Rn或离散集合)对应于一个特征空间(希尔伯特空间H),使得在输入空间Rn中的超曲面模型对应于特征空间H中的超平面模型(支持向量机)。
(2)核函数
定义7.6(核函数)
设X是输入空间,H为特征空间,如果存在一个映射映射函数
使得对所有属于X的x,z,函数K(x,z)满足条件
则称K(x,z)为核函数。
核技巧的想法是,在学习与预测中只定义核函数K(x,z),而不显式地定义映射函数。对于给定的核K(x,z),特征空间x和映射函数的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射。
(3)核技巧在支持向量机中的应用
在对偶问题的目标函数中的内积(xi*xj)可以用核函数K(xi, xj)来代替:
分类决策函数也可用核函数代替,变为:
这等价于经过映射函数将原来的输入空间变换到一个新的特征空间,将输入空间中的内积(xi*xj)变换为特征空间中的内积。在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型。
在核函数给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数。这样的技巧称为核技巧。
2、正定核
3、常用的核函数
(1) 多项式核函数(polynomial kernel function)
对应的支持向量机是一个P次多项式分类器.在此情形下,分类决策函数成为
(2)高斯核函数(Gaussian kernel function)
对应的支持向量机是一个高斯径向基函数( radial basis function )分类器.在此情形下,分类决策函数成为
(3)字符串核函数(string kernel function)
核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上。比如,字符串核是定义在字符串集合上的核函数。
两个字符串s和t上的字符串核函数是基于映射的特征空间中的内积
字符串核函数kn(s, t)给出了字符串s和t中长度等于n的所有子串组成的特征向量的余弦相似度(cosine similuity)。直观上,两个字符串相同的子串越多,它们就越相似,字符串核函数的值就越大。字符串核函数可以由动态规划快速地计算。
扩展(西瓜书):
4、非线性支持向量分类机
(1)非线性支持向量机定义
从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划,学习得到的分类决策函数称为非线性支持向量,K(x,z)是正定核函数。
(2)非线性支持向量机学习算法
序列最小最优化算法
可参考:https://www.cnblogs.com/pinard/p/6111471.html
以优化下式为例:
思想:
具体求解过程:
令上式约束变为:
约去一个变量后,最后一个变量很好求。
w,b的求解过程:
w由于求出a,代入就好了。