写在前面
最近因为在准备找深度学习相关的工作,听说经常会考到手推逻辑回归LR,因此提前在博客上记录一下。
逻辑回归也称为对数几率回归,有些书上也叫逻辑斯蒂回归,叫法并不一致。英文名是一致的,losgitic regression,大家有这么一个概念就行了。
正文
考虑二分类的任务,输出标记为[0,1]。线性回归模型产生的预测值为:
z
=
w
t
x
+
b
,
(
1
)
z = w^{t}x+b, (1)
z=wtx+b,(1)
于是,我们需将实值z转换为0/1值。最理想的是“单位阶跃函数”。图像如下图所示(红色线段):
很好理解,若预测值z大于0,则判为正例。若预测值z小于0,则判为反例。若预测值为临界值0则可任意判别。
然而,单位阶跃函数的缺点在于不连续,我们实际中并不直接将单位阶跃函数作为转换函数。我们希望找到能在一定程度上近似单位阶跃函数的“替代函数”,并且最好单调可微。Sigmoid函数便正好符合我们的要求,上图中有图像与公式。
由图我们可以看出,sigmoid函数将z值转化为一个接近0或1的值,并且其输出在z=0附近变化很陡。将z代入y得到:
y
=
1
1
+
e
−
(
w
T
x
+
b
)
,
(
2
)
y=\frac{1 } {1+e^{-(w^{T}x+b)}}, (2)
y=1+e−(wTx+b)1,(2)
在公式两边取对数则可以得到:
l
n
y
1
−
y
=
(
w
T
x
+
b
)
,
(
3
)
ln \frac{y}{1-y}=(w^{T}x+b), (3)
ln1−yy=(wTx+b),(3)
将y视为样本x作为正例的可能性,则1-y是其反例可能性,两者的比值(y/1-y)称为“几率”,反映了x作为正例的相对可能性。对几率取对数则得到“对数几率”,这也是名字的由来。
由公式(2)可以看出,我们实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,因此,也有书将逻辑回归成为“对数几率回归”。
下面开始重头戏,即如何确定公式(2)中的w和b。
将公式(2)中的y视为后验概率p(y=1|x),将公式(3)重写为:
l
n
p
(
y
=
1
∣
x
)
p
(
y
=
0
∣
x
)
=
(
w
T
x
+
b
)
,
(
4
)
ln \frac{p(y=1|x)}{p(y=0|x)}=(w^{T}x+b), (4)
lnp(y=0∣x)p(y=1∣x)=(wTx+b),(4)
有
p
(
y
=
1
∣
x
)
=
e
(
w
T
x
+
b
)
1
+
e
(
w
T
x
+
b
)
,
(
5
)
p(y=1|x)=\frac {e^{(w^{T}x+b)}}{1+e^{(w^{T}x+b)}}, (5)
p(y=1∣x)=1+e(wTx+b)e(wTx+b),(5)
p
(
y
=
0
∣
x
)
=
1
1
+
e
(
w
T
x
+
b
)
,
(
6
)
p(y=0|x)=\frac {1}{1+e^{(w^{T}x+b)}}, (6)
p(y=0∣x)=1+e(wTx+b)1,(6)
于是,我们可通过极大似然法来估计w和b。对于给定数据集
{
(
x
i
,
y
i
)
}
\left \{ \left ( x_{i},y_{i} \right ) \right \}
{(xi,yi)},i=1,…,m。对率回归模型最大化“对数似然”:
l
(
w
,
b
)
=
∑
i
=
1
m
l
n
p
(
y
i
∣
x
i
;
w
,
b
)
,
(
7
)
l(w,b)=\sum_{i=1}^{m} ln p(y_{i}|x_{i};w,b), (7)
l(w,b)=i=1∑mlnp(yi∣xi;w,b),(7)
即令每个样本属于其真实标记的概率越大越好,为了方便求解,我们令A=(w;b),B=(x;1)。则
w
T
x
+
b
w^{T}x+b
wTx+b可简写为
A
T
B
A^{T}B
ATB。再令
p
1
(
B
,
A
)
=
p
(
y
=
1
∣
B
;
A
)
p_{1}(B,A)=p(y=1|B;A)
p1(B,A)=p(y=1∣B;A),
p
0
(
B
,
A
)
=
p
(
y
=
0
∣
B
,
A
)
=
1
−
p
1
(
B
,
A
)
p_{0}(B,A)=p(y=0|B,A)=1-p_{1}(B,A)
p0(B,A)=p(y=0∣B,A)=1−p1(B,A)。则公式(7)中的似然项可重写为
p
(
y
i
∣
x
i
;
w
,
b
)
=
y
i
p
1
(
B
;
A
)
+
(
1
−
y
i
)
p
0
(
B
,
A
)
,
(
8
)
p(y_{i}|x_{i};w,b)=y_{i}p_{1}(B;A)+(1-y_{i})p_{0}(B,A), (8)
p(yi∣xi;w,b)=yip1(B;A)+(1−yi)p0(B,A),(8)
将公式(8)代入公式(7),可知最大化公式(7)等价于最小化
l
(
A
)
=
∑
i
=
1
m
(
−
y
i
A
T
B
+
l
n
(
1
+
e
A
T
B
)
)
,
(
9
)
l(A)=\sum_{i=1}^{m}(-y_{i}A^{T}B+ln(1+e^{A^{T}B})),(9)
l(A)=i=1∑m(−yiATB+ln(1+eATB)),(9)
公式(9)是关于A的高阶可导连续凸函数。根据凸优化理论,经典的数值优化算法如梯度下降法、牛顿法等都可求其最优解。于是可以得到:
A
∗
=
a
r
g
m
i
n
A
l
(
A
)
A^{*}=\underset {A}{arg min} l(A)
A∗=Aargminl(A)
A
∗
A^{*}
A∗则是我们要求解的答案,其中包含了
w
∗
w^{*}
w∗和
b
∗
b^{*}
b∗。
最后,讲完原理之后,再上传一张手推LR的手写版本。以便于在面试中碰到,仅供大家参考。
之后再看了台湾大学李宏毅老师的机器学习视频,觉得他的手推LR版公式更容易理解一下,因此一并附上。
参考资料:
[1] 《机器学习》 周志华