SVM(support vector machines)支持向量机

1 线性可分支持向量机和硬间隔最大化

1.1 定义

给定线性可分训练数据集,通过间隔最大算法或等价求解凸二次规划问题学得分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 wx+b=0
相应的分类预测函数是:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(wx+b)
与感知机的对比:

线性可分支持向量机和感知机的分离超平面和决策函数完全一致。区别就在对参数 w ∗ , b ∗ w^*,b^* w,b的求解上。支持向量机的要求更高。

  • 感知机:只要求误分最小,此时解有无穷多个。

  • 线性SVM:不仅要求能正确区分,还要求分离间隔最大,此时解是唯一的。

1.2 优化算法

svm是要求间隔最大的分离超平面,这是一个约束最优化问题。可直接求解或先引入拉格朗日乘子,再等价求解其对偶算法。

1.2.1 学习算法-间隔最大化

间隔最大化的分割超平面等价于以足够大的置信度对训练集进行分类。以几何间隔(带符号的点到直线距离,分类正确为正,否则为负)来衡量“间隔“。假设样本集到分类超平面的几何间隔分别为 γ 1 , γ 2 , . . . , γ N \gamma_1,\gamma_2,...,\gamma_N γ1,γ2,...,γN。我们的目标就是找到最小的几何间隔,然后最大化它。
γ = m i n ( γ 1 , γ 2 , . . . , γ N ) m a x w , b γ \gamma=min(\gamma_1,\gamma_2,...,\gamma_N)\\\mathop{max}\limits_{w,b}\quad\gamma γ=min(γ1,γ2,...,γN)w,bmaxγ
等价于:
m a x w , b γ s . t . y i ( w ⋅ x i + b ) ∣ ∣ w ∣ ∣ ≥ γ , i = 1 , 2 , . . . , N \mathop{max}\limits_{w,b}\quad\gamma\\s.t.\quad \frac{y_i(w\cdot x_i+b )}{||w||}\ge \gamma,i=1,2,...,N w,bmaxγs.t.wyi(wxi+b)γ,i=1,2,...,N
根据几何间隔与函数间隔的关系 γ = γ ^ ∣ ∣ w ∣ ∣ \gamma=\frac{\hat{\gamma}}{||w||} γ=wγ^,函数间隔与几何间隔只相差w的二范数,而成倍的增大w,b不会改变分离超平面和几何间隔,只会影响函数间隔。不妨假设函数间隔为1。就得到下式:
m a x w , b γ ^ ∣ ∣ w ∣ ∣ s . t . y i ( w ⋅ x i + b ) ∣ ∣ w ∣ ∣ ≥ γ ^ ∣ ∣ w ∣ ∣ , i = 1 , 2 , . . . , N \mathop{max}\limits_{w,b}\quad\frac{\hat\gamma}{||w||}\\s.t.\quad \frac{y_i(w\cdot x_i+b )}{||w||}\ge\frac{\hat\gamma}{||w||},i=1,2,...,N w,bmaxwγ^s.t.wyi(wxi+b)wγ^,i=1,2,...,N
函数间隔等于1,得到:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w ⋅ x i + b ) ≥ 1 , i = 1 , 2 , . . . , N \mathop{min}\limits_{w,b}\quad\frac{1}{2}||w||^2\\s.t.\quad y_i(w\cdot x_i+b )\ge1,i=1,2,...,N w,bmin21w2s.t.yi(wxi+b)1,i=1,2,...,N
线性可分SVM-最大间隔优化算法:

(1)构造约束最优化问题:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w ⋅ x i + b ) ≥ 1 , i = 1 , 2 , . . . , N \mathop{min}\limits_{w,b}\quad\frac{1}{2}||w||^2\\s.t.\quad y_i(w\cdot x_i+b )\ge1,i=1,2,...,N w,bmin21w2s.t.yi(wxi+b)1,i=1,2,...,N
求解得到 w ∗ , b ∗ w^*,b^* w,b

(2)由此得到分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 wx+b=0
决策函数:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(wx+b)

1.2.2学习算法-拉格朗日对偶算法

推导:

引入拉格朗日乘子 a 1 , a 2 , . . . , a N a_1,a_2,...,a_N a1,a2,...,aN构建拉格朗日函数:
L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 N a i ( 1 − y i ( w ⋅ x i + b ) ) (1) L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^Na_i(1-y_i(w\cdot x_i+b))\tag1 L(w,b,a)=21w2+i=1Nai(1yi(wxi+b))(1)
上述约束最优化问题就变成了极小极大问题:
m i n w , b m a x a L ( w , b , a ) \mathop{min}\limits_{w,b}\mathop{max}\limits_{a}L(w,b,a) w,bminamaxL(w,b,a)
当满足KKT条件时,等价于优化其对偶问题,极大极小问题:
m a x a m i n w , b L ( w , b , a ) \mathop{max}\limits_{a}\mathop{min}\limits_{w,b}L(w,b,a) amaxw,bminL(w,b,a)
先来考虑内部极小问题,令 ψ ( a ) = m i n w , b L ( w , b , a ) \psi(a)=\mathop{min}\limits_{w,b}L(w,b,a) ψ(a)=w,bminL(w,b,a) ψ ( a ) \psi(a) ψ(a)分别对w,b求导并令其为0。
∂ L ∂ w = w − ∑ i = 1 N a i y i x i ∂ L ∂ b = − ∑ i = 1 N a i y i \frac{\partial L}{\partial w}=w-\sum_{i=1}^Na_iy_ix_i\\\frac{\partial L}{\partial b}=-\sum_{i=1}^Na_iy_i wL=wi=1NaiyixibL=i=1Naiyi
令其等于0求得。
w = ∑ i = 1 N a i y i x i (2) w=\sum_{i=1}^Na_iy_ix_i\tag2 w=i=1Naiyixi(2)

∑ i = 1 N a i y i = 0 (3) \sum_{i=1}^Na_iy_i=0\tag3 i=1Naiyi=0(3)

再来求外部极大问题:
a ∗ = a r g m a x a ψ ( a ) a^*=\mathop{argmax}\limits_{a}\psi(a) a=aargmaxψ(a)
将公式(2)(3)带入拉格朗日函数(1)中。 ψ ( a ) \psi(a) ψ(a)等于
ψ ( a ) = 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) + ∑ i = 1 N a i − ∑ i = 1 N a i y i ( ∑ j = 1 N a j y j ( x j ⋅ x i ) ) = − 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) + ∑ i = 1 N a i \psi(a)=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^Na_i-\sum_{i=1}^Na_iy_i(\sum_{j=1}^Na_jy_j(x_j\cdot x_i))\\=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^Na_i ψ(a)=21i=1Nj=1Naiajyiyj(xixj)+i=1Naii=1Naiyi(j=1Najyj(xjxi))=21i=1Nj=1Naiajyiyj(xixj)+i=1Nai
最大化 m a x ψ ( a ) \mathop{max\psi(a)} maxψ(a)等价于最小化 − m i n ψ ( a ) -\mathop{min}\psi(a) minψ(a)
m a x ψ ( x ) = − m i n ψ ( a ) = 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) − ∑ i = 1 N a i \mathop{max}\psi(x)=-\mathop{min}\psi(a)\\=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^Na_i maxψ(x)=minψ(a)=21i=1Nj=1Naiajyiyj(xixj)i=1Nai
于是原始问题就转化为对 a a a的约束极小问题:
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) − ∑ i = 1 N a i s . t . ∑ i = 1 N a i y i = 0 a i ≥ 0 , i = 1 , 2 , . . . , N (4) \mathop{min}\limits_a\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^Na_i\tag4\\s.t.\quad\sum_{i=1}^Na_iy_i=0\\a_i\ge0,i=1,2,...,N amin21i=1Nj=1Naiajyiyj(xixj)i=1Nais.t.i=1Naiyi=0ai0,i=1,2,...,N(4)
根据(4)式求得 a ∗ a^* a。进入可求导 w ∗ , b ∗ w^*,b^* w,b。即求得了分离超平面和决策函数。

学习方法-对偶算法:

(1)构建约束最优化问题:
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j ( x i ⋅ x j ) − ∑ i = 1 N a i s . t . ∑ i = 1 N a i y i = 0 a i ≥ 0 , i = 1 , 2 , . . . , N (4) \mathop{min}\limits_a\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^Na_i\tag4\\s.t.\quad\sum_{i=1}^Na_iy_i=0\\a_i\ge0,i=1,2,...,N amin21i=1Nj=1Naiajyiyj(xixj)i=1Nais.t.i=1Naiyi=0ai0,i=1,2,...,N(4)
求得最优解 a ∗ = ( a 1 ∗ , a 2 ∗ , . . . , a N ∗ ) T a^*=(a_1^*,a_2^*,...,a_N^*)^T a=(a1,a2,...,aN)T。对应着每一个样本一个权重。

(2)计算 w ∗ , b ∗ w^*,b^* w,b

根据公式(w)求得 w ∗ w^* w
w ∗ = ∑ i = 1 N a i ∗ y i x i w^*=\sum_{i=1}^Na_i^*y_ix_i w=i=1Naiyixi
选择 a ∗ a^* a中的一个正分量 a j ∗ > 0 a_j^*>0 aj>0。也就是支持向量,由于支持向量在支撑超平面上,所以可以根据支持向量求得 b ∗ b^* b
b ∗ = y j − ∑ i = 1 N a i y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^Na_iy_i(x_i\cdot x_j) b=yji=1Naiyi(xixj)
(3)带入 w ∗ , b ∗ w^*,b^* w,b即可求得分离超平面和决策函数:

分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 wx+b=0
决策函数:
f ( x ) = s i g n ( ∑ i = 1 N a i ∗ y i ( x i ⋅ x ) + b ∗ ) f(x)=sign(\sum_{i=1}^Na_i^*y_i(x_i\cdot x)+b^*) f(x)=sign(i=1Naiyi(xix)+b)
对SVM决策函数的理解,向量内积可以用来表示两个向量的相关度,对新样本计预测时,依次计算该样本与样本集中每一个样本xi的相关度,并乘以其标签y_i。由于是二分类问题,yi取+1或-1。yi为+1时,会使线性组合值变大,yi为-1时,会使线性组合的值变小。变化程度取决于待预测样本x与xi的相关程度(用向量内积表示)。同时还取决于样本的权重;每个样本在决策时的重要程度也是不同的。svm只使用分离超平面上的样本,其他样本权重全部设为0

2 线性支持向量机和软间隔最大化

2.1 定义与优化方法

线性支持向量机不严格要求数据线性可分,近似线性可分即可。同时将硬间隔最大化放宽到软间隔最大化。**对每个样本引进一个松弛因子 ξ i ≥ 0 \xi_i\ge0 ξi0。让函数间隔加上松弛因子大于1即可。**这样约束条件就变为:
y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i(w\cdot x_i+b)\ge1-\xi_i yi(wxi+b)1ξi
同时,要为每个松弛因子加上惩罚,目标函数变为
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i 2 \mathop{min}\limits_{w,b}\quad\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i^2 w,bmin21w2+Ci=1Nξi2
综合起来,约束最优问题变为:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i 2 s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i ξ i ≥ 0 , i = 1 , 2 , . . . , N \mathop{min}\limits_{w,b}\quad\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i^2\\s.t.\quad y_i(w\cdot x_i+b)\ge1-\xi_i\\\xi_i\ge0,i=1,2,...,N w,bmin21w2+Ci=1Nξi2s.t.yi(wxi+b)1ξiξi0,i=1,2,...,N
注意:w的解是唯一的,而b的解可能不唯一,而是存在某一个区间内。

优化方法与线性可分SVM一样包括:软间隔最大化和对偶算法。思想一样,只是多了约束条件(不重复介绍了,参见李航老师的统计学习方法)。

2.2 合页损失函数

线性支持向量机学习策略是软间隔最大化,学习算法是凸二次规划。等价于最小化合页损失函数:
L = ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 L=\sum_{i=1}^N[1-y_i(w\cdot x_i+b)]_{+}+\lambda||w||^2 L=i=1N[1yi(wxi+b)]++λw2
合页损失函数中第一项是经验损失(和感知机的类似,只是要求更加严格)。第二项是正则项:参数w的二范数。插入李航老师统计机器学习里关于合页损失函数的配图:

在这里插入图片描述

上图包含了三种损失函数:

  • 0-1损失函数:不可导,直接优化困难。

  • 感知机的损失函数:对应图中虚线部分。只要求函数间隔大于0即可,即只要能正确区分样本集即可。

  • svm合页损失函数:对应图中实现,要求函数间隔大于1,不仅要求能正确区分,还要有足够的置信度。相对感知机来说,svm对分类的要求更高,对未知数据预测的效果也越好(泛化性能好)。

3 非线性支持向量机和核函数

3.1核技巧

先简单介绍几个概念:

**核技巧:**首先使用变换将数据从原空间映射到另一个空间,然后在新空间用线性分类方法学习分类模型。

映射变换: ϕ ( x ) \phi(x) ϕ(x)将x从输入空间映射到特征空间。

**核函数:**对所有的x,z,函数 k ( x , z ) k(x,z) k(x,z)都满足:
k ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) k(x,z)=\phi(x)\cdot\phi(z) k(x,z)=ϕ(x)ϕ(z)
则称 k ( x , z ) k(x,z) k(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数。核函数的值域是R。是两个向量点积得到的一个数值。核技巧的思想是只定义核函数 k ( x , z ) k(x,z) k(x,z)。而不需要显示的定义映射函数 ϕ ( x ) \phi(x) ϕ(x)

3.2 svm中的核技巧

在线性支持向量机中,无论是目标函数还是决策函数(分离超平面),都只涉及实例与实例之间的点积 x i ⋅ x j x_i\cdot x_j xixj。在对偶问题的目标函数中可以用 k ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) k(x_i,x_j)=\phi(x_i)\cdot\phi(x_j) k(xi,xj)=ϕ(xi)ϕ(xj)代替向量点积 x i ⋅ x j x_i\cdot x_j xixj。此时目标函数为:
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j K ( x i ⋅ x j ) − ∑ i = 1 N a i \mathop{min}_{a}\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_jK(x_i\cdot x_j)-\sum_{i=1}^Na_i mina21i=1Nj=1NaiajyiyjK(xixj)i=1Nai
同样,分类决策的向量点积也使用核函数 k ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) k(x_i,x_j)=\phi(x_i)\cdot\phi(x_j) k(xi,xj)=ϕ(xi)ϕ(xj)替换。即:
f ( x ) = s i g n ( ∑ i = 1 N a i ∗ y i K ( x i , x ) + b ∗ ) f(x)=sign(\sum_{i=1}^Na_i^*y_iK(x_i,x)+b^*) f(x)=sign(i=1NaiyiK(xi,x)+b)
不需要显示定义特征空间和映射函数,只需要给定核函数 k ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) k(x_i,x_j)=\phi(x_i)\cdot\phi(x_j) k(xi,xj)=ϕ(xi)ϕ(xj)

3.3 核函数的要求

给定一个函数,如何判断该函数能不能作为核函数呢?

k ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) k(x,z)=\phi(x)\cdot\phi(z) k(x,z)=ϕ(x)ϕ(z)为正定核的充要条件是对任意 x I x_I xI k ( x , z ) k(x,z) k(x,z)对应的Gram矩阵是半正定矩阵。
k = [ k ( x i , x j ) ] m × m k=[k(x_i,x_j)]_{m\times m} k=[k(xi,xj)]m×m
一般很少认为自己定义核函数,而是使用已有的核函数。

3.4 常用核函数

(1)多项式核函数
k ( x , z ) = ( x ⋅ z + 1 ) p k(x,z)=(x\cdot z+1)^p k(x,z)=(xz+1)p
(2)高斯核函数
k ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) k(x,z)=exp(-\frac{||x-z||^2}{2\sigma^2}) k(x,z)=exp(2σ2xz2)

3.5 学习算法

(1)选取适当核函数 k ( x , z ) k(x,z) k(x,z)和参数C。构造约束最优化问题:
m i n a 1 2 ∑ i = 1 N ∑ j = 1 N a i a j y i y j K ( x i ⋅ x j ) − ∑ i = 1 N a i s . t . ∑ i = 1 N a i y i = 0 0 ≤ a i ≤ C , i = 1 , 2 , . . . , N (5) \mathop{min}_{a}\quad\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Na_ia_jy_iy_jK(x_i\cdot x_j)-\sum_{i=1}^Na_i\tag5\\s.t.\quad\sum_{i=1}^Na_iy_i=0\\0\le a_i\le C,i=1,2,...,N mina21i=1Nj=1NaiajyiyjK(xixj)i=1Nais.t.i=1Naiyi=00aiC,i=1,2,...,N(5)
求得最优解 a ∗ = ( a 1 ∗ , a 2 ∗ , . . . , a N ∗ ) T a^*=(a_1^*,a_2^*,...,a_N^*)^T a=(a1,a2,...,aN)T

(2)计算 w ∗ , b ∗ w^*,b^* w,b
w ∗ = ∑ i = 1 N a i ∗ y i x i w^*=\sum_{i=1}^Na_i^*y_ix_i w=i=1Naiyixi
选择一个 a ∗ a^* a的正分量 0 < a j ∗ < 0 0<a_j^*<0 0<aj<0,计算 b ∗ b^* b
b ∗ = y j − ∑ i = 1 N a i ∗ y i K ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^Na_i^*y_iK(x_i\cdot x_j) b=yji=1NaiyiK(xixj)
(3)构造决策函数
f ( x ) = s i g n ( ∑ i = 1 N a i ∗ y i K ( x i , x ) + b ∗ ) f(x)=sign(\sum_{i=1}^Na_i^*y_iK(x_i,x)+b^*) f(x)=sign(i=1NaiyiK(xi,x)+b)

3.6 SMO序列最小优化算法

Sequential minimall optimization(SMO)是一种高效实现svm学习的算法。在3.4学习算法中,就是求解拉格朗日因子 a ∗ a^* a。一个变量 a i a_i ai对应一个样本 ( x i , y i ) (x_i,y_i) (xi,yi)。变量总数等于样本总量N。计算复杂度高。

SMO是一种启发式的算法:其基本思路是,如果所有变量都满足此最优化问题的KKT条件,那么就得到了最优化问题的解。

SMO分为两步:

(1)选择两个变量。

  • 选择第一个变量:称为外层循环,选择违反KKT条件最严重的样本点。具体的是逐次检测样本点 ( x i , y i ) (x_i,y_i) (xi,yi)是否满足KKT条件。
  • 选择第二个变量:称为内层循环,希望第二个变量有足够大的变化。

(2)优化这两个变量,使得整体loss下降。

注意:选择的两个变量只有一个是自由变量。由约束条件,一个确定,另一个也随之确定。

高频面试题:

(1)如何选择核函数

根据恩达的公开课,主要考虑特征数n与样本数m。

特征数据情况选择原因
特征数n很多LR,线性核SVM输入空间已足够复杂,无需核变换
特征数n一般,m一般高斯核svm数据量不大,可使用计算复杂的高斯核
特征数n一般,m很多手工设计特征。然后使用LR,线性核SVM数据量很大时,要避免使用非线性svm。主要从特征上着手,补充特征

(2)为什么要通过求解对偶算法求解SVM

  • 方便引入核函数,对偶问题转化成了样例的点积形式
  • 将原始问题的约束转化成对偶问题中的等式约束。
  • 简化求解。原始问题的参数是(d+1)维的(d是w的维度也就是特征的维度)。而对偶问题的参数a是N维的,只与样本数量有关。便于设计复杂特征。
  • 求解高效,最优解 a ∗ a^* a是稀疏的。只有支持向量的 a a a不为0。

(3)svm对异常值敏感么,缺失值敏感么?

参考:

[1]李航,统计学习方法

[2]知乎:【机器学习面试总结】—— SVM

[3]知乎:SVM 高频面试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值