分类问题的本质是确定样本
x
x
x属于类别
c
i
c_i
ci的概率
p
(
C
i
∣
x
)
p(C_i|x)
p(Ci∣x)。在上周整理的分类问题中,我们采用生成式方法,借助贝叶斯公式和极大似然估计,首先计算出
p
(
x
∣
C
i
)
p(x|C_i)
p(x∣Ci)和
p
(
x
,
C
i
)
p(x,C_i)
p(x,Ci),然后再计算出
p
(
C
i
∣
x
)
p(C_i|x)
p(Ci∣x)。以二分类为例:
p
(
C
1
∣
x
)
=
p
(
C
1
,
x
)
p
(
x
)
=
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
)
=
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
∣
C
1
)
p
(
C
1
)
+
p
(
x
∣
C
2
)
p
(
C
2
)
(1)
p(C_1|x)=\frac{p(C_1,x)}{p(x)}=\frac{p(x|C_1)p(C_1)}{p(x)}=\frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)} \tag 1
p(C1∣x)=p(x)p(C1,x)=p(x)p(x∣C1)p(C1)=p(x∣C1)p(C1)+p(x∣C2)p(C2)p(x∣C1)p(C1)(1)
如果 p ( C 1 ∣ x ) > 0.5 p(C_1|x)>0.5 p(C1∣x)>0.5,则将 x x x归入类别 C 1 C_1 C1;如果 p ( C 1 ∣ x ) < 0.5 p(C_1|x)<0.5 p(C1∣x)<0.5,则将 x x x归入类别 C 2 C_2 C2。一般情况下,我们将 p ( x ∣ C 1 ) p(x|C_1) p(x∣C1)和 p ( x ∣ C 2 ) p(x|C_2) p(x∣C2)假设成服从不同 μ 1 \mu_1 μ1, μ 2 \mu_2 μ2但是相同 Σ \Sigma Σ的高斯分布。因为高斯分布是自然界中最常见的一种分布,两个分布同用一个协方差矩阵 Σ \Sigma Σ有助于减少参数数目,防止过拟合。
Logistic回归推导
现在我们尝试对上述后验概率(1)进行变形
p
(
C
1
∣
x
)
=
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
∣
C
1
)
p
(
C
1
)
+
p
(
x
∣
C
2
)
p
(
C
2
)
=
1
1
+
p
(
x
∣
C
2
)
p
(
C
2
)
p
(
x
∣
C
1
)
p
(
C
1
)
=
1
1
+
e
x
p
(
−
z
)
=
σ
(
z
)
\begin{aligned} p(C_1|x) =& \frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)}\\ =& \frac{1}{1+\frac{p(x|C_2)p(C_2)}{p(x|C_1)p(C_1)}}\\ =& \frac{1}{1+exp(-z)}\\ =& \sigma(z) \end{aligned}
p(C1∣x)====p(x∣C1)p(C1)+p(x∣C2)p(C2)p(x∣C1)p(C1)1+p(x∣C1)p(C1)p(x∣C2)p(C2)11+exp(−z)1σ(z)
其中
z
=
l
n
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
∣
C
2
)
p
(
C
2
)
z=ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)}
z=lnp(x∣C2)p(C2)p(x∣C1)p(C1)。上面
σ
(
z
)
=
1
1
+
e
x
p
(
−
z
)
\sigma(z)=\frac{1}{1+exp(-z)}
σ(z)=1+exp(−z)1正是Sigmoid函数,该函数具有良好的性质,能够将
z
z
z值转化为一个(0,1)区间内的值,并且
z
=
0
z=0
z=0时,
σ
(
z
)
=
0.5
\sigma(z)=0.5
σ(z)=0.5。同时该函数是单调连续可微的。Sigmoid函数的图像如下图所示:
现在还需要确定的是
z
z
z是什么,我们继续对
z
z
z进行推导
z
=
l
n
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
∣
C
2
)
p
(
C
2
)
=
l
n
p
(
x
∣
C
1
)
p
(
x
∣
C
2
)
+
l
n
p
(
C
1
)
p
(
C
2
)
=
l
n
1
(
2
π
)
D
/
2
1
∣
Σ
1
∣
1
/
2
e
x
p
{
−
1
2
(
x
−
μ
1
)
T
(
Σ
1
)
−
1
(
x
−
μ
1
)
}
1
(
2
π
)
D
/
2
1
∣
Σ
2
∣
1
/
2
e
x
p
{
−
1
2
(
x
−
μ
2
)
T
(
Σ
2
)
−
1
(
x
−
μ
2
)
}
+
l
n
N
1
N
1
+
N
2
N
2
N
1
+
N
2
=
l
n
∣
Σ
2
∣
1
/
2
∣
Σ
1
∣
1
/
2
−
1
2
[
(
x
−
μ
1
)
T
(
Σ
1
)
−
1
(
x
−
μ
1
)
−
(
x
−
μ
2
)
T
(
Σ
2
)
−
1
(
x
−
μ
2
)
]
+
l
n
N
1
N
2
=
(
μ
1
−
μ
2
)
T
Σ
−
1
x
−
1
2
(
μ
1
)
T
Σ
−
1
μ
1
+
1
2
(
μ
2
)
T
Σ
−
1
μ
2
+
l
n
N
1
N
2
(2)
\begin{aligned} z =& ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)}\\ =& ln\frac{p(x|C_1)}{p(x|C_2)}+ln\frac{p(C_1)}{p(C_2)}\\ =& ln\frac{\frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma^1|^{1/2}}exp\{-\frac{1}{2}(x-\mu^1)^T(\Sigma^1)^{-1}(x-\mu^1)\}}{\frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma^2|^{1/2}}exp\{-\frac{1}{2}(x-\mu^2)^T(\Sigma^2)^{-1}(x-\mu^2)\}}+ln\frac{\frac{N_1}{N_1+N_2}}{\frac{N_2}{N_1+N_2}}\\ =& ln\frac{|\Sigma^2|^{1/2}}{|\Sigma^1|^{1/2}}-\frac{1}{2}[(x-\mu^1)^T(\Sigma^1)^{-1}(x-\mu^1)-(x-\mu^2)^T(\Sigma^2)^{-1}(x-\mu^2)]+ln\frac{N_1}{N_2}\\ =& (\mu^1-\mu^2)^T\Sigma^{-1}x-\frac{1}{2}(\mu^1)^T\Sigma^{-1}\mu^1+\frac{1}{2}(\mu^2)^T\Sigma^{-1}\mu^2+ln\frac{N_1}{N_2}\tag {2} \end{aligned}
z=====lnp(x∣C2)p(C2)p(x∣C1)p(C1)lnp(x∣C2)p(x∣C1)+lnp(C2)p(C1)ln(2π)D/21∣Σ2∣1/21exp{−21(x−μ2)T(Σ2)−1(x−μ2)}(2π)D/21∣Σ1∣1/21exp{−21(x−μ1)T(Σ1)−1(x−μ1)}+lnN1+N2N2N1+N2N1ln∣Σ1∣1/2∣Σ2∣1/2−21[(x−μ1)T(Σ1)−1(x−μ1)−(x−μ2)T(Σ2)−1(x−μ2)]+lnN2N1(μ1−μ2)TΣ−1x−21(μ1)TΣ−1μ1+21(μ2)TΣ−1μ2+lnN2N1(2)
其中从第四行到第五行是因为
Σ
1
=
Σ
2
=
Σ
\Sigma^1=\Sigma^2=\Sigma
Σ1=Σ2=Σ。再进一步观察式(2),
(
μ
1
−
μ
2
)
T
Σ
−
1
(\mu^1-\mu^2)^T\Sigma^{-1}
(μ1−μ2)TΣ−1的结果是一个向量,而
x
x
x后面一串是一个数字,因此
z
z
z可以写成
z
=
w
T
x
+
b
z=w^Tx+b
z=wTx+b的形式,所以
p
(
C
1
∣
x
)
=
σ
(
w
T
x
+
b
)
=
1
1
+
e
−
(
w
T
x
+
b
)
(3)
p(C_1|x)=\sigma(w^Tx+b)=\frac{1}{1+e^{-(w^Tx+b)}} \tag 3
p(C1∣x)=σ(wTx+b)=1+e−(wTx+b)1(3)
上式(3)就称为Logistic 回归。在生成模型中,我们先求出 μ 1 \mu^1 μ1, μ 2 \mu^2 μ2, Σ \Sigma Σ,然后求出 w w w和 b b b。这样做难免显得太过复杂,我们希望直接找出 w w w和 b b b。结合机器学习的三个步骤,第一步确定一个模型 f ( x ) f(x) f(x),这一步已经完成 f ( x ) = p ( C 1 ∣ x ) f(x)=p(C_1|x) f(x)=p(C1∣x)。如果 p ( C 1 ∣ x ) > 0.5 p(C_1|x)>0.5 p(C1∣x)>0.5,则输出 C 1 C_1 C1,否则输出 C 2 C_2 C2。接下来需要做的是选择一个恰当的损失函数用以度量找出来的 w w w和 b b b的好坏。
Logistic回归损失函数
根据以往回归模型的经验,损失函数的选取第一反应是均方误差函数,因此我们首先尝试使用均方误差。为了使目标标签
C
1
C_1
C1,
C
2
C_2
C2能够参与运算,我们需要将其数字化,规定:样本类别为
C
1
C_1
C1,
y
^
=
1
\hat{y}=1
y^=1;样本类别为
C
2
C_2
C2,
y
^
=
0
\hat{y}=0
y^=0。因此损失函数可以写作:
L
(
f
)
=
1
2
∑
i
=
1
m
(
f
(
x
(
i
)
)
−
y
^
(
i
)
)
2
L(f)=\frac{1}{2}\sum_{i=1}^m(f(x^{(i)})-\hat{y}^{(i)})^2
L(f)=21i=1∑m(f(x(i))−y^(i))2
对其进行求导
∂
(
f
(
x
)
−
y
^
)
2
∂
w
i
=
2
(
f
(
x
)
−
y
^
)
f
(
x
)
(
1
−
f
(
x
)
)
x
i
\frac{\partial(f(x)-\hat{y})^2}{\partial w_i}=2(f(x)-\hat{y})f(x)(1-f(x))x_i
∂wi∂(f(x)−y^)2=2(f(x)−y^)f(x)(1−f(x))xi
具体分析,当 y ^ ( i ) = 1 \hat{y}^{(i)}=1 y^(i)=1, f ( x ( i ) ) = 0 f(x^{(i)})=0 f(x(i))=0,说明模型误差还很大,距离目标很远,但上式导数 ∂ L ( f ( x ( i ) ) ) / ∂ w i = 0 \partial L(f(x^{(i)}))/\partial w_i=0 ∂L(f(x(i)))/∂wi=0;另一种情况,当 y ^ ( i ) = 0 \hat{y}^{(i)}=0 y^(i)=0, f ( x ( i ) ) = 1 f(x^{(i)})=1 f(x(i))=1,同样说明模型误差还很大,距离目标很远,但上式导数 ∂ L ( f ( x ( i ) ) ) / ∂ w i = 0 \partial L(f(x^{(i)}))/\partial w_i=0 ∂L(f(x(i)))/∂wi=0。而所有样本或者大多数样本的导数等于零时, ∂ L / ∂ w i ≈ 0 \partial L/\partial w_i\approx 0 ∂L/∂wi≈0,参数将不再更新,但此时我们明显没有找到最佳参数,所以均方误差函数不是一个恰当的损失度量函数。
换一个角度思考,既然Logistic回归计算出了
p
(
C
1
∣
x
)
p(C_1|x)
p(C1∣x),那么对于那些属于
C
2
C_2
C2类别的样本其概率为
p
(
C
2
∣
x
)
=
1
−
p
(
C
1
∣
x
)
p(C_2|x)=1-p(C_1|x)
p(C2∣x)=1−p(C1∣x)。我们同样可以采用极大似然法来估计
w
w
w和
b
b
b,即希望每个样本属于其真实标记的概率越大越好。
L
(
w
,
b
)
=
l
n
∏
i
=
1
m
p
(
y
^
(
i
)
∣
x
(
i
)
)
=
∑
i
=
1
m
l
n
p
(
y
^
(
i
)
∣
x
(
i
)
)
(4)
\begin{aligned} L(w,b) &=& ln\prod_{i=1}^mp(\hat{y}^{(i)}|x^{(i)})\\ &=& \sum_{i=1}^mlnp(\hat{y}^{(i)}|x^{(i)})\\ \tag 4 \end{aligned}
L(w,b)==lni=1∏mp(y^(i)∣x(i))i=1∑mlnp(y^(i)∣x(i))(4)
又因为
p
(
y
^
(
i
)
∣
x
(
i
)
)
=
y
^
(
i
)
f
(
x
(
i
)
)
+
(
1
−
y
^
(
i
)
)
(
1
−
f
(
x
(
i
)
)
)
(5)
p(\hat{y}^{(i)}|x^{(i)})=\hat{y}^{(i)}f(x^{(i)})+(1-\hat{y}^{(i)})(1-f(x^{(i)})) \tag 5
p(y^(i)∣x(i))=y^(i)f(x(i))+(1−y^(i))(1−f(x(i)))(5)
将式(5)带入(4),同时将最大化变成最小化,可得
L
(
w
,
b
)
=
−
∑
i
=
1
m
[
y
^
(
i
)
l
n
f
(
x
(
i
)
)
+
(
1
−
y
^
(
i
)
)
l
n
(
1
−
f
(
x
(
i
)
)
)
]
(6)
L(w,b)=-\sum_{i=1}^m[\hat{y}^{(i)}lnf(x^{(i)})+(1-\hat{y}^{(i)})ln(1-f(x^{(i)}))] \tag 6
L(w,b)=−i=1∑m[y^(i)lnf(x(i))+(1−y^(i))ln(1−f(x(i)))](6)
上式(6)称为交叉熵(cross entropy)损失函数,同样采用梯度下降法求得最优解
w
∗
,
b
∗
=
a
r
g
min
w
,
b
L
(
w
,
b
)
w^*,b^*=arg \min_{w,b}L(w,b)
w∗,b∗=argw,bminL(w,b)
寻找最佳参数
交叉熵损失函数虽然看起来形式复杂,但是求导并不复杂
∂
L
(
w
,
b
)
∂
w
j
=
−
∑
i
=
1
m
(
y
^
(
i
)
−
f
(
x
(
i
)
)
)
x
j
(
i
)
∂
L
(
w
,
b
)
∂
b
=
−
∑
i
=
1
m
(
y
^
(
i
)
−
f
(
x
(
i
)
)
)
\frac{\partial L(w,b)}{\partial w_j}=-\sum_{i=1}^m\left(\hat{y}^{(i)}-f(x^{(i)})\right)x_j^{(i)}\\ \frac{\partial L(w,b)}{\partial b}=-\sum_{i=1}^m\left(\hat{y}^{(i)}-f(x^{(i)})\right)
∂wj∂L(w,b)=−i=1∑m(y^(i)−f(x(i)))xj(i)∂b∂L(w,b)=−i=1∑m(y^(i)−f(x(i)))
求导结果与线性回归均方误差的导数一模一样。采用梯度下降算法更新参数
w
i
=
w
i
−
η
∑
i
=
1
m
−
(
y
^
(
i
)
−
f
(
x
(
i
)
)
)
x
j
(
i
)
b
=
b
−
η
∑
i
=
1
m
−
(
y
^
(
i
)
−
f
(
x
(
i
)
)
)
w_i=w_i-\eta\sum_{i=1}^m-\left(\hat{y}^{(i)}-f(x^{(i)})\right)x_j^{(i)}\\ b=b-\eta\sum_{i=1}^m-\left(\hat{y}^{(i)}-f(x^{(i)})\right)
wi=wi−ηi=1∑m−(y^(i)−f(x(i)))xj(i)b=b−ηi=1∑m−(y^(i)−f(x(i)))
关于交叉熵损失函数与均方误差损失函数的对比可以参考下图
可以看出均方误差损失函数的曲面近乎是平坦的,因此梯度下降很容易停下来,而交叉熵损失函数则不会出现这个问题。
总结
Logistic回归相较于生成式模型操作简单,并且准确率也比较的高,但这并不表明Logistic回归能够解决所有的二分类问题,因为Logistic回归的分界面是一个平面,因此对于线性不可分问题,Logistic回归将束手无策,需要借助更加复杂的分类器。