给定线性可分训练数据集,通过间隔最大算法或等价求解凸二次规划问题学得分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 w∗⋅x+b∗=0
相应的分类预测函数是:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(w∗⋅x+b∗)
与感知机的对比:
线性可分支持向量机和感知机的分离超平面和决策函数完全一致。区别就在对参数 w ∗ , b ∗ w^*,b^* w∗,b∗的求解上。支持向量机的要求更高。
感知机:只要求误分最小,此时解有无穷多个。
线性SVM:不仅要求能正确区分,还要求分离间隔最大,此时解是唯一的。
svm是要求间隔最大的分离超平面,这是一个约束最优化问题。可直接求解或先引入拉格朗日乘子,再等价求解其对偶算法。
间隔最大化的分割超平面等价于以足够大的置信度对训练集进行分类。以几何间隔(带符号的点到直线距离,分类正确为正,否则为负)来衡量“间隔“。假设样本集到分类超平面的几何间隔分别为 γ 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.∣∣w∣∣yi(w⋅xi+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,bmax∣∣w∣∣γ^s.t.∣∣w∣∣yi(w⋅xi+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,bmin21∣∣w∣∣2s.t.yi(w⋅xi+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,bmin21∣∣w∣∣2s.t.yi(w⋅xi+b)≥1,i=1,2,...,N
求解得到 w ∗ , b ∗ w^*,b^* w∗,b∗。
(2)由此得到分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 w∗⋅x+b∗=0
决策函数:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(w∗⋅x+b∗)
推导:
引入拉格朗日乘子 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)=21∣∣w∣∣2+i=1∑Nai(1−yi(w⋅xi+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 ∂w∂L=w−i=1∑Naiyixi∂b∂L=−i=1∑Naiyi
令其等于0求得。
w = ∑ i = 1 N a i y i x i (2) w=\sum_{i=1}^Na_iy_ix_i\tag2 w=i=1∑Naiyixi(2)
∑ i = 1 N a i y i = 0 (3) \sum_{i=1}^Na_iy_i=0\tag3 i=1∑Naiyi=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=1∑Nj=1∑Naiajyiyj(xi⋅xj)+i=1∑Nai−i=1∑Naiyi(j=1∑Najyj(xj⋅xi))=−21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)+i=1∑Nai
最大化 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=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nai
于是原始问题就转化为对 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=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nais.t.i=1∑Naiyi=0ai≥0,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=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nais.t.i=1∑Naiyi=0ai≥0,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=1∑Nai∗yixi
选择 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∗=yj−i=1∑Naiyi(xi⋅xj)
(3)带入 w ∗ , b ∗ w^*,b^* w∗,b∗即可求得分离超平面和决策函数:
分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 w∗⋅x+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=1∑Nai∗yi(xi⋅x)+b∗)
对SVM决策函数的理解,向量内积可以用来表示两个向量的相关度,对新样本计预测时,依次计算该样本与样本集中每一个样本xi的相关度,并乘以其标签y_i。由于是二分类问题,yi取+1或-1。yi为+1时,会使线性组合值变大,yi为-1时,会使线性组合的值变小。变化程度取决于待预测样本x与xi的相关程度(用向量内积表示)。同时还取决于样本的权重;每个样本在决策时的重要程度也是不同的。svm只使用分离超平面上的样本,其他样本权重全部设为0
线性支持向量机不严格要求数据线性可分,近似线性可分即可。同时将硬间隔最大化放宽到软间隔最大化。**对每个样本引进一个松弛因子 ξ i ≥ 0 \xi_i\ge0 ξi≥0。让函数间隔加上松弛因子大于1即可。**这样约束条件就变为:
y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i(w\cdot x_i+b)\ge1-\xi_i yi(w⋅xi+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,bmin21∣∣w∣∣2+Ci=1∑Nξ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,bmin21∣∣w∣∣2+Ci=1∑Nξi2s.t.yi(w⋅xi+b)≥1−ξiξi≥0,i=1,2,...,N
注意:w的解是唯一的,而b的解可能不唯一,而是存在某一个区间内。
优化方法与线性可分SVM一样包括:软间隔最大化和对偶算法。思想一样,只是多了约束条件(不重复介绍了,参见李航老师的统计学习方法)。
线性支持向量机学习策略是软间隔最大化,学习算法是凸二次规划。等价于最小化合页损失函数:
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=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2
合页损失函数中第一项是经验损失(和感知机的类似,只是要求更加严格)。第二项是正则项:参数w的二范数。插入李航老师统计机器学习里关于合页损失函数的配图:
上图包含了三种损失函数:
0-1损失函数:不可导,直接优化困难。
感知机的损失函数:对应图中虚线部分。只要求函数间隔大于0即可,即只要能正确区分样本集即可。
svm合页损失函数:对应图中实现,要求函数间隔大于1,不仅要求能正确区分,还要有足够的置信度。相对感知机来说,svm对分类的要求更高,对未知数据预测的效果也越好(泛化性能好)。
先简单介绍几个概念:
**核技巧:**首先使用变换将数据从原空间映射到另一个空间,然后在新空间用线性分类方法学习分类模型。
映射变换: ϕ ( 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)。
在线性支持向量机中,无论是目标函数还是决策函数(分离超平面),都只涉及实例与实例之间的点积 x i ⋅ x j x_i\cdot x_j xi⋅xj。在对偶问题的目标函数中可以用 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 xi⋅xj。此时目标函数为:
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=1∑Nj=1∑NaiajyiyjK(xi⋅xj)−i=1∑Nai
同样,分类决策的向量点积也使用核函数 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=1∑Nai∗yiK(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)。
给定一个函数,如何判断该函数能不能作为核函数呢?
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
一般很少认为自己定义核函数,而是使用已有的核函数。
(1)多项式核函数
k ( x , z ) = ( x ⋅ z + 1 ) p k(x,z)=(x\cdot z+1)^p k(x,z)=(x⋅z+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σ2∣∣x−z∣∣2)
(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=1∑Nj=1∑NaiajyiyjK(xi⋅xj)−i=1∑Nais.t.i=1∑Naiyi=00≤ai≤C,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=1∑Nai∗yixi
选择一个 a ∗ a^* a∗的正分量 0 < a j ∗ < 0 0
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∗=yj−i=1∑Nai∗yiK(xi⋅xj)
(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=1∑Nai∗yiK(xi,x)+b∗)
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)选择两个变量。
(2)优化这两个变量,使得整体loss下降。
注意:选择的两个变量只有一个是自由变量。由约束条件,一个确定,另一个也随之确定。
高频面试题:
(1)如何选择核函数
根据恩达的公开课,主要考虑特征数n与样本数m。
特征数据情况 | 选择 | 原因 |
---|---|---|
特征数n很多 | LR,线性核SVM | 输入空间已足够复杂,无需核变换 |
特征数n一般,m一般 | 高斯核svm | 数据量不大,可使用计算复杂的高斯核 |
特征数n一般,m很多 | 手工设计特征。然后使用LR,线性核SVM | 数据量很大时,要避免使用非线性svm。主要从特征上着手,补充特征 |
(2)为什么要通过求解对偶算法求解SVM
(3)svm对异常值敏感么,缺失值敏感么?
参考:
[1]李航,统计学习方法
[2]知乎:【机器学习面试总结】—— SVM
[3]知乎:SVM 高频面试题