1 前备知识
在这里简略讲一下使用方法,具体原理和推导公式不展开讲了。
1.1 拉格朗日乘子法
拉格朗日乘子法就是求函数 f ( x 1 , x 2 , . . . ) f(x1,x2,...) f(x1,x2,...)在约束条件 g ( x 1 , x 2 , . . . ) = 0 g(x1,x2,...)=0 g(x1,x2,...)=0下的极值的方法。其主要思想是将约束条件函数与原函数联立,从而求出使原函数取得极值的各个变量的解。
首先看下面的例题:
m i n f = 2 x 1 2 + 3 x 2 2 + x 3 2 s . t . 2 x 1 + x 2 − 1 = 0 2 x 2 + x 3 − 2 = 0 min ~f=2x_{1}^{2}+3x_{2}^{2}+x_{3}^{2} \\ s.t. ~~2x_{1}+x_{2}-1=0 \\ ~~~ ~~~ ~2x_{2}+x_{3}-2=0 min f=2x12+3x22+x32s.t. 2x1+x2−1=0 2x2+x3−2=0
第一步将每个约束条件都分配一个乘子 α i \alpha_{i} αi,在将目标函数和所有的约束函数相加,得到函数:
L = f + ∑ i = 1 m g i α i L=f+\sum_{i=1}^{m}g_{i} \alpha_{i} L=f+i=1∑mgiαi
其中每个约束条件 g i g_{i} gi的右边都是0,所以 ∑ i = 1 m g i = 0 \sum_{i=1}^{m}g_{i}=0 ∑i=1mgi=0.
L = ( 2 x 1 2 + 3 x 2 2 + x 3 2 ) + α 1 ( 2 x 1 + x 2 − 1 ) + α 2 ( 2 x 2 + x 3 − 2 ) L=(2x_{1}^{2}+3x_{2}^{2}+x_{3}^{2})+\alpha_{1}(2x_{1}+x_{2}-1)+\alpha_{2}(2x_{2}+x_{3}-2) L=(2x12+3x22+x32)+α1(2x1+x2−1)+α2(2x2+x3−2)
第二步对 x i x_{i} xi求偏导:
{ ∂ L ∂ x 1 = 4 x 1 + 2 α 1 ∂ L ∂ x 2 = 6 x 2 + α 1 + 2 α 2 ∂ L ∂ x 3 = 2 x 3 + α 2 \left\{\begin{matrix}\frac{\partial L}{\partial x_{1}}=4x_{1}+2\alpha_{1} \\\frac{\partial L}{\partial x_{2}}=6x_{2}+\alpha_{1}+2\alpha_{2}\\ \frac{\partial L}{\partial x_{3}}=2x_{3}+\alpha_{2}\end{matrix}\right. ⎩⎨⎧∂x1∂L=4x1+2α1∂x2∂L=6x2+α1+2α2∂x3∂L=2x3+α2
令偏导数等于0,用 α i \alpha_{i} αi表示 x x x:
{ x 1 = − α 1 2 x 2 = − α 1 + 2 α 2 6 x 3 = − α 2 2 \left\{\begin{matrix}x_{1}=-\frac{\alpha_{1}}{2} \\ x_{2}=-\frac{\alpha_{1}+2\alpha_{2}}{6} \\ x_{3}=-\frac{\alpha_{2}}{2}\end{matrix}\right. ⎩⎨⎧x1=−2α1x2=−6α1+2α2x3=−2α2
将所得 x x x代入约束条件 g g g中,求得 α \alpha α:
{ α 1 = − 2 / 5 α 2 = − 72 / 45 \left\{\begin{matrix}\alpha_{1}=-2/5 \\ \alpha_{2}=-72/45 \end{matrix}\right. {
α1=−2/5α2=−72/45
得到 α \alpha α的值,代入上式得到 x x x的最优解。
1.2 KKT条件
我们可以发现,1.1讲的拉格朗日乘子法中,它的约束条件都是等式,那么对于约束条件是不等式的应该怎么办呢?
对于一个新的极值问题:
m i n f = x 1 2 − 2 x 1 + x 2 2 + 5 s . t . x 1 + 10 x 2 > 10 10 x 1 − x 2 < 10 min ~f=x_{1}^{2}-2x_{1}+x_{2}^{2}+5 \\ s.t. ~~x_{1}+10x_{2}>10 \\ ~~~ ~~~ ~10x_{1}-x_{2}<10 min f=x12−2x1+x22+5s.t. x1+10x2>10 10x1−x2<10
为了统一,首先将约束条件都转化为小于号:
m i n f = x 1 2 − 2 x 1 + x 2 2 + 5 s . t . 10 − x 1 − 10 x 2 < 0 10 x 1 − x 2 − 10 < 0 min ~f=x_{1}^{2}-2x_{1}+x_{2}^{2}+5 \\ s.t. ~~10-x_{1}-10x_{2}<0 \\ ~~~ ~~~ ~~10x_{1}-x_{2}-10<0 min f=x12−2x1+x22+5s.t. 10−x1−10x2<0 10x1−x2−10<0
依旧是分配乘子并求和:
L = f + ∑ i = 1 m g i α i + ∑ i = 1 m h i β i L=f+\sum_{i=1}^{m}g_{i} \alpha_{i}+\sum_{i=1}^{m}h_{i} \beta_{i} L=f+i=1∑mgiαi+i=1∑mhiβi
其中 g i g_{i} gi是不等式约束条件, h i h_{i} hi是等式约束条件。(此例中没有等式)
L = ( x 1 2 − 2 x 1 + x 2 2 + 5 ) + α 1 ( 10 − x 1 − 10 x 2 ) + α 2 ( 10 x 1 − x 2 − 10 ) L=(x_{1}^{2}-2x_{1}+x_{2}^{2}+5)+\alpha_{1}(10-x_{1}-10x_{2})+\alpha_{2}(10x_{1}-x_{2}-10) L=(x12−2x1+x22+5)+α1(10−x1−10x2)+α2(10x1−x2−10)
KKT条件就是最优值,KKT条件为:
- L L L对每个 x x x求偏导等于 0 0 0;
- h ( x ) = 0 h(x)=0 h(x)=0;
- g i ( x ) < = 0 g_{i}(x)<=0 gi(x)<=0
- α i > = 0 \alpha_{i}>=0 αi>=0
- ∑ α i g i ( x ) = 0 \sum\alpha_{i}g_{i}(x)=0 ∑αigi(x)=0
可以发现,将3、4、5合并就是:
α i g i ( x ) = 0 \alpha_{i}g_{i}(x)=0 αigi(x)=0
对于上例题,接下来的操作就是:
一、 L L L对每个 x x x求偏导等于 0 0 0求出 x x x的表达式。
二、将 x x x的表达式代入 α i g i ( x ) = 0 \alpha_{i}g_{i}(x)=0 αigi(x)=0,求出 α \alpha α。
三、将 α \alpha α代回,求出 x x x。
2 SVM
2.1 简介
支持向量机(support vector machines, SVM)是一种二分类问题模型。
它的目标是找到一个尽可能正确分类,且“确信度”尽可能高的超平面。
其中“确信度”指的是:正确分类的样本点,距离超平面越远,该样本点的确信度就越高。(我对这个样本点分类正确的信任程度)
换而言之,就是该超平面的鲁棒性要好,泛化能力要强。
对于线性可分支持向量机,分类超平面为:
w ∗ ⋅ x + b ∗ = 0 w^{*}·x+b^{*}=0 w∗⋅x+b∗=0
相应的分类决策函数
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^{*}·x+b^{*}) f(x)=sign(w∗⋅x+b∗)
称为线性可分支持向量机。
2.2 函数间隔与几何间隔
函数间隔和几何间隔是用来描述计算“确信度”的。
2.1.1 函数间隔
在超平面 w ⋅ x + b = 0 w·x+b=0 w⋅x+b=0确定的情况下, ∣ w ⋅ x i + b ∣ |w·x_{i}+b| ∣w⋅xi+b∣的值可以作为衡量样本点 x i x_{i}