一、svm要解决的问题
对于图中的二分类问题,我们想要画出一条线来将两种图案分来。 三条直线目前来说都可以对图案进行分类,但是他们完成的质量是不一样的,前两个分类的容忍度明显低一些,这样,对于新的数据,其分类效果可能不及第三个。所以,我们使用支持向量机进行分类问题时,不光要将数据分开,还要找到一条分类效果最好的线。
在能够将不同类别分开的前提下,我们要找一条最“胖”的线,也就是说,离线最近的点的距离要尽可能的远。
二、支持向量机求解目标
1.求点到平面的距离
我们现在思考这样一个问题:
假设在一个多维空间中,有一个超平面将两类特征分开,平面方程为
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0 ,这个时候我们想要计算特征点到超平面的距离。显然直接计算是无法计算的,我们不妨取平面上的两个点
x
1
x_1
x1,
x
2
x_2
x2,他们符合 ------①-----
w
T
x
1
+
b
=
0
w^Tx_1+b=0
wTx1+b=0,
w
T
x
2
+
b
=
0
w^Tx_2+b=0
wTx2+b=0
超平面的法向量w垂直于平面,也必然垂直于面上的直线,所以------②-----
w
T
(
x
1
−
x
2
)
=
0
w^T(x_1-x_2)=0
wT(x1−x2)=0
这样的话我们就可以将x到
x
1
x_1
x1的距离投影到竖直方向,得到x到超平面的距离,且由①②得
d
i
s
t
a
n
c
e
=
∣
w
T
∣
∣
w
∣
∣
(
x
−
x
1
)
∣
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
distance = |\frac{w^T}{||w||}(x-x_1)|=\frac{|w^Tx+b|}{||w||}
distance=∣∣∣w∣∣wT(x−x1)∣=∣∣w∣∣∣wTx+b∣
2.求解目标
对于数据集
(
x
1
,
y
1
)
(
x
2
,
y
2
)
到
(
x
n
,
y
n
)
(x_1,y_1)(x_2,y_2)到(x_n,y_n)
(x1,y1)(x2,y2)到(xn,yn)
y为样本的类别,假设:
x为正例时y=+1;x为负例时y=-1
我们将预测的结果定义为
y
(
x
)
=
w
T
Φ
(
x
)
+
b
y(x)=w^TΦ(x)+b
y(x)=wTΦ(x)+b
y
(
x
i
)
>
0
=
>
y
i
=
+
1
y(x_i)>0=>y_i=+1
y(xi)>0=>yi=+1
y
(
x
i
)
<
0
=
>
y
i
=
−
1
y(x_i)<0=>y_i=-1
y(xi)<0=>yi=−1
可满足
y
i
∗
y
(
x
i
)
>
0
y_i*y(x_i)>0
yi∗y(xi)>0
那么支持向量机的目标就是找到一条线,使得离该线最近的点能够最远。也就是说我们首先需要找到离这条线最近的点,然后找到能使这个距离最大的w和b。
根据上面的距离公式distance,我们试图将绝对值去掉。因为
y
i
∗
y
(
x
i
)
>
0
y_i*y(x_i)>0
yi∗y(xi)>0,而且y值只有+1和-1两个取值情况,所以我们可以在分子上乘上
y
i
y_i
yi,距离函数变成了:
y
i
[
w
T
Φ
(
x
i
)
+
b
]
∣
∣
w
∣
∣
\frac{y_i[w^TΦ(x_i)+b]}{||w||}
∣∣w∣∣yi[wTΦ(xi)+b]
求解目标为:
a
r
g
max
w
,
b
{
m
i
n
[
y
i
(
w
T
Φ
(
x
i
)
+
b
)
]
∣
∣
w
∣
∣
}
arg\max_{w,b}\lbrace \frac{min[y_i(w^TΦ(x_i)+b)]}{||w||}\rbrace
argw,bmax{∣∣w∣∣min[yi(wTΦ(xi)+b)]}
三、支持向量机目标函数求解
这个目标函数看起来有点复杂,我们再对其进行变换。
前面已经说过
y
i
∗
y
(
x
i
)
>
0
y_i*y(x_i)>0
yi∗y(xi)>0,我们对其进行放缩使得
y
i
∗
y
(
x
i
)
>
1
y_i*y(x_i)>1
yi∗y(xi)>1,这样的话这里的最小值就变成了1,求解目标可简化为:
a
r
g
max
w
,
b
1
∣
∣
w
∣
∣
arg\max_{w,b} \frac{1}{||w||}
argw,bmax∣∣w∣∣1
求解使得
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1最大时的w和b不容易求,我们可以求其倒数||w||的最小值,最终转化为求解
1
2
w
2
\frac{1}{2}w^2
21w2的最小值,这样可以把绝对值也去掉。注意以上推导都是基于
y
i
∗
y
(
x
i
)
>
1
y_i*y(x_i)>1
yi∗y(xi)>1这个假设的,这个假设必须满足。
我们需要求解的是:
a
r
g
min
w
,
b
1
2
w
2
且
y
i
(
w
T
Φ
(
x
i
)
+
b
)
≥
1
arg\min_{w,b}\frac{1}{2}w^2且y_i(w^TΦ(x_i)+b)≥1
argw,bmin21w2且yi(wTΦ(xi)+b)≥1
我们首先求解
1
2
w
2
\frac{1}{2}w^2
21w2在该条件下的最小值。对于这种有约束条件的求值问题,我们可以使用拉格朗日乘数法进行求解。(考研数学里有这部分内容,然鹅此刻我已经忘得一干二净了?。。。)
函数
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
λ
i
(
y
i
(
w
T
Φ
(
x
i
)
+
b
)
−
1
)
L(w,b,λ)=\frac{1}{2}||w||^2- \sum_{i=1}^n λ_i(y_i(w^TΦ(x_i)+b)-1)
L(w,b,λ)=21∣∣w∣∣2−i=1∑nλi(yi(wTΦ(xi)+b)−1)
分别对w和b求偏导,分别得到两个条件:
∂
L
∂
w
=
0
=
>
w
=
∑
i
=
1
n
λ
i
y
i
Φ
(
x
i
)
\frac{\partial L}{\partial w} =0 => w= \sum_{i=1}^n λ_i y_i Φ(x_i)
∂w∂L=0=>w=i=1∑nλiyiΦ(xi)
∂
L
∂
b
=
0
=
>
0
=
∑
i
=
1
n
λ
i
y
i
\frac{\partial L}{\partial b} =0 => 0= \sum_{i=1}^n λ_i y_i
∂b∂L=0=>0=i=1∑nλiyi
将构造函数L(w,b,λ)展开,并将上面两个条件代入得:
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
λ
i
(
y
i
(
w
T
Φ
(
x
i
)
+
b
)
−
1
)
L(w,b,λ)=\frac{1}{2}||w||^2- \sum_{i=1}^n λ_i(y_i(w^TΦ(x_i)+b)-1)
L(w,b,λ)=21∣∣w∣∣2−∑i=1nλi(yi(wTΦ(xi)+b)−1)
=
1
2
w
T
w
−
w
T
∑
i
=
1
n
λ
i
y
i
Φ
(
x
i
)
−
b
∑
i
=
1
n
λ
i
y
i
+
∑
i
=
1
n
λ
i
=\frac{1}{2}w^Tw- w^T \sum_{i=1}^n λ_i y_i Φ(x_i) - b \sum_{i=1}^n λ_i y_i + \sum_{i=1}^n λ_i
=21wTw−wT∑i=1nλiyiΦ(xi)−b∑i=1nλiyi+∑i=1nλi
=
∑
i
=
1
n
λ
i
−
1
2
(
∑
i
=
1
n
λ
i
y
i
Φ
(
x
i
)
)
T
∑
i
=
1
n
λ
i
y
i
Φ
(
x
i
)
=\sum_{i=1}^n λ_i-\frac{1}{2} (\sum_{i=1}^n λ_i y_i Φ(x_i))^T\sum_{i=1}^n λ_i y_i Φ(x_i)
=∑i=1nλi−21(∑i=1nλiyiΦ(xi))T∑i=1nλiyiΦ(xi)
=
∑
i
=
1
n
λ
i
−
1
2
∑
i
=
1
,
j
=
1
n
λ
i
λ
j
y
i
y
j
Φ
T
(
x
i
)
Φ
(
x
j
)
=\sum_{i=1}^n λ_i-\frac{1}{2} \sum_{i=1,j=1}^n λ_i λ_j y_i y_j Φ^T(x_i) Φ(x_j)
=∑i=1nλi−21∑i=1,j=1nλiλjyiyjΦT(xi)Φ(xj)
这样的话我们就可以求得L(w,b,λ)的条件极值(极小值),以及当前的w和b。
接下来,我们要求的是什么样的λ可以使
m
i
n
w
,
b
L
(
w
,
b
,
λ
)
min_{w,b}L(w,b,λ)
minw,bL(w,b,λ)最大
此时求解目标是:
m
a
x
λ
[
∑
i
=
1
n
λ
i
−
1
2
∑
i
=
1
,
j
=
1
n
λ
i
λ
j
y
i
y
j
Φ
T
(
x
i
)
Φ
(
x
j
)
]
且
∑
i
=
1
n
λ
i
y
i
=
0
;
λ
i
≥
0
max_λ[\sum_{i=1}^n λ_i-\frac{1}{2} \sum_{i=1,j=1}^n λ_i λ_j y_i y_j Φ^T(x_i) Φ(x_j)]且\sum_{i=1}^n λ_i y_i=0;λ_i≥0
maxλ[i=1∑nλi−21i=1,j=1∑nλiλjyiyjΦT(xi)Φ(xj)]且i=1∑nλiyi=0;λi≥0
对于一个凸函数来说,求解极大值不太容易,我们将其转化为求其相反数极小值的问题:
m
i
n
λ
[
1
2
∑
i
=
1
,
j
=
1
n
λ
i
λ
j
y
i
y
j
Φ
T
(
x
i
)
Φ
(
x
j
)
−
∑
i
=
1
n
λ
i
]
且
∑
i
=
1
n
λ
i
y
i
=
0
;
λ
i
≥
0
min_λ[\frac{1}{2} \sum_{i=1,j=1}^n λ_i λ_j y_i y_j Φ^T(x_i) Φ(x_j)-\sum_{i=1}^n λ_i]且\sum_{i=1}^n λ_i y_i=0;λ_i≥0
minλ[21i=1,j=1∑nλiλjyiyjΦT(xi)Φ(xj)−i=1∑nλi]且i=1∑nλiyi=0;λi≥0
四、支持向量机求解例子
五、支持向量的作用
对于上面的例子,我们可以看到x1和x3刚好在这个最大间隔超平面的边界上,x1和x3对应的w值均为0.25,而x2对应的w值为0,这说明我们在分割这个超平面的时候没有用到这个x2。所以,支持向量机的支持向量指的就是我们要找出什么样的向量来支撑这个超平面。上面这个例子的超平面是由x1和x3算出来的,所以我们称他们为当前支持向量机算法的支持向量。我们要做的就是找到这样的支持向量,通过支持向量,我们可以求解这样一个超平面。
六、软间隔支持向量机
对于上图中的分类问题,实线实现了对两类图案的严格分类,但是此时分界线距离边界上的图案非常近,可能泛化能力很弱。而抛开这个异常点不看的话,虚线实现的分类效果是很好的。这样的话,对于新的样本,虚线可以实现更好的分类效果。
为了解决该问题,我们引入了松弛因子的概念。
对于之前的假设,我们改为
y
i
(
w
T
Φ
(
x
i
)
+
b
)
≥
1
−
ξ
i
y_i(w^TΦ(x_i)+b)≥1-ξ_i
yi(wTΦ(xi)+b)≥1−ξi,也就是把分类的要求放宽了一些,容忍出现一些异常的点。
目标函数添加一个代价,改为
m
i
n
(
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
)
min(\frac{1}{2}||w||^2+C\sum_{i=1}^nξ_i)
min(21∣∣w∣∣2+C∑i=1nξi)
这里的C也是一个在实际建模时我们需要自己选择的参数:
当C趋近于无穷大时,意味着分类严格不能有错误
当C趋近于很小时,意味着可以有更大的错误容忍
接下来的推导过程与硬间隔支持向量机类似
七、核函数变换
对于该图的数据分布,我们无法使用一条直线对其进行分类
在二维的空间它是不可分的,但是如果上升到三维的情况,假如说我们能将这些红色的点提起来,这样的话这些点在x轴和y轴上没有任何变化,但是我们可以在z轴上使用一个平面将它们分开。
对于这种低维不可分的情况,可以在高维上变得可分,这个时候我们遇到的问题就是如何将低维的点变换到高维。
从上面的例子我们可以知道支持向量机可以先在低维上算内积,然后将内积的结果再做转换,效果和先转换为高维再做内积一样。
高斯核函数是我们常用的一个核函数:
K
(
X
,
Y
)
=
e
x
p
{
−
∣
∣
X
−
Y
∣
∣
2
2
σ
2
}
K(X,Y)=exp\lbrace -\frac{||X-Y||^2}{2σ^2} \rbrace
K(X,Y)=exp{−2σ2∣∣X−Y∣∣2}
通过高斯核函数映射之后可以实现这种效果,将二维空间转换为多维空间,这样我们就可以用一个平面将这两类分开。