1 什么是支持向量机?
支持向量机,support vector machine,支持向量机模型是指由支持向量支撑的模型,在这个模型中,仅支持向量起到作用,而非支持向量对模型没有作用。
假设此时是一个而二维平面,我们需要将+和-点分开,显然这条线很多种可能,那么我们要找到最优的那条边界,那么这条边界的定义就是离这个边界最近的点,使得这个点离边界最远。
通俗的将就是找离这条先最近的点,得到距离L,那么我们希望这个L越大越好。
这条线就叫做决策边界。通过决策变量,此时就可以将将两组样本分割开来。
那么上下两条边界插过的点就叫做支持向量,图中3个支持向量。
2 支持向量的作用
真正发挥作用的点只有那么几个,这就是支持向量,显然,支持向量机的一大特点就是可以应用到小样本集合上。
另外,通过二维推广到三维,通过升维,可以将一些在低维空间中不可分的数据集合分离开来,因为更高的维度更容易找到一个超平面,将样本分开,那么低维不可分问题就可以通过提升维度,映射到高维度上去了。
3 如何实现支持向量机
本质上还是机器学习的套路做法,找到目标函数,通过数学推导,迭代,找到极值点。
3.1 目标函数
通俗的讲:找到一条线(w,b),使得离该线最近的点能够足够远。回归到问题的本身,我们是要找到一条直线(w和b),使得离该线最近的点能够最远。
求解到的点到直线的距离,其中包含了一个绝对值:
d
i
s
t
a
n
c
e
(
X
,
b
,
W
)
=
1
∣
∣
W
∣
∣
∣
W
T
X
+
b
∣
distance(X,b,W) = \frac{1}{||W||}|W^TX+b|
distance(X,b,W)=∣∣W∣∣1∣WTX+b∣
为了去除绝对值,我们引入了
y
i
y_i
yi,得到:
d
i
s
t
a
n
c
e
(
X
,
b
,
W
,
y
)
=
y
i
∗
1
∣
∣
W
∣
∣
(
W
T
ϕ
(
x
)
+
b
)
distance(X,b,W,y) = y_i*\frac{1}{||W||}(W^T\phi(x)+b)
distance(X,b,W,y)=yi∗∣∣W∣∣1(WTϕ(x)+b)
由于
(
y
i
∗
y
(
x
i
)
>
0
)
(y_i* y(x_i)>0)
(yi∗y(xi)>0)
-
放缩变换:对于决策工程(w,b)可以通过放缩使得其结果值|Y|>=1,在3.1中我们已经得到了|Y|>0,那么通过放缩
*N
,我们可以使得|Y|>=1,
= > y i ∗ ( w T ∗ ϕ ( x i ) + b ) ≥ 1 =>y_i*(w^T*\phi(x_i)+b)\geq 1 =>yi∗(wT∗ϕ(xi)+b)≥1(之前我们认为恒大于0,现在严格了些) -
优化目标:
a r g m a x w , b { 1 ∣ ∣ w ∣ ∣ m i n i [ y i ⋅ ( w T ⋅ ϕ ( x i ) + b ) ] } \underset{w,b}{arg max} \begin{Bmatrix}\frac{1}{||w||}\underset{i}{min}[y_i\cdot(w^T\cdot\phi(x_i)+b)]\end{Bmatrix} w,bargmax{∣∣w∣∣1imin[yi⋅(wT⋅ϕ(xi)+b)]}
上面的公式中,有两个求解,一个是min,一个是max。
min:找到离决策边界最近的那个样本。min里面就是距离公式,这里就是找最近的样本点。离决策边界最近的那个样本点。
max:得到这个点之后,我们再去求什么样的w和b,使得雷离我们的决策边界越大越好。
总结两点:
1)求距离决策边界最近的点
2)求w,b,使得1)求得的点离决策边界最远
上面我们提到了可以通过缩放,让
y
i
∗
(
w
T
∗
ϕ
(
x
i
)
+
b
)
≥
1
y_i*(w^T*\phi(x_i)+b)\geq 1
yi∗(wT∗ϕ(xi)+b)≥1
那么此时我们可以认为
m
i
n
[
y
i
∗
(
w
T
∗
ϕ
(
x
i
)
+
b
)
]
=
1
min[y_i*(w^T*\phi(x_i)+b)]=1
min[yi∗(wT∗ϕ(xi)+b)]=1,那么目标函数就变为:
a
r
g
m
a
x
w
,
b
1
∣
∣
w
∣
∣
\underset{w,b}{arg max}\frac{1}{||w||}
w,bargmax∣∣w∣∣1
也就是说,现在目标是找到w使得这个目标函数
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1最大。
3.2 目标函数求解
这里目标函数是求解max也就是最大值,但是机器学习中都是求解最小值的,所以说,我们还是要转化为求解极小值的问题。
求
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1的最大值,就是求
∣
∣
w
∣
∣
||w||
∣∣w∣∣的最小值。之前的假设是这个目标函数的前提:
y
i
⋅
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
≥
1
y_i\cdot(w^T\cdot\phi(x_i)+b)\geq1
yi⋅(wT⋅ϕ(xi)+b)≥1
求解
∣
∣
w
∣
∣
||w||
∣∣w∣∣的极小值可以认为是求解
1
2
w
2
\frac{1}{2}w^2
21w2的极小值,前面的1/2是为了后面方便求导用到。
如何求解这个极小值问题?应用拉格朗日乘子法。
就是为了求解极值的方法。这里直接使用。
拉格朗日乘子法
subject to是约束条件。
其中 f i ( x ) ≤ 0 , i = 1 , . . . m f_i(x)\leq0,i=1,...m fi(x)≤0,i=1,...m表示有m组约束条件,从 f 1 ( x ) ≤ 0 f_1(x)\leq0 f1(x)≤0到 f m ( x ) ≤ 0 f_m(x)\leq0 fm(x)≤0。
注意:
∑
i
=
1
m
λ
i
f
i
(
x
)
=
λ
1
f
1
(
x
)
+
λ
2
f
2
(
x
)
+
.
.
.
+
λ
m
f
m
(
x
)
\displaystyle\sum_{i=1}^m\lambda_if_i(x) = \lambda_1f_1(x) + \lambda_2f_2(x)+...+\lambda_mf_m(x)
i=1∑mλifi(x)=λ1f1(x)+λ2f2(x)+...+λmfm(x)
后面的
∑
i
=
1
q
v
i
h
i
(
x
)
\displaystyle\sum_{i=1}^qv_ih_i(x)
i=1∑qvihi(x)其实和上面的限制是类似的,这是改了变量而已。
注意,上面的约束条件有两类,所以我们在应用拉格朗日乘子法的时候,我们需要将我们的约束条件转换成这种。
1)
f
i
(
x
)
≤
0
f_i(x)\leq0
fi(x)≤0
2)
h
i
(
x
)
=
0
h_i(x)=0
hi(x)=0
这个时候,将目标函数和约束条件合并后,得到了一个新的目标函数 L ( x , λ , v ) L(x,\lambda,v) L(x,λ,v),这个时候我们求解这个函数的极值点。由于我们要求最小值,所以求最小值。
由于
m
i
n
w
,
b
1
2
w
2
min_{w,b}\frac{1}{2}w^2
minw,b21w2不太好求解,那么我们可以换一种思路,也就是求解一个和w有关的变量,使得得到最小值,最后得到w。(就是绕了一下)
现在变为求解一个中间变量以及中间变量和w的关系。
应用了拉格朗日乘子法,首先变换我们的约束条件:
y
i
(
w
T
⋅
ϕ
(
x
)
+
b
)
≥
1
=
>
y
i
(
w
T
⋅
ϕ
(
x
)
+
b
)
−
1
≤
0
y_i(w^T\cdot\phi(x)+b)\geq1 => y_i(w^T\cdot\phi(x)+b)-1\leq0
yi(wT⋅ϕ(x)+b)≥1=>yi(wT⋅ϕ(x)+b)−1≤0
此时应用拉格朗日乘子法,得到我们的公式:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
−
1
)
L(w,b,\alpha)=\frac{1}{2}||w||^2-\displaystyle\sum_{i=1}^n\alpha_i(y_i(w^T\cdot\phi(x_i)+b)-1)
L(w,b,α)=21∣∣w∣∣2−i=1∑nαi(yi(wT⋅ϕ(xi)+b)−1)
其中
α
i
\alpha_i
αi是一个系数。
(约束条件不要忘了:
y
i
⋅
(
w
T
⋅
ϕ
(
x
i
)
+
b
)
≥
1
y_i\cdot(w^T\cdot\phi(x_i)+b)\geq1
yi⋅(wT⋅ϕ(xi)+b)≥1,这个约束条件无论什么时候都不能忘记)
此时原来的目标函数就转换到了一个拉格朗日乘子法的求解了。
利用KTT,本质上就是一个对偶性质:
m
i
n
w
,
b
m
a
x
α
L
(
w
,
b
,
α
)
−
>
m
a
x
α
m
i
n
w
,
b
L
(
w
,
b
,
α
)
\underset{w,b}{min}\underset{\alpha}{max}L(w,b,\alpha) -> \underset{\alpha}{max}\underset{w,b}{min}L(w,b,\alpha)
w,bminαmaxL(w,b,α)−>αmaxw,bminL(w,b,α)
这个时候,从对w求偏导对公式可以得到w取值,那么我们之前提到过,求w不容易,我们可以先求一个中间值,这个值和w有关系。就是这里的
w
=
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
w=\displaystyle\sum_{i=1}^{n}\alpha_iy_i\phi(x_i)
w=i=1∑nαiyiϕ(xi),其中,
α
i
\alpha_i
αi是每个样本数据的系数,这就是我们的中介,我们就转化成了求解
α
i
\alpha_i
αi。
对b求偏导,这个时候,由于b是一次项,那么b求导后=1,那么得到的偏导数就没有b了,这个相当于一个条件了。也就是
∑
i
=
1
n
α
i
y
i
=
0
\displaystyle\sum_{i=1}^n\alpha_iy_i=0
i=1∑nαiyi=0,也就是
α
i
\alpha_i
αi和
y
i
y_i
yi之间的关系。
得到偏导数后,代入原来的公式中。
将w代入上面的公式:上述在第二步的时候代入。代入后得到以下化简后的公式,后面半部分为了区分
∑
i
=
1
n
\displaystyle\sum_{i=1}^{n}
i=1∑n,将后面的那个求和公式改为j=1
再来提醒一下,这里求到了的拉格朗日乘子法的公式 m w , b L ( w , b , α ) \underset{w,b}{m}L(w,b,\alpha) w,bmL(w,b,α)
现在就剩下 α , y i , x i \alpha,y_i,x_i α,yi,xi了,我们还是要继续求解下去,什么样的 w , b , α w,b,\alpha w,b,α能使的L最小,并且将这样的 w , b w,b w,b代入到公式中。
max求解
不要忘记,里面的min求解完了,外面还有一个max求解,也就是求解什么样的
w
,
b
w,b
w,b使得目标函数最大。而
w
,
b
w,b
w,b相应的就转换到中介变量
α
\alpha
α了。第一个公式中没有
w
,
b
w,b
w,b了,对这样的公式我们要求极大值:问题转换为什么样的
α
\alpha
α使得值最大
m
a
x
α
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
α
i
α
j
y
i
y
j
(
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
)
\underset{\alpha}{max}\displaystyle\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\displaystyle\sum_{i=1}^{n}\alpha_i\alpha_jy_iy_j(\phi(x_i)\cdot\phi(x_j))
αmaxi=1∑nαi−21i=1∑nαiαjyiyj(ϕ(xi)⋅ϕ(xj))
注意,还有限制条件:第一个条件是对b求偏导得到的;而第二个条件是拉格朗日乘子法使用的前提,所有的
α
i
\alpha_i
αi必须都大于等于0。
∑
i
=
1
n
α
i
y
i
=
0
\displaystyle\sum_{i=1}^{n}\alpha_iy_i=0
i=1∑nαiyi=0,
α
i
≥
0
\alpha_i\geq0
αi≥0
那么,这一步求解之后,我们的
α
i
\alpha_i
αi可以求得了,而
x
i
,
y
i
x_i,y_i
xi,yi是已知的,所以
w
w
w我们也可以得到。
我们继续求解
α
i
\alpha_i
αi,求解
α
\alpha
α是一个比较难的问题。这里还可以继续使用拉格朗日乘子法进行求解。
那么求解大致就到这里了。