SVM(Support Vector Machine,支持向量机)是一个十分传统且好用的分类器,在二分类问题上有十分良好的表现。
一、拉格朗日乘子法
拉格朗日乘子法是SVM参数优化的核心,它能够解决多个等式或不等式约束下的最优化问题。
例1,给定 x 1 − x 2 = 2 x_1-x_2=2 x1−x2=2,如何寻找 x 1 2 + x 2 2 x_1^2+x_2^2 x12+x22的最大值,此时 x 1 , x 2 x_1,x_2 x1,x2是多少?
拉格朗日乘子法的核心在于设立一个拉格朗日方程,将目标函数与约束函数的信息融合在一起,然后找寻该函数的最值。以上述情况为例,定义目标函数 f ( x 1 , x 2 ) = x 1 2 + x 2 2 f(x_1,x_2)=x_1^2+x_2^2 f(x1,x2)=x12+x22,约束函数 g ( x 1 , x 2 ) = x 1 − x 2 − 2 g(x_1,x_2)=x_1-x_2-2 g(x1,x2)=x1−x2−2。拉格朗日乘子法顾名思义,就是新设立一个变量乘在约束函数上,然后和目标函数相加。则可定义拉格朗日函数 L ( x 1 , x 2 , λ ) L(x_1,x_2,\lambda) L(x1,x2,λ)为:
L ( x 1 , x 2 , λ ) = f ( x 1 , x 2 ) + λ g ( x 1 , x 2 ) = x 1 2 + x 2 2 + λ ( x 1 − x 2 − 2 ) L(x_1,x_2,\lambda)=f(x_1,x_2)+\lambda g(x_1,x_2)=x_1^2+x_2^2+\lambda(x_1-x_2-2) L(x1,x2,λ)=f(x1,x2)+λg(x1,x2)=x12+x22+λ(x1−x2−2)
要求得上式的最值,需要各个变量的偏导数为零,所以必须满足:
∂ L ∂ x 1 = ∂ L ∂ x 2 = ∂ L ∂ λ = 0 \frac{\partial L}{\partial x_1}=\frac{\partial L}{\partial x_2}=\frac{\partial L}{\partial \lambda}=0 ∂x1∂L=∂x2∂L=∂λ∂L=0
将上式转换为等式组,有:
2 x 1 + λ = 0 2 x 2 − λ = 0 x 1 − x 2 − 2 = 0 2x_1+\lambda=0\\2x_2-\lambda=0\\x_1-x_2-2=0 2x1+λ=02x2−λ=0x1−x2−2=0
求解可得当 x 1 = 1 , x 2 = − 1 , λ = − 2 x_1=1,x_2=-1,\lambda=-2 x1=1,x2=−1,λ=−2时, x 1 2 + x 2 2 x_1^2+x_2^2 x12+x22可取到最大值2。
上例是最基本的拉格朗日乘子法的应用场景,下面描述扩展场景。
例2,给定 x 1 − x 2 = 2 , x 1 + x 2 ≥ 1 x_1-x_2=2,x_1+x_2\geq1 x1−x2=2,x1+x2≥1,如何寻找 x 1 2 + x 2 2 x_1^2+x_2^2 x12+x22的最大值?
已知约束中除了一个等式约束,还引入了一个不等式约束。和等式约束不同,不等式约束需要分情况讨论:
1. 全局最值在约束范围内
由例1可知,在该例中如果撇开不等式约束,最值在 x 1 = 1 , x 2 = − 1 x_1=1,x_2=-1 x1=1,x2=−1时成立。所以倘若不等式函数 h ( x 1 , x 2 ) > 0 h(x_1,x_2)>0 h(x1,x2)>0在最值情况下成立(比如 x 1 + x 2 > − 1 x_1+x_2>-1 x1+x2>−1),那么这个约束就等于没有。
2.全局最值在约束范围外
这种情况是例2场景下的情况了,此时不等式约束生效,成为等式约束。即最后的最值点会落在约束条件上(此例为 x 1 + x 2 ≥ 1 x_1+x_2\geq 1 x1+x2≥1)。
除了不等式总共有两项约束,因此依然要建立一个方程,将这些信息融合在一起。定义 f ( x 1 , x 2 ) = x 1 2 + x 2 2 f(x_1,x_2)=x_1^2+x_2^2 f(x1,x2)=x12+x22, g ( x 1 , x 2 ) = x 1 − x 2 − 2 g(x_1,x_2)=x_1-x_2-2 g(x1,x2)=x1−x2−2, h ( x 1 , x 2 ) = x 1 + x 2 − 1 h(x_1,x_2)=x_1+x_2-1 h(x1,x2)=x1+x2−1,由于约束比例1多了一个,所以拉格朗日乘子也要多一个。所以该例下拉格朗日函数 L ( x 1 , x 2 , λ , γ ) L(x_1,x_2,\lambda,\gamma) L(x1,x2,λ,γ)为:
L ( x 1 , x 2 , λ , γ ) = f ( x 1 , x 2 ) + λ g ( x 1 , x 2 ) − γ h ( x 1 , x 2 ) = x 1 2 + x 2 2 + λ ( x 1 − x 2 − 2 ) + γ ( x 1 + x 2 − 1 ) L(x_1,x_2,\lambda,\gamma)=f(x_1,x_2)+\lambda g(x_1,x_2) -\gamma h(x_1,x_2)\\=x_1^2+x_2^2+\lambda(x_1-x_2-2)+\gamma(x_1+x_2-1) L(x1,x2,λ,γ)=f(x1,x2)+λg(x1,x2)−γh(x1,x2)=x12+x22+λ(x1−