赞
踩
通过上篇博客举的例子,可以明白支持向量机的分类方法就是在数据集上,找到一个超平面作为决策边界,并且模型在数据上的分类误差尽可能小。这节将对SVM作进一步说明。
前面提到离决策边界最近的那些点是支持向量,支持向量到决策边界的距离称之为Margin,我们的目的是最大化Margin,也就是找到了最佳的决策边界。
用下图来进行说明:
假设决策边界的解析式为:
y = β
0
_0
0+ β
1
_1
1
x
1
{x_1}
x1 + β
2
_2
2
x
2
{x_2}
x2
任意一个样本到决策边界的距离distance有:
distance =
∣
β
0
+
β
1
∗
x
1
+
β
2
∗
x
2
∣
β
1
2
+
β
2
2
{|β_0 + β_1*x_1 + β_2*x_2|}\over{\sqrt{β^2_1+β^2_2}}
β12+β22
∣β0+β1∗x1+β2∗x2∣ ≥Margin
我们希望模型分类结果更加好,所以希望最大化Margin,即Maxmize Margin,这个模型就是最大间隔分类器(Maximum Margin Classifier)。
如果是k维空间中,则有如下式子(Margin用M代替):
Maxmize M
distance = ∣ β 0 + β 1 ∗ x 1 + β 2 ∗ x 2 + . . . + β k ∗ x k ∣ β 1 2 + β 2 2 + . . . + β k 2 {|β_0 + β_1*x_1 + β_2*x_2+...+β_k*x_k|}\over{\sqrt{β^2_1+β^2_2+...+β^2_k}} β12+β22+...+βk2 ∣β0+β1∗x1+β2∗x2+...+βk∗xk∣ ≥M
把绝对值符号去掉,即:
if
β
0
+
β
1
∗
x
1
+
β
2
∗
x
2
+
.
.
.
+
β
k
∗
x
k
β
1
2
+
β
2
2
+
.
.
.
+
β
k
2
{β_0 + β_1*x_1 + β_2*x_2+...+β_k*x_k}\over{\sqrt{β^2_1+β^2_2+...+β^2_k}}
β12+β22+...+βk2
β0+β1∗x1+β2∗x2+...+βk∗xk ≥M
y
i
y_i
yi = +1
if
β
0
+
β
1
∗
x
1
+
β
2
∗
x
2
+
.
.
.
+
β
k
∗
x
k
β
1
2
+
β
2
2
+
.
.
.
+
β
k
2
{β_0 + β_1*x_1 + β_2*x_2+...+β_k*x_k}\over{\sqrt{β^2_1+β^2_2+...+β^2_k}}
β12+β22+...+βk2
β0+β1∗x1+β2∗x2+...+βk∗xk ≤ -M
y
i
y_i
yi = -1
又
β
1
2
+
β
2
2
+
.
.
.
+
β
k
2
\sqrt{β^2_1+β^2_2+...+β^2_k}
β12+β22+...+βk2
=
∥
β
∥
\|\beta\|
∥β∥ 所以,分母可简写为:
∥
β
∥
\|\beta\|
∥β∥
最终:
y
i
∥
β
∥
{y_i}\over{\|\beta\|}
∥β∥yi * (β_0 + β_1x_1 + β_2x_2+…+β_k*x_k) ≥ M。
即在
y
i
∥
β
∥
{y_i}\over{\|\beta\|}
∥β∥yi * (β_0 + β_1x_1 + β_2x_2+…+β_kx_k) ≥ M时,Maxmize M。
如果,让 M *
∥
β
∥
\|\beta\|
∥β∥ = 1,则
y
i
{y_i}
yi * (β_0 + β_1x_1 + β_2x_2+…+β_kx_k) ≥ 1时,Minimize
∥
β
∥
\|\beta\|
∥β∥(将Maxmize转换成了Minimize )
上述的最大间隔分类器的缺点:
① 当有新样本进入时,决策边界可能会有很大改变;
② 当数据线性不可分的时候,找不到决策边界。
如果出现下面的情况,又该如何画线呢?
前面讲到的最大间隔分类器中,是不允许上边情况存在的(即,在图中两条虚线之间不允许存在任何样本 )。但现在对模型的容忍度变大,即允许上面图中样本分布的存在,那么就是下边两种情况:
① 分对了,只不过该样本在虚线和决策边界之间。到决策边界的距离0<d<M(0<
ϵ
i
\epsilon_i
ϵi<1)
② 分错了,该样本也在虚线和决策边界之间。到决策边界的距离-M<d<0(1< ϵ i \epsilon_i ϵi<2)
此时,引入一个松弛变量
ϵ
i
\epsilon_i
ϵi
Maxmize M
y
i
∥
β
∥
{y_i}\over{\|\beta\|}
∥β∥yi * (β_0 + β_1x_1 + β_2x_2+…+β_k*x_k) ≥ M(1-
ϵ
i
\epsilon_i
ϵi)
∑
i
=
1
n
ϵ
i
\sum_{i=1}^{n} \epsilon_i
∑i=1nϵi ≤ C且
ϵ
i
\epsilon_i
ϵi ≥ 0
上述就是软间隔分类器,因为它允许部分样本存在于虚线内部。
这时候需要注意的点时:
① 当C越大,Margin越大,也就是模型的容忍度越大。即当C太大,就不拟合,C太小,过拟合。
② 决策边界只与支持向量有关
Maxmize M
y
i
∥
β
∥
{y_i}\over{\|\beta\|}
∥β∥yi * (β_0 + β_1x_1 + β_2x_2+…+β_k*x_k) ≥ M(1-
ϵ
i
\epsilon_i
ϵi)
∑
i
=
1
n
ϵ
i
\sum_{i=1}^{n} \epsilon_i
∑i=1nϵi ≤ C且
ϵ
i
\epsilon_i
ϵi ≥ 0
求解优化问题后得到:
SVC决策边界:
f(x) = β
0
_0
0 +
∑
i
=
0
n
α
i
<
x
,
x
i
>
\sum_{i=0}^{n} \alpha_i<x, x_i>
∑i=0nαi<x,xi>
其中,<x, x_i>表示向量的点积;若
x
i
x_i
xi不是支持向量,
α
i
\alpha_i
αi=0;若
x
i
x_i
xi是支持向量,
α
i
\alpha_i
αi!=0。
如果有新的待测试的样本,新样本的f(x)>0就是+1类;新样本的f(x)<0就是-1类
当样本分布线性不可分的时候,好像是找不到决策边界(线)的,如下图的分布情况:
此时,把这些样本想象是放在三维空间中的,再通过某种映射关系,将图中红色圆圈映射到别的位置,那么就可以很容易找到一个平面,将他们分隔开。如下图:通过某种映射关系将红色点映到别处,粉色的平面就可以将红色圆圈和蓝色三角分隔开。
f(x) = β
0
_0
0 +
∑
i
=
0
n
α
i
K
(
x
,
x
i
)
\sum_{i=0}^{n} \alpha_iK(x, x_i)
∑i=0nαiK(x,xi)
其中K就是核函数
SVM = SVC + 非线性核函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。