前言
行。 我不行了,看不懂了, 这块先放着日后再看。 先进行下一部分
正文
怎么得到SVM
下面先从优化目标开始讲起, 我们先看逻辑回归.
这里用
z
z
z 表示
θ
T
x
\theta^Tx
θTx。如果有一个
y
=
1
y=1
y=1的样本,不管是在训练集中或是在测试集中,又或者在交叉验证集中,现在我们希望
h
θ
(
x
)
{{h}_{\theta }}\left( x \right)
hθ(x) 趋近1。因为想要正确地将此样本分类,这就意味着当
h
θ
(
x
)
{{h}_{\theta }}\left( x \right)
hθ(x)趋近于1时,
θ
T
x
\theta^Tx
θTx 应当远大于0,这是因为由于
z
z
z 表示
θ
T
x
\theta^Tx
θTx,当
z
z
z远大于0时,即到了该图的右边,此时逻辑回归的输出将趋近于1。相反地,如果我们有另一个样本,即
y
=
0
y=0
y=0。我们希望假设函数的输出值将趋近于0,这对应于
θ
T
x
\theta^Tx
θTx,或者就是
z
z
z 会远小于0,因为对应的假设函数的输出值趋近0。
我们先看对于单个样本的分析:
- 当y为1时, 图像是这样的:
可以看到Z很大的时候损失为0附近, 现在我们对其进行一些修改:
可以看到修改后的图像在
z
=
1
z=1
z=1后面为0, 1之前是类似logistic的一条直线
- 当y为0时, 图像是这样的:
同样对其进行修改, 如下图:
这里-1之前是0, 之后是同样走势的直线.
现在,我们就开始构建支持向量机。
下面是我们原来的损失函数, 加入了正则项:
对于支持向量机而言,我们要将第一个log项替换为
cos
t
1
(
z
)
{\cos}t_1{(z)}
cost1(z),也就是
cos
t
1
(
θ
T
x
)
{\cos}t_1{(\theta^Tx)}
cost1(θTx),同样也把第二log项替换为
cos
t
0
(
z
)
{\cos}t_0{(z)}
cost0(z),也就是代价
cos
t
0
(
θ
T
x
)
{\cos}t_0{(\theta^Tx)}
cost0(θTx)。这里的代价函数
cos
t
1
{\cos}t_1
cost1,就是之前所提到的那条线。此外,代价函数
cos
t
0
{\cos}t_0
cost0,也是上面所介绍过的那条线。因此,对于支持向量机,我们得到了这里的最小化问题,即:
当然按照支持向量机的惯例,书写会稍微有些不同,代价函数的参数表示也会稍微有些不同。
-
首先,我们要除去 1 / m 1/m 1/m这一项, 就像这样:
当然这只是因为惯例, 并没有实际用处 -
在逻辑回归中,损失函数可以用 A + λ × B A+\lambda\times B A+λ×B来表示, A是前面的, B是正则化, 如果给定 λ \lambda λ,一个非常大的值,意味着给予 B B B更大的权重, 在SVM里,依照惯例使用一个不同的参数称为 C C C,同时更改优化目标, C × A + B C×A+B C×A+B, 之前B很大就对应于将 C C C 设定为非常小的值,那么,相应的将会给 B B B比给 A A A更大的权重。因此,这只是一种不同的方式来控制这种权衡或者一种不同的方法,即用参数来决定是更关心第一项的优化,还是更关心第二项的优化。
- 我们就得到了支持向量机的优化函数:
最后有别于逻辑回归输出的概率。在这里,我们的代价函数,当最小化代价函数,获得参数
θ
{{\theta }}
θ时,支持向量机所做的是它来直接预测
y
y
y的值等于1,还是等于0。
因此,当 θ T x \theta^Tx θTx大于或者等于0时,或者等于0时,这个假设函数会预测1。这就是支持向量机假设的变化
对SVM的进一步理解
人们有时将支持向量机叫做是大间距分类器
(
L
a
r
g
e
m
a
r
g
i
n
c
l
a
s
s
i
f
i
e
r
)
(Large margin classifier)
(Largemarginclassifier), 现在来直观理解下原因。
下面是我们的修改后的函数:
如果你有一个正样本,我们会希望 θ T x > = 1 \theta^Tx>=1 θTx>=1,反之,如果 y = 0 y=0 y=0,我们观察一下,函数 cos t 0 ( z ) {\cos}t_0{(z)} cost0(z),它只有在 z < = − 1 z<=-1 z<=−1的区间里函数值为0, 所以希望 θ T x < = − 1 \theta^Tx<=-1 θTx<=−1.
- 这里要区分一个点, 我们希望在正样本时 θ T x > = 1 \theta^Tx>=1 θTx>=1, 但是在预测时, θ T x > = 0 \theta^Tx>=0 θTx>=0就可以输出正类的结果, 就是 h ( θ T x ) = 1 h_{(\theta^Tx)}=1 h(θTx)=1 w h e n when when θ T x > = 0 \theta^Tx>=0 θTx>=0. 当然对于支持向量机不能仅仅这样要求, 我们希望预测的时候也可以 θ T x > = 1 \theta^Tx>=1 θTx>=1或者 θ T x < = − 1 \theta^Tx<=-1 θTx<=−1, 这有什么好处呢?
- 很明显这样预测的正类与负类的间隔会更加明显, 分类效果也比较好
对于参数C的理解
我们将这个常数 C C C设置成一个非常大的值,比如我们假设 C C C的值为100000或者其它非常大的数,观察一下支持向量机会给出什么结果?
因为目标是最小化下面的函数:
所以当
C
C
C很大时, 第一项会希望它近似为0, 那么我们怎么才能得到这样的结果呢?
之前提到, 当是正类时,
θ
T
x
>
=
1
\theta^Tx>=1
θTx>=1可以让损失函数第一项为0, 同样对于负类,
θ
T
<
=
−
1
\theta^T<=-1
θT<=−1可以让第一项为0, 这其实就对应了一个决策边界, 可以参考二分类里的决策边界:二分类
下图是两个类别的图:
决策界限满足: 正类时,
θ
T
x
>
=
1
\theta^Tx>=1
θTx>=1; 负类时,
θ
T
<
=
−
1
\theta^T<=-1
θT<=−1
当然可以有多个分类界限, 如下:
支持向量机将会选择这个紫色的决策边界,相较于之前的决策界限。这条紫色的看起来好得多,看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这是什么意思呢?这条紫线有更大的距离,这个距离叫做间距(margin)。
当画出这两条额外的蓝线,我们看到紫色的决策界和训练样本之间有更大的最短距离。然而绿线和黑线离训练样本就非常近,在分离样本的时候就会比紫线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器。其背后的数学原理将在之后解释。
- 当C非常大时, 假设数据集如下:
直观上可能是这样, 满足大间隔的条件。
加入有数据位置是这样, 那么决策界限可能是这样:
这其实就有些不好了, 因为一个异常的数据, 结果决策界限就变化的很大. 这是C过大的缺点. 但如果C比较小, 可能就不会变.
这里大间距分类器的描述,仅仅是从直观上给出了正则化参数
C
C
C非常大的情形.
观察
C
C
C,当:
C C C 较大时,可能会导致过拟合,方差。
C C C 较小时,可能会导致低拟合,高偏差。