1.SVM的直观理解
1.1 从Logistic到SVM
令
z
=
θ
T
x
z = \theta^{T}x
z=θTx ,logistic回归想做的,是当
y
y
y = 1时,
h
θ
(
x
)
h_\theta \left( x \right)
hθ(x)趋近于1,
z
z
z远大于0;同样的当
y
y
y = 0时,
h
θ
(
x
)
h_\theta \left( x \right)
hθ(x)趋近于0,
z
z
z远小于0
从上图可以看出,每一个分类错误的样本,我们都希望能够有更大的cost,每一个分类正确的样本,我们给他的cost就是0。那么问题就来了,原来的logistic的损失是否是最优的呢?是否可以改进呢?于是人们想到了粉色的线所表示的cost。在新的cost下,模型判断会变得更坚定,并且为支持向量机,带来计算上的优势。
需要注意的是两点:
- 1 / m 1/m 1/m项可以不要,前面的系数跟最优化的结果没有关系
- 逻辑回归中,利用参数来调整正则化的参数,本质上可以理解为是关注前一项还是后一项的cost损失;在SVM中,利用C代替了。
1.2 最大间隔
SVM被人们认为是最大间隔分类器,这个最大间隔从数学和几何意义的角度如何理解呢?
如上图所示,左边的cost用于正样本,右边的cost用于负样本。从图中可以看出,对于一个正样本
y
=
1
y=1
y=1,只有在
z
>
=
1
z>=1
z>=1时,代价函数才等于0。也就是说,如果有一个正样本,只有在
θ
T
x
>
=
1
\theta^Tx>=1
θTx>=1时我们才肯定的认为他是正样本。反之如果有一个负样本,只有在
θ
T
x
<
=
−
1
\theta^Tx<=-1
θTx<=−1的时候我们才肯定的认为他是负样本。也就是说,对于一般的分类器来说,SVM的分类边界要求更高。这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
接下来问题就来了,那么多条线可以把两个线性可分的数据分开,SVM到底是哪条线呢?
从上文的讲述中,我们可以发现,SVM相比其他的分类边界,具有更大的margin
当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器,这其实就是优化问题的结果。
假设将参数C设置的特别大,那么在让代价函数最小化的过程中,我们希望找出在y=1和y=0两种情况下都使得代价函数中第一项尽量为零的参数。如果我们找到了这样的参数,则我们的最小化问题便转变成:
支持向量机做的全部事情,就是极小化参数向量θ范数的平方,或者说长度的平方。下面通过几何意义来分析一下:
θ
T
x
>
=
1
\theta^Tx>=1
θTx>=1 或者
θ
T
x
<
=
−
1
\theta^Tx<=-1
θTx<=−1的,约束是可以被
p
⋅
x
>
=
1
p⋅x>=1
p⋅x>=1这个约束所代替的。因为
θ
T
x
=
p
⋅
∣
θ
∣
\theta^Tx=p⋅|\theta|
θTx=p⋅∣θ∣,将其写入我们的优化目标。我们将会得到没有了约束,
θ
T
x
\theta^Tx
θTx而变成了
p
⋅
∣
θ
∣
p⋅|θ|
p⋅∣θ∣。
如上左图所示,样本 x ( 1 ) x^{(1)} x(1),如果我考察这个样本到参数θ的投影,投影为 p ( 1 ) p^{(1)} p(1),它非常短。类似地,这个样本如果它恰好是 x ( 1 ) x^{(1)} x(1),它到θ的投影为粉色, p ( 2 ) p^{(2)} p(2)为负值,这个向量和参数向量θ的夹角大于90度, p ( 2 ) p^{(2)} p(2)的值小于0。
这些
p
(
i
)
p^{(i)}
p(i)将会是非常小的数,因此当我们考察优化目标函数的时候,对于正样本而言,我们需要
p
(
i
)
⋅
∣
θ
∣
>
=
1
p^{(i)}⋅|θ|>=1
p(i)⋅∣θ∣>=1,但是如果
p
(
i
)
p^{(i)}
p(i)在这里非常小,那就意味着我们需要θ的范数非常大。因为如果
p
(
i
)
p^{(i)}
p(i) 很小,而我们希望
p
(
i
)
⋅
∣
θ
∣
>
=
1
p^{(i)}⋅|θ|>=1
p(i)⋅∣θ∣>=1,令其实现的唯一的办法就是这θ较大,也就是θ的范数大。类似地,对于负样本而言我们需要
p
(
i
)
⋅
∣
θ
∣
<
=
−
1
p^{(i)}⋅|θ|<=-1
p(i)⋅∣θ∣<=−1。我们已经在图中样本中看到
p
(
2
)
p^{(2)}
p(2)会是一个非常小的数,因此唯一的办法就是θ的范数变大。但是我们的目标函数是希望找到一个参数θ,它的范数是小的。因此,这看起来不像是一个好的参数向量θ的选择。
再来看看上图右边的决策边界。样本
x
(
1
)
x^{(1)}
x(1),投影到横轴x上,或说投影到θ上,就会得到
p
(
1
)
p^{(1)}
p(1)。它的长度是p(1),另一个样本
x
(
2
)
x^{(2)}
x(2)投影下来会发现,
p
(
2
)
p^{(2)}
p(2)的长度是负值。你会注意到现在
p
(
1
)
p^{(1)}
p(1)和
p
(
2
)
p^{(2)}
p(2)这些投影长度边长了。如果我们仍然要满足这些约束,
P
(
i
)
⋅
∣
θ
∣
>
1
P^{(i)}⋅|θ|>1
P(i)⋅∣θ∣>1,则因为p(1)变大了,θ的范数就可以变小了。因此这意味着通过选择右边的决策界,支持向量机可以使参数θ的范数变小很多。因此,如果我们想令θ的范数变小,从而令θ范数的平方变小,就能让支持向量机选择右边的决策界。这就是支持向量机如何能有效地产生大间距分类的原因。最后总结一下,通过让间距变大,即通过这些p(1),p(2),p(3)等等的值,支持向量机最终可以找到一个较小的θ范数。这正是支持向量机中最小化目标函数的目的。