请和我一起学习机器学习算法之支持向量机
支持向量机(SVM)
(Sport vector machine) 支持向量机是一分类算法,是机器学习算法中,公式推导产生巨大困难的算法之一。我前前后后学习了好多遍,都被他复杂的公式打败了(周志华的西瓜书的锅)。
这次,我不打算仔细去推演SVM的公式,但是我们可以通过一些相对简单可以理解的数学来理解SVM的工作过程。
从逻辑回归到SVM
SVM实际上也是一种分类器, 可以理解为一种优化的的逻辑回归。
如上图所示,我们正对黑圈和红三角进行分类,如果从逻辑分类的角度来说,两个青色的先和粗的紫色的线都可以将样本分开,也就是说,这三条直线都是逻辑分类的解。但是从直观的看我们都会选择粗的紫色的线,为什么这条直线最好呢?是因为误差的问题。任何样本的测量记录都有可能有误差存在,由于青色的线距离一些样本点很近,一旦测量上有误差,那实际上这些回归线可能已经不能正确分类了。
SVM的代价函数的理解
从直观上看,再线性可分的情况下,SVM就是要找到一条直线(平面或超平面),使得距离这个分界最近的点的距离最大。
我们知道逻辑线性回归的代价函数是:
c
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
log
(
h
θ
(
x
)
)
,
当
y
=
1
c
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
log
(
1
−
h
θ
(
x
)
)
,
当
y
=
0
h
θ
(
x
)
=
1
1
+
e
−
Θ
T
x
cost(h_\theta(x),y)= -\log(h_\theta(x)), 当 y=1 \\ cost(h_\theta(x),y)= -\log(1-h_\theta(x)), 当 y=0 \\ h_\theta(x)=\frac{1}{1+e^{-\Theta^Tx}}
cost(hθ(x),y)=−log(hθ(x)),当y=1cost(hθ(x),y)=−log(1−hθ(x)),当y=0hθ(x)=1+e−ΘTx1
我们知道,分类算法的优化目标是使得代价最小,也就是说再只有0/1两种情况下,可以知道优化目标为:
min
θ
1
m
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
Θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
Θ
T
x
(
i
)
)
]
+
λ
2
m
∑
j
=
1
m
θ
j
2
\min_\theta \frac{1}{m} \sum_{i=1}^{m}[y^{(i)}cost1(\Theta^Tx^{(i)})+(1-y^{(i)})cost0(\Theta^Tx^{(i)})]+\frac{\lambda}{2m}\sum_{j=1}^m\theta_j^2
θminm1i=1∑m[y(i)cost1(ΘTx(i))+(1−y(i))cost0(ΘTx(i))]+2mλj=1∑mθj2
第一项是我们预测的总代价,第二个是我们希望参数控制再一定范围的一个增加项。
我们放大m倍,删除掉m实际上并不会影响我们对参数的优化:
min
θ
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
Θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
Θ
T
x
(
i
)
)
]
+
λ
2
∑
j
=
1
m
θ
j
2
\min_\theta \sum_{i=1}^{m}[y^{(i)}cost1(\Theta^Tx^{(i)})+(1-y^{(i)})cost0(\Theta^Tx^{(i)})]+\frac{\lambda}{2}\sum_{j=1}^m\theta_j^2
θmini=1∑m[y(i)cost1(ΘTx(i))+(1−y(i))cost0(ΘTx(i))]+2λj=1∑mθj2
同理,我们放大C(
C
=
1
λ
C=\frac{1}{\lambda}
C=λ1)倍也不会影响对参数的优化。
min
θ
C
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
Θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
Θ
T
x
(
i
)
)
]
+
1
2
∑
j
=
1
m
θ
j
2
\min_\theta C\sum_{i=1}^{m}[y^{(i)}cost1(\Theta^Tx^{(i)})+(1-y^{(i)})cost0(\Theta^Tx^{(i)})]+\frac{1}{2}\sum_{j=1}^m\theta_j^2
θminCi=1∑m[y(i)cost1(ΘTx(i))+(1−y(i))cost0(ΘTx(i))]+21j=1∑mθj2
我们只分析y=1的情况,您可以使用相同的方式获取y=0的情况。
如果我们选择一个代价函数如下图红线所示作为SVM的代价函数(青色为逻辑回归的代价函数,红色为贴近青色的一条分段直线), 线不考虑当小于1时候的斜率。
为什么会考虑使用这样一条分段直线来作为代价函数呢,为什么是1呢?这个不好理解。
请回看粗紫色线对于分类情况的判定。实际上我们知道的是,其实对于距离特别原的那些点,对我们的边界并没有什么影响,比如下面这些箭头所指的点。对于其他这些对边界有影响的点我们称之为“支持向量”
但是,具体多远的点可以认为对边界没有影响呢?实际上是不知道的。我们假设为一个正数
ξ
\xi
ξ,也就是说 ,下面条件成立的时候代价函数为0,没有影响:
Θ
T
x
≥
ξ
\Theta^T \boldsymbol x \geq \xi
ΘTx≥ξ
两边同时乘
1
ξ
\frac{1}{\xi}
ξ1,
1
ξ
Θ
T
x
≥
1
\frac{1}{\xi}\Theta^T \boldsymbol x \geq 1
ξ1ΘTx≥1
由于最后我们要求的是平面
Θ
T
x
=
0
\Theta^T \boldsymbol x =0
ΘTx=0 与
1
ξ
Θ
T
x
=
0
\frac{1}{\xi}\Theta^T \boldsymbol x =0
ξ1ΘTx=0 是同一个平面,所以就算我们放大后直接将倍数柔进
Θ
\Theta
Θ中,可以将条件设置为
Θ
T
x
≥
1
\Theta^T \boldsymbol x \geq 1
ΘTx≥1
完全线性可分的情况下,我们可以找到一条直线使得对于所有y=1的数据点都满足条件大于等于1,对所有y=0的数据点都满足小于-1(可以通过和上面相同的方式获取),于是代价函数的前半部可以为0. 于是优化项目变为:
min
θ
1
2
∑
i
=
1
m
θ
j
2
s
t
.
y
(
i
)
(
Θ
T
x
(
i
)
)
≥
1
\min_\theta \frac{1}{2} \sum_{i=1}^{m}\theta_j^2 \\ st. y^{(i)}(\Theta^Tx^{(i)}) \geq 1
θmin21i=1∑mθj2st.y(i)(ΘTx(i))≥1
这就是所谓的一般型。
实际上述所说的完全线性可分并不一定是最优边界。比如下面这种情况:
虽然我们可以找到一条完全线性分开的粉红色直线可以将全部的样本点分开,但是我们可以从直观的感受到,黑色的直线或许是泛化能力更好的直线。再很多情况我们并不能保证线性可分。
所以,我们实际还是要回归原有的代价函数:
min
θ
C
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
Θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
Θ
T
x
(
i
)
)
]
+
1
2
∑
j
=
1
m
θ
j
2
\min_\theta C\sum_{i=1}^{m}[y^{(i)}cost1(\Theta^Tx^{(i)})+(1-y^{(i)})cost0(\Theta^Tx^{(i)})]+\frac{1}{2}\sum_{j=1}^m\theta_j^2
θminCi=1∑m[y(i)cost1(ΘTx(i))+(1−y(i))cost0(ΘTx(i))]+21j=1∑mθj2
C值实际上时认为引入,用于控制参数的变量。
当C值很大时,我们更加关注错误代价带来的影响,因此会出现过拟合,导致高方差。
当C值很小时,我们更加关注参数的大小带来的影响,可能会出现欠拟合,导致高偏差。
选择一个合适的C值,可以容纳一些误差点,并得到一条相对好的边界,如上图的黑色分界线。
为什么目标函数可以获得最大间隔
当y=1的时候,
Θ
T
x
(
i
)
≥
1
\Theta^T x^{(i)} \geq 1
ΘTx(i)≥1, 考虑最简单的情况
θ
0
=
0
\theta_0=0
θ0=0,
Θ
\Theta
Θ 则为边界的法向量OQ,.
根据向量乘积的定义,
Θ
T
x
(
i
)
=
∣
∣
Θ
∣
∣
⋅
O
P
\Theta^T x^{(i)}=||\Theta|| \cdot OP
ΘTx(i)=∣∣Θ∣∣⋅OP,OP表示样本点到边界法向量OQ的投影。要保证对于所有样本点这个乘积大于等于1,并且使得
∣
∣
Θ
∣
∣
||\Theta||
∣∣Θ∣∣ 最小,则OP需要更大,而OP就是点到直线的距离。
因此上述优化等式可以求解到最大的间隔的边界。
什么是核函数
所谓核函数,实际上是为了更好的解决线性不可分的问题,用来替代原有的线性x的一组相似的函数。
比如:
优化目标变为下面的等式
为什么核函数要满足一定的条件(KKT)
实际上只是为了保证优化目标为凸优化问题,使得工具包可以正常的执行优化,找到或者接近全局最优解。
核函数和SVM之间是如何合作的
举个例子,如果核函数为到下面三个点的距离的相反数,如果我们得到下面的函数,则当点靠近1,2时会判断为大于0,预测为1, 当远离这两个点时,会预测为0,从而获得了一个类似下面的一个非直线的一个判断边界。
我只是知识的搬运工,如有侵权,告知即删。