从逻辑回归到SVM
总所周知,逻辑回归的代价函数(不加正则项)为
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
log
(
h
θ
(
x
⃗
)
)
+
(
1
−
y
)
log
(
1
−
h
θ
(
x
⃗
)
)
]
J(\theta)=-\frac{1}{m}\sum_{i=1}^m\left[y\log(h_\theta(\vec{x}))+(1-y)\log(1-h_\theta(\vec{x}))\right]
J(θ)=−m1i=1∑m[ylog(hθ(x))+(1−y)log(1−hθ(x))]
当
y
=
0
or
1
y=0\ \text{or}\ 1
y=0 or 1时函数图像如下:
可以看到,因为
log
\log
log的存在,函数为一条曲线,我们尝试用直线段结合去代替该曲线。令
y
=
1
y=1
y=1时的直线替代为
cost
1
\text{cost}_1
cost1,反之为
cost
0
\text{cost}_0
cost0。
同时,我们不再除 m m m,这仅仅是行业默认的习惯,对求解问题本身没有影响。另外,对于正则项,我们不再用正则参数 λ \lambda λ调节其与模型拟合程度的关系,而是用另一个参数 C C C乘在模型拟合程度前面。当 C = 1 λ C=\frac{1}{\lambda} C=λ1时,两者求解出的参数是相等的。
综上,代价函数
J
(
θ
)
J(\theta)
J(θ)可写为
J
(
θ
)
=
C
∑
i
=
1
m
[
y
(
i
)
cost
1
(
θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
cost
0
(
θ
T
x
(
i
)
)
]
+
1
2
∑
i
=
1
n
θ
j
2
J(\theta)=C\sum_{i=1}^m[y^{(i)}\text{cost}_1(\theta^Tx^{(i)})+(1-y^{(i)})\text{cost}_0(\theta^Tx^{(i)})]+\frac{1}{2}\sum_{i=1}^n\theta_j^2
J(θ)=Ci=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21i=1∑nθj2
cost
\text{cost}
cost函数图像如图所示:
不难发现,欲使代价函数最小,只需要在
y
=
1
y=1
y=1时使
θ
T
x
≥
1
\theta^Tx\ge 1
θTx≥1,在
y
=
0
y=0
y=0时使
θ
T
x
≤
−
1
\theta^Tx\le -1
θTx≤−1即可(此时
cost
\text{cost}
cost部分等于0)。
这样的代价函数使得算法在分类时要求更高,逻辑回归在 θ T x = 0 \theta^Tx=0 θTx=0处划分两类,而SVM则使 θ T x \theta^Tx θTx的绝对值尽量超过1。
大间距分类性
大间距分类指我们的分类器构造出的边界总是使决策边界到两类样本点的距离较大。例如下图中,粉色线和绿色线距离两侧的样本距离较近,而黑色线距离较远,SVM更倾向于黑色线这样的分类边界。
会产生这样的结果是因为我们的正则项
1
2
∑
j
=
1
n
θ
j
2
=
1
2
∣
∣
θ
⃗
∣
∣
2
\frac{1}{2}\sum_{j=1}^n\theta_j^2=\frac{1}{2}||\vec{\theta}||^2
21j=1∑nθj2=21∣∣θ∣∣2
即我们在代价函数中,会尽可能去缩短参数向量
θ
⃗
\vec{\theta}
θ的长度。同时,SVM也会尽量让
y
=
1
y=1
y=1时
θ
T
x
≥
1
\theta^Tx\ge 1
θTx≥1,在
y
=
0
y=0
y=0时
θ
T
x
≤
−
1
\theta^Tx\le -1
θTx≤−1。由这两个条件就可推导出SVM的大间距性:
首先,
θ
T
x
\theta^Tx
θTx可写为为向量点乘形式
θ
T
x
=
θ
⃗
⋅
x
⃗
=
∣
∣
θ
⃗
∣
∣
(
∣
∣
x
⃗
∣
∣
cos
<
θ
⃗
,
x
⃗
>
)
\theta^Tx=\vec{\theta}\cdot \vec{x}=||\vec{\theta}||(||\vec{x}||\cos<\vec{\theta},\vec{x}>)
θTx=θ⋅x=∣∣θ∣∣(∣∣x∣∣cos<θ,x>)
即
θ
T
x
\theta^Tx
θTx的值取决于
θ
⃗
\vec{\theta}
θ的长度和
x
⃗
\vec{x}
x在
θ
⃗
\vec{\theta}
θ方向上投影长度的乘积。
而决策边界为满足 θ T x = 0 \theta^Tx=0 θTx=0面,则参数向量 θ ⃗ \vec{\theta} θ是垂直于该面的(法向量)。所以 x ⃗ \vec{x} x在 θ ⃗ \vec{\theta} θ方向上的投影其实就是该样本点到决策边界的距离。
所以,SVM运行时,会尽量缩短 θ ⃗ \vec{\theta} θ,又要满足 ∣ θ T x ∣ ≥ 1 |\theta^Tx|\ge1 ∣θTx∣≥1,那么只能让 x ⃗ \vec{x} x在 θ ⃗ \vec{\theta} θ方向上的投影长度尽可能长,等价于样本点距离决策边界的距离尽可能长。