支持向量机
第七章、支持向量机
支持向量机
(Support vector machines,SVM)- 模型:定义特征空间上最大的线性分类器,区别于感知机模型,具备
核技巧
,所以也是非线性分类器- 包括:线性可分支持向量机、线性支持向量机、非线性支持向量机
- 策略:间隔最大化,形式化为求解
凸二次规划
问题,等价正则化合页损失函数最小化
问题- 线性可分、线性支持、非线性支持向量机分别通过硬间隔最大化,软间隔最大化,核技巧及软间隔最大化来学习
- 算法:求解凸二次规划最优化算法
- 模型:定义特征空间上最大的线性分类器,区别于感知机模型,具备
核函数
:将输入从 输入空间映射 到特征空间得到的特征向量之间的内积
,进而帮助我们学习非线性支持向量机,隐式地从高维特征中学习线性支持向量机。
7.1 线性可分支持向量机
7.1.1 线性可分SVM模型
给出训练数据集:
- 符号说明:\(x_i\)表示第i个特征向量实例,\(y_i\)是类标记,取值为+1和-1,表示正例和负例。
- 对于该模型,我们假设训练数据集
线性可分
(见定义2.2) - 训练目标:在特征空间中找到分离超平面,让实例分到不同的类,并通过间隔最大化求得最优分离超平面(区别于感知机,此时超平面是唯一的)
二类分类问题的示意图如下,下一小节,我们介绍如何度量点到平面的间隔,进而为后续的间隔最大化策略做铺垫。
7.1.2 函数间隔与几何间隔
- 通过点距离平面超平面的远近来表示分类预测的确信程度
- 如上图所示,对于距分离超平面较远的A点,我们预测该点为正类则更加确信,对于较近的C点,则认为该点预测为正类则不那么确信
函数间隔
:对于\(w · x + b = 0\)超平面,\(|w · x + b|\)则表示点x距离超平面的远近,通过其符号与类标记y是否一致来表示分类是否正确- 考虑到平面系数变为原来的k倍后,超平面不变,函数间隔变为k倍,因此我们可以加入规范化约束\(\|w\|=1\)使得函数间隔固定
几何间隔
:相对函数间隔,几何间隔则对应几何意义上真实的距离,距离为\(\gamma_i=y_i\left(\frac{w}{\|w\|}\bullet x_i+\frac{b}{\|w\|}\right)\)- 从图7.2中看到,点A(正例)到超平面的几何间隔为\(\gamma_i=\frac w{\|w\|}\bullet x_i+\frac b{\|w\|}\)
- 那么负例点到超平面的几何间隔为\(\gamma_i=-\left(\frac{w}{\|w\|}\bullet x_i+\frac{b}{\|w\|}\right)\)
注:几何间隔是实例点到超平面的带符号距离,当样本点被正确分类时,才是实例点到超平面距离,后面说到软间隔的部分会提到误分类点的问题
- 函数间隔和几何间隔的关系,一句话来说就是:几何间隔就是函数间隔基础上除以\(\|w\|\)(下标加i表示样本点)
- 特别地,当\(\|w\|=1\)时,函数间隔和几何间隔相等,此时等比例改变w和 b,函数间隔成比例改变,几何间隔不变。
7.1.3 硬间隔最大化策略
硬间隔最大化
:支持向量机的思路就是求解正确划分数据集并且几何间隔最大的分离超平面,对线性可分的训练数据集而言,是唯一的(区别于感知机是无穷多个)- 怎么找这唯一的超平面:几何间隔最大意味着确信度最大地对数据进行分类,那么思路就是:将 离超平面最近的点(支持向量)需要有足够大的确信度分开。
最大间隔分离超平面学习
- 约束条件就是找到几何间隔最小的向量\(\gamma\),即离超平面最近的点,
- 目标函数就是表明该向量要有最大的几何间隔,即求得足够大的确信度
上述公式可以改写为函数间隔的形式,此时具有如下特性:
- 考虑函数间隔的性质,函数间隔\(\hat{\gamma}\) 不会影响最优化问题的最终的解
- 所以可以简化问题 \(\hat{\gamma}=1\) 来代入问题
- 又考虑到最大化 \(\frac{1}{\|w\|}\)和最小化 \(\frac{1}{2}\|w\|^2\)等价的,进一步简化我们的策略函数
- 这是一个
凸优化问题
,即关于如下的约束优化问题- 其中\(f(w)\)和约束函数\(g_i(w)\)都是\(R^n\)上的连续可微凸函数,约束函数\(h_i(w)\)是
仿射函数
(即函数\(f(x)\)满足\(f(x)=a\bullet x+b\),矩阵线性变换+平移)
- 其中\(f(w)\)和约束函数\(g_i(w)\)都是\(R^n\)上的连续可微凸函数,约束函数\(h_i(w)\)是
此时,如果又满足目标函数\(f(w)\)为二次函数,且约束函数\(g_i(w)\)也是仿射函数时,我们可以将上述凸最优化问题转变为凸二次规划问题
通过二次规划求解后,得到解\(w^{*},b^{*}\),进而得到分离超平面\(w^{*}\bullet x+b^{*}=0\)和分类决策函数\(f(x)=\mathrm{sign}(w^*\bullet x+b^*)\) ,即得到最终的线性可分SVM模型。
【算法7.1】 最大间隔法描述
做了上述的分析后,得到最大间隔法的学习策略如下:
最大间隔分离超平面存在唯一性证明
- 存在性证明
- 因为线性可分,所以最优化问题(7.13-7.14)存在可行解(注:在低维如果不可分,那么在高维应线性可分)
- 又因为目标函数有下界,那么必定有解 \((w^{*},b^{*})\)
- 又由于数据集既有正类又有负类,那么不可能有\((w^{*},b^{*})=(0,b)\)最优化可行解
- 综上,最优解\((w^{*},b^{*})\)且\(w \neq 0\) 就证明存在性
- 唯一性证明
- 李航老师主要是通过反证法证明的:即我假设如果存在两个最优化解,只要说明这两个点的w和b相同即可
- 证明w变量时,大概思路是引入中间值(非最优解),然后通过向量三角不等式说明上界,得到两个向量在同一个方向上并且长度相同
- 在证明b变量时,这里是引入两个平面对应4个可能的支持向量的关系,使用两个条件:
- a. 支持向量的点距离平面的距离(
几何间隔
)为1; ---> 得到b1 b2关于w*和x的表达式 - b. 其余的点距离平面的距离不低于1 ---> 得到 x1'' = x2'',x1' = x2'
- a. 支持向量的点距离平面的距离(
支持向量和间隔边界
在上面的存在唯一性证明过程当中,提到了支持向量和间隔边界相关的概念,我们具体来说明。
支持向量
:分离超平面最近的样本点实例,即使得式7.14等号成立的点间隔边界
:H1和H2为间隔边界
间隔
:H1和H2的距离为间隔(margin) 间隔的值依赖于分离超平面法向量w,为\(\frac{2}{w}\)
给出了一个案例,实际上就是将每个点代入到原策略函数中,然后求解二次规划问题。
7.1.4 对偶算法
为什么要进行对偶求解
- 更容易求解(对偶问题一定是凸函数,即局部最优满足全局最优)
- 便于后续引入
核函数
对偶求解过程
-
首先构造拉格朗日函数,\(α_i\)为拉格朗日因子,且满足\(α_i\geq0\)
-
通过拉格朗日对偶性,原始问题的对偶问题就转变为
极大极小问题
(注:这里的α是由\((\alpha_1. \alpha_2...,α_n)^{T}\)构成的拉格朗日向量)- (为什么要取极大值?本章最后一小节说明,大概先看看整个过程怎么样的)
-
首先求解L函数关于w,b 的极小值,通过偏导=0计算得到7.19和7.20约束式
-
将7.19的w表达式代入原来的拉格朗日7.18式后,进一步得到外层最小化问题,而如果转化为最大最小问题,那么就是对偶问题了(先不急着回答为什么能转换成对偶问题,最后一小节会提到)
-
考虑凸函数的标准形式,对偶问题可以等价为如下形式,可通过二次规划求出来解α*
- 得到α*后,可通过定理7.2得到w*和b*的表达式,进而得到最后的超平面
定理证明过程如下:
- w*是基于KKT条件直接得到(KKT是什么?为什么能用KKT条件?和对偶到底有什么关系?)
- 其中KKT第三个式子来由:对于间隔边界的点,右边项为0,而对于其他点α=0,综上,相乘为0
- 通过至少存在\(α_j^{*}>0\),即支持向量,得到KKT第四个取相等的条件,于是就可以得到b*的表达式
最后通过定理求得参数w* b*后,就可以得到最终的超平面和决策函数
【算法7.2】 线性可分SVM对偶算法描述
-
最优化问题由7.22-7.24得到,即我们构造的拉格朗日函数求极值后的等式条件
-
计算由式7.25-7.26得到,主要是通过对偶问题的KKT条件,可以发现w*和b*参数的求解只依赖于\(\alpha_i^{*}>0\)的样本点(
支持向量
)- 求解α*可通过SMO算法进行求解
给出该算法具体的例子便于快速理解回顾
- 注意一点,这里的极值点如果不满足约束条件,极值应当取边界值
*凸优化补充:KKT Slater 对偶 + 流程总结
凸优化最优解问题格式:
什么是凸函数
1、目的是求取目标函数的最小值;
2、目标函数和不等式约束函数都是凸函数,定义域是凸集;
3、若存在等式约束函数,则等式约束函数为仿射函数;
4、对于凸优化问题具有良好的性质,局部最优解便是全局最优解。
对偶问题,slater条件,KKT条件
对于凸函数求解,我们一般是采用拉格朗日乘子法构建函数(其中α≥0、β任意,均为拉格朗日乘子,i=1,2,…,p且j=1,2,…,q)
但是考虑到如果要直接全部求偏导,光参数α和β就有p+q个了,所以考虑使用对偶问题简化计算
考虑这样一个函数,思考:为什么要求最大值??
不难得到这样的关系
-
(1)式表示,当约束条件满足时,拉格朗日函数最大值就是f(x)
-
(2)表明,约束条件只要有一个不满足,结果就是无穷大
那么我们可以解答刚刚提出的问题,求最大值后,就可以对原问题的约束条件进行吸收,进而可以表示成能够进行对偶的形式
进而转变为对偶问题
看下面这种图,给定原问题和对偶问题的结果P和Q,一般来说P ≤ Q(矮个子里的高个子比不过凤凰的尾巴),没取到等号那就是弱对偶,此时对偶问题不能等价转换
但是如果我满足了Slater条件和KKT条件
,就可以取到这个等号,那么就是强对偶,我就可以转换为对偶问题
slater条件
定义:存在x,使得不等式约束g(x)<=0严格成立,即保证了鞍点的存在。
KKT条件
如下:
- 第一个条件表示满足约束条件
- 第二个条件表示最优点x, ∇f必须是∇gi和∇hj的线性組合
- 第三个条件是限制拉格朗日的条件,对每一个α都必须大于或等于零,而对于等式,β不等于0
这张图对上述过程总结的很到位。
参考资料:
7.2 线性支持支持向量机
7.2.1 线性支持SVM模型
- 问题:线性可分终究是理想情况,实际是会有
特异点(outlier)
,即在采取硬间隔最大化时 7.14约束条件并不是所有点都成立的
- 解决方案:模型策略从
硬间隔最大化
优化为软间隔最大化
,接下来详细说明软间隔是什么。
引入松弛变量\(\xi_{i}\geqslant0\),并对于每个松弛变量都需支付代价\(\xi_i\),目标函数和约束条件修改为如下:
-
对约束条件的理解:
- 对于正确分类点,\(\xi_i=0\),那么和前面的一样
- 对于误分类点,\(\xi_i>0\),那么就允许约束条件大于更小的距离(包括负数)
-
对于目标函数的理解
- C > 0 是惩罚参数,用于协调函数间隔和误分类点个数
那么采用软间隔得到的问题如下
类似地,求解后的分类决策函数模型就是线性支持向量机
7.2.2 对偶算法
有了上一节的铺垫,我们按照同样的方式进行对偶算法的分析,无非多了一个松弛变量进行约束。
- 式7.49得到关于\(\alpha_i\)不等式的具体解释说明
一样地,求得α后,通过对偶问题KKT条件可以得到对应的w b的解,进而代入得到最终的模型
解释一下,为什么存在\(0<α_j^{*}<C\)(支持向量),就有等号成立,以及b的表达式7.51具体是怎么推导的。
- 等号成立看7.53,首先说明\(\xi_i^{*}=0\),然后左边式子不等于0就可以推得
- b的表达式就是把这个结论代入w的表达式就可以得到,其中有一个隐含条件是yj的平方是1
【算法7.3】 线性支持SVM算法描述
7.2.3 支持向量
那么对偶问题的支持向量是满足什么条件呢?通过这个图来看
对应的关系说明:
为什么?
根据这些约束条件:
而几何间隔d计算公式为:
以第一种情况为例子:如果\(\alpha_i^{*}<C\),那么由式7.43得到,u*>0,那么就可以推得\(\xi_i^{*}=0\),进而由式7.53得到几何间隔为1,所以在间隔边界上。
其他同理(第二种情况对应0<d<1,第三种情况对应d=0,第四种情况对应d<0)
7.2.4 合页损失函数
对于线性支持向量机的学习,有另外一种等价形式:
- 这里第一项是经验损失,而下面这个函数就是
合页损失函数
,第二项则是一个L2范数的正则化项
- 右下角的+号表示取正值函数
理解:之所以是等价描述,关键是第一项,当样本点被正确分类且函数间隔y(wx + b) > 1时,损失为0,否则损失为 1-y(wx+b)
证明:
- 实际上隐含了7.61和7.62两个隐藏条件
- 小于等于0时得到的结果是因为不等式\(1-y_i(w\bullet x_i+b)\leqslant0\leqslant\xi_i\)
结合上述的函数,给出0-1损失函数 感知机和合页损失函数的图像对比
-
线性支持SVM的损失函数在0-1损失函数的基础是连续可导的,可作为0-1函数优化的上界(合页损失函数)目标函数
-
因为SVM的确信度问题造成了偏移,因为SVM要求距离(确信度)大于等于1,而感知机只要求距离>=0
7.3 非线性支持向量机与核函数
7.3.1 核技巧
非线性分类问题
这里给出了一个感性的理解图
李航老师关于核函数
理论的解释见下面这张图
- 结合上面的图说明,什么是核技巧呢?
- 实际上就是在二维平面中的\(x_1^2+x_2^2=0(w=1, b=0)\)(此时线性不可分),在三维平面就可以看成\(z_1+z_2=0\)(此时线性可分)
- 然后我们的模型在这个三维平面上跑,学习得到最终的分类模型
核函数定义
在说明核函数之前,涉及到一些概念进行补充理解
- 什么是
希尔伯特空间
? - 什么是
内积
?内积空间
是什么?完备
又怎么理解?- 内积:对于一个线性空间中的任意三个矢量 ϕ,ψ,χ 和一个复数域上的数 a ,满足以下交换律结合律以及自乘率
- 内积空间:定义内积的线性空间
- 空间完备性:对于一个内积空间, 其任一
柯希序列
的极限也属于这个空间时,则这个性质叫空间的完备性。- 柯西(Cauchy)序列:简单理解,去掉有限个点后,剩下的最大向量长度小于任意正整数
李航老师给出的定义见下图
这里放一下关于映射关系的例子(映射关系不是唯一的,只是演示不同维度的映射),并给出一些相关点
- 这边核函数作用是降维吗?更深一步说,本质应该还是为了简化运算。
注:我们实际上只需直接计算核函数K(x, z) (简单),不需要把两个映射关系求出来(复杂)
核函数在SVM的应用
我们之前7.37式子中的原有对偶问题,使用核函数代替,就可以通过核技巧来求解非线性问题了
- 接下来的问题是核函数如何选择?我们下一小节会再深入说明。
7.3.2 正定核
前面提到,构造映射函数是一件复杂的事情,而我们一般是通过直接求核函数K(x, z)。那么可不可以直接通过一个给定的函数是不是核函数?
首先给出正定核
的概念,核函数实际上也叫正定核函数(positive definite kernel function)。
假设:\(K(x,z)\text{ 是定义在 }\mathcal{X}\times\mathcal{X}\text{ 上的对称函数}\text{并且对任意的 }x_1,x_2,\cdots,x_m\in\mathcal{X}\text{,}K(x,z)\text{ 关于 }x_1,x_2,\cdots,x_m\text{ 的 Gram 矩阵是半正定的。}\)
(等价的命题:对于任意 n 阶实对称半正定矩阵 M, 存在矩阵 A 使得 M=ATA 成立,核心思路是通过正交对角化的性质,然后对特征矩阵求根转换得到ATA的形式)
定义映射
注:这里线性组合是元素的集合S(因为αi取值),因为加法惩罚封闭的,所以可以定义向量空间。
定义内积空间S
- 前面说过,核函数是两个映射函数的乘积,那么类似地定义另外一个线性组合,然后接下来要证明是否满足内积条件
7.74-7.76式,通过7.70-7.72得到和K(x, z)对称性得到(乘法交换律)
- 7.75式子前面一项,整合一个1~(m+l)的求和和后面的式子等价
对于式7.77,由于半正定,所以可以得到大于等于0
对于7.78,右边可以得到左边,主要说明左边推右边,即必要性。
这里给出一个不等式(证明思路是通过f + λg的线性组合代入7.77式后,看成关于λ未知函数,使用判别式得到)
然后代入7.77式,得到一个式子
这里通过7.73的运算定义
将左边的式子替换后就是得到的结果
至此,上述运算*就是内积运算,可以表示为:
内积空间完备化为希尔伯特空间
通过内积得到范数
- 得到范数后,得到S是
赋范向量空间
,根据泛函分析理论,我们一定可以使得完备化,根据前面的希尔伯特空间定义,一旦完备就能得到希尔伯特空间H - 我们将该希尔伯特空间成为
再生核希尔伯特空间
(reproducing kernel Hilbert space RKHS),即满足再生核性质的希尔伯特空间:
结论:正定核充要条件
实际上前面都是为了我们这个主题进行铺垫:到底什么函数满足正定核条件?
- 必要性证明思路:核函数转换成内积后,结合Gram对称性质,化简为一个平方相乘的格式,得到K是半正定矩阵结论
- 充分性证明思路:前面的铺垫实际上都是为了证明充分性,根据Gram矩阵半正定的假设,可以得到希尔伯特映射,通过7.83的性质可以得到核函数可以通过映射函数相乘
给出等价定义
- 对称函数在构造核函数的时候会比较友好
实际上,在有限输入及判断Gram是否半正定也不容易。。我们往往直接拿已有的核函数
7.3.3 常用核函数
字符串核函数
映射定义
7.3.4 非线性支持向量机
该部分没啥内容,实际上就是在原有基础上将核函数修改即可,关键就是核函数的选择问题以及理清到底什么样的函数是核函数即可。