目录
逻辑回归
1. 逻辑回归(Logistic Regression)
1.1 模型描述
逻辑回归虽然名字里有回归,但是实际上不是用于回归问题,而是一个分类模型。考虑一个二分类任务,其输出标签
y
∈
{
0
,
1
}
y\in \{0,1\}
y∈{0,1}。线性模型
z
=
w
T
x
+
b
z=\boldsymbol w^T \boldsymbol x + b
z=wTx+b 的输出值是一个连续值,我们需要把其转化成 0 或者 1 的离散值。最简单的方法是设定一个阈值,大于这个阈值则预测为 1,否则预测为 0,最常用的阈值是 0,则预测函数如下:
g
(
z
)
=
{
1
,
i
f
z
>
0
0
,
i
f
z
≤
0
g(z) = \begin{cases} 1, & if\ \ z > 0\\ 0, & if \ \ z \le 0 \end{cases}
g(z)={1,0,if z>0if z≤0 但是这个函数不连续,而 Sigmoid 函数有着很好的性质,它是连续的,且任意阶可导,值域在 (0,1) 之间,因此我们使用其来把线性组合的值
z
z
z 映射到 (0,1) 之间的值,我们可以把这个实数看成是样本属于正例的概率。
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1 把
z
=
w
T
x
+
b
z=\boldsymbol w^T \boldsymbol x + b
z=wTx+b 代入,得到:
f
(
x
)
=
g
(
z
)
=
1
1
+
e
−
(
w
T
x
+
b
)
f(\boldsymbol x)=g(z)=\frac{1}{1+e^{-(\boldsymbol w^T \boldsymbol x + b)}}
f(x)=g(z)=1+e−(wTx+b)1
1.2 损失函数
逻辑回归的损失函数是交叉熵(Cross Entropy),具体如下:
L
=
−
y
log
f
(
x
)
−
(
1
−
y
)
log
(
1
−
f
(
x
)
)
L=-y \log f(\boldsymbol x)-(1-y)\log (1-f(\boldsymbol x))
L=−ylogf(x)−(1−y)log(1−f(x)) 预测函数
f
(
x
)
f(\boldsymbol x)
f(x) 的输出值是一个 (0,1) 之间的实数,具体分析如下:
- 当样本是正例 ( y = 1 ) (y=1) (y=1) 时,此时 1 − y = 0 1-y=0 1−y=0,因此 L = − log f ( x ) L=-\log f(\boldsymbol x) L=−logf(x)。当 f ( x ) f(\boldsymbol x) f(x) 趋近于 1 时,L 趋近于 0,而且当 f ( x ) f(\boldsymbol x) f(x) 靠近 0 时,L 会急剧增加到无穷。
- 当样本是反例 ( y = 0 ) (y=0) (y=0) 时,此时 L = − log ( 1 − f ( x ) ) L=-\log (1-f(\boldsymbol x)) L=−log(1−f(x)),情况刚好与上面相反,此时的损失函数会驱使 f ( x ) f(\boldsymbol x) f(x) 逼近于 0,否则损失会急剧增加。
我们把
f
(
x
)
f(\boldsymbol x)
f(x) 看成是样本属于正例的概率,即
p
(
y
=
1
)
=
f
(
x
)
p(y=1)=f(\boldsymbol x)
p(y=1)=f(x),而样本属于反例的概率是
p
(
y
=
0
)
=
1
−
f
(
x
)
p(y=0)=1-f(\boldsymbol x)
p(y=0)=1−f(x),那么
y
y
y 的概率分布为:
p
(
y
)
=
f
(
x
)
y
(
1
−
f
(
x
)
)
1
−
y
p(y)=f(\boldsymbol x)^y(1-f(\boldsymbol x))^{1-y}
p(y)=f(x)y(1−f(x))1−y 取个对数,得到对数似然:
log
p
(
y
)
=
y
log
f
(
x
)
+
(
1
−
y
)
log
(
1
−
f
(
x
)
)
\log p(y)=y \log f(\boldsymbol x) + (1-y)\log (1-f(\boldsymbol x))
logp(y)=ylogf(x)+(1−y)log(1−f(x)) 由此我们可以看出,最大化对数似然等价于最小化交叉熵。
1.3 梯度下降求解
我们使用链式法则求损失函数 L 对参数
w
j
,
b
w_j, b
wj,b 的偏导数,相关函数写出来如下:
L
=
−
y
log
g
(
z
)
−
(
1
−
y
)
log
(
1
−
g
(
z
)
)
L=-y \log g(z)-(1-y)\log (1-g(z))
L=−ylogg(z)−(1−y)log(1−g(z))
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1
z
=
w
T
x
+
b
z=\boldsymbol w^T \boldsymbol x + b
z=wTx+b 分别求偏导如下:
∂
L
∂
g
=
−
y
g
(
z
)
+
1
−
y
1
−
g
(
z
)
=
g
(
z
)
−
y
g
(
z
)
(
1
−
g
(
z
)
)
\frac{\partial L}{\partial g}=-\frac{y}{g(z)}+\frac{1-y}{1-g(z)}=\frac{g(z)-y}{g(z)(1-g(z))}
∂g∂L=−g(z)y+1−g(z)1−y=g(z)(1−g(z))g(z)−y
∂
g
∂
z
=
g
(
z
)
(
1
−
g
(
z
)
)
\frac{\partial g}{\partial z}=g(z)(1-g(z))
∂z∂g=g(z)(1−g(z))
∂
z
∂
w
j
=
x
j
\frac{\partial z}{\partial w_j}=x_j
∂wj∂z=xj
∂
z
∂
b
=
1
\frac{\partial z}{\partial b}=1
∂b∂z=1 所以,损失函数 L 对参数
w
j
,
b
w_j, b
wj,b 的偏导数为:
∂
L
∂
w
j
=
∂
L
∂
g
∂
g
∂
z
∂
z
∂
w
j
=
(
g
(
z
)
−
y
)
x
j
\frac{\partial L}{\partial w_j}=\frac{\partial L}{\partial g}\frac{\partial g}{\partial z}\frac{\partial z}{\partial w_j}=(g(z)-y)x_j
∂wj∂L=∂g∂L∂z∂g∂wj∂z=(g(z)−y)xj
∂
L
∂
b
=
∂
L
∂
g
∂
g
∂
z
∂
z
∂
b
=
g
(
z
)
−
y
\frac{\partial L}{\partial b}=\frac{\partial L}{\partial g}\frac{\partial g}{\partial z}\frac{\partial z}{\partial b}=g(z)-y
∂b∂L=∂g∂L∂z∂g∂b∂z=g(z)−y 不过,上述式子是对于单个样本来说的,考虑到整个数据集 m 个样本的话,
∂
L
∂
w
j
=
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
x
i
j
\frac{\partial L}{\partial w_j}=\sum_{i=1}^m(f(\boldsymbol x_i)-y_i)x_{ij}
∂wj∂L=i=1∑m(f(xi)−yi)xij
∂
L
∂
b
=
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
\frac{\partial L}{\partial b}=\sum_{i=1}^m(f(\boldsymbol x_i)-y_i)
∂b∂L=i=1∑m(f(xi)−yi) 可以看出,上述梯度与 线性回归 完全一致,不过其中
f
(
x
i
)
f(\boldsymbol x_i)
f(xi) 的计算不同。
2. 从广义线性模型看逻辑回归
2.1 广义线性模型
线性回归是用线性模型的输出值
w
T
x
+
b
\boldsymbol w^T \boldsymbol x + b
wTx+b 逼近样本的真实值
y
y
y,但是我们也可以稍加变换,使得线性模型的输出值逼近
y
y
y 的衍生物,比如
y
y
y 的对数
log
y
=
w
T
x
+
b
\log y = \boldsymbol w^T \boldsymbol x + b
logy=wTx+b 这个其实等价于用
e
w
T
x
+
b
e^{\boldsymbol w^T \boldsymbol x + b}
ewTx+b 去逼近
y
y
y。考虑更一般的情况,我们在线性模型的输出值上,加上一个单调可微的函数做变换,用其变换值来逼近
y
y
y。这种被称为广义线性模型。
2.2 广义线性模型与逻辑回归
逻辑回归的公式如下:
y
=
1
1
+
e
−
(
w
T
x
+
b
)
y=\frac{1}{1+e^{-(\boldsymbol w^T \boldsymbol x + b)}}
y=1+e−(wTx+b)1 经过变换之后,可以得到:
log
y
1
−
y
=
w
T
x
+
b
\log \frac{y}{1-y}=\boldsymbol w^T \boldsymbol x + b
log1−yy=wTx+b 我们可以看出,逻辑回归可以看成是用线性模型的值来逼近
log
y
1
−
y
\log \frac{y}{1-y}
log1−yy。因为
y
y
y 表示样本为正例的概率,
1
−
y
1-y
1−y 是样本属于反例的概率,其比值
y
/
(
1
−
y
)
y/(1-y)
y/(1−y) 称为 “几率”(odds),其意义是样本属于正例的相对概率。取对数之后称为 “对数几率”(log odds, 或 logit),这就是 Logitstic Regression 名字的由来。