一、从线性回归到线性分类
在先前的线性回归(一)基础理论中详细介绍过线性回归,现在思考一个问题:能否用这个模型解决离散标签的预测?
虽然这个问题是显然的分类问题。但从模型的可行性角度来看,当然是可以的。下图给出了一个案例的拟合结果:模型在一堆离散点中找到了一条使得MSE最小的直线,从而可以对位置数据进行
y
y
y的预测,通过设置一个合理的
b
i
a
s
bias
bias即可完成分类预测。但这个模型存在如下问题:
(1)线性回归对异常值非常敏感,易造成预测结果偏差;
(2)难以界定合适的
b
i
a
s
bias
bias完成最终分类。
那我们能否对线性模型进行改良,使其能够解决分类问题呢?这就是我们今天的主角:逻辑回归。
二、逻辑斯谛分布和逻辑回归
逻辑回归是基于线性回归的适用于二分类问题(经推广后也可用于多分类问题)的分类器。
由于历史原因,其名字中带有【回归】,但确是不折不扣的分类算法。其基本思想就是将线性回归结果作用在某种非线性函数上(即逻辑斯谛分布函数,和神经网络的层级单元做法一样),从而实现对结果的压缩和对分类的预测。
逻辑斯谛分布函数:
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z)=\frac{1}{1+e^{-z}}
σ(z)=1+e−z1
逻辑斯谛分布函数的导数:
σ
′
(
z
)
=
e
−
z
(
1
+
e
−
z
)
2
=
(
e
−
z
+
1
)
−
1
(
1
+
e
−
z
)
2
=
1
1
+
e
−
z
−
1
(
1
+
e
−
z
)
2
=
σ
(
z
)
(
1
−
σ
(
z
)
)
\sigma'(z)=\frac{e^{-z}}{(1+e^{-z})^2}=\frac{(e^{-z}+1)-1}{(1+e^{-z})^2}=\frac{1}{1+e^{-z}}-\frac{1}{(1+e^{-z})^2}=\sigma(z)(1-\sigma(z))
σ′(z)=(1+e−z)2e−z=(1+e−z)2(e−z+1)−1=1+e−z1−(1+e−z)21=σ(z)(1−σ(z))
将逻辑斯谛分布函数中的
z
z
z用线性回归函数代入,即得到逻辑回归公式:
P
(
y
=
1
)
=
1
1
+
e
−
θ
T
x
P
(
y
=
0
)
=
e
−
θ
T
x
1
+
e
−
θ
T
x
P(y=1)=\frac{1}{1+e^{-\boldsymbol \theta^T x}}\\P(y=0)=\frac{e^{-\boldsymbol \theta^T \boldsymbol x}}{1+e^{-\boldsymbol \theta^T x}}
P(y=1)=1+e−θTx1P(y=0)=1+e−θTxe−θTx
可见,线性回归在逻辑斯谛分布函数的作用下,成功将回归结果压缩到
(
0
,
1
)
(0,1)
(0,1)区间内,从而不仅解决了对异常值的敏感性(相反,其对异常值非常不敏感),而且可以方便地在
(
0
,
1
)
(0,1)
(0,1)区间选取某个
b
i
a
s
bias
bias(一般比较两个概率大小,即bias取0.5)完成分类。
注意到两个概率的对数比,也称对数几率为: l o g P ( y = 0 ) P ( y = 1 ) = − θ T x log\frac{P(y=0)}{P(y=1)}=-\boldsymbol \theta^T \boldsymbol x logP(y=1)P(y=0)=−θTx,即是线性回归结果。所以可以将逻辑回归视为对二分类概率对数几率的线性回归。
三、逻辑回归的极大似然估计
上文虽然给出了逻辑回归公式,但其一方面是分段函数,另一方面难以找到合适的损失函数,因此还无法直接求解。
我们再仔细观察下逻辑回归公式,不难发现
P
(
y
=
0
)
+
P
(
y
=
1
)
=
1
P(y=0)+P(y=1)=1
P(y=0)+P(y=1)=1,这意味着逻辑回归模型中暗藏着一条假设:预测结果分布满足伯努利分布(0-1分布)!这个我们提供了一条思路:利用概率的思维去求解。
首先将分段的逻辑回归公式改写为:
P
(
y
)
=
(
1
1
+
e
−
θ
T
x
)
y
(
e
−
θ
T
x
1
+
e
−
θ
T
x
)
1
−
y
,
y
∈
(
0
,
1
)
P(y)=(\frac{1}{1+e^{-\boldsymbol \theta^T \boldsymbol x}})^y(\frac{e^{-\boldsymbol \theta^T \boldsymbol x}}{1+e^{-\boldsymbol \theta^T \boldsymbol x}})^{1-y},y\in(0,1)
P(y)=(1+e−θTx1)y(1+e−θTxe−θTx)1−y,y∈(0,1)
则参数的似然函数可写成:
L
(
θ
;
x
,
y
)
=
∏
i
(
1
1
+
e
−
θ
T
x
i
)
y
i
(
e
−
θ
T
x
i
1
+
e
−
θ
T
x
i
)
1
−
y
i
L(\boldsymbol \theta;\boldsymbol x,\boldsymbol y)=\prod \limits_i (\frac{1}{1+e^{-\boldsymbol \theta^T x_i}})^{y_i}(\frac{e^{-\boldsymbol \theta^T x_i}}{1+e^{-\boldsymbol \theta^T x_i}})^{1-y_i}
L(θ;x,y)=i∏(1+e−θTxi1)yi(1+e−θTxie−θTxi)1−yi
取对数似然函数:
L
(
θ
;
x
,
y
)
=
∑
i
y
i
l
n
(
1
1
+
e
−
θ
T
x
i
)
+
(
1
−
y
i
)
l
n
(
e
−
θ
T
x
i
1
+
e
−
θ
T
x
i
)
L(\boldsymbol \theta;\boldsymbol x,\boldsymbol y)=\sum \limits_i y_i ln(\frac{1}{1+e^{-\boldsymbol \theta^T x_i}})+(1-y_i) ln(\frac{e^{-\boldsymbol \theta^T x_i}}{1+e^{-\boldsymbol \theta^T x_i}})
L(θ;x,y)=i∑yiln(1+e−θTxi1)+(1−yi)ln(1+e−θTxie−θTxi)
令
h
(
θ
,
x
i
)
=
1
1
+
e
−
θ
T
x
i
h(\boldsymbol \theta,x_i)=\frac{1}{1+e^{-\boldsymbol \theta^T x_i}}
h(θ,xi)=1+e−θTxi1,则对数似然函数可简写为:
∑
i
y
i
l
n
h
(
θ
,
x
i
)
+
(
1
−
y
i
)
l
n
(
1
−
h
(
θ
,
x
i
)
)
\sum \limits_i y_ilnh(\boldsymbol \theta,x_i)+(1-y_i)ln(1-h(\boldsymbol \theta,x_i))
i∑yilnh(θ,xi)+(1−yi)ln(1−h(θ,xi))
根据最大似然函数,逻辑斯谛回归的最优参数为:
a
r
g
m
a
x
θ
∑
i
y
i
∗
l
n
h
(
θ
,
x
i
)
+
(
1
−
y
i
)
l
∗
n
(
1
−
h
(
θ
,
x
i
)
)
\mathop{argmax} \limits_{\boldsymbol \theta} \sum \limits_i y_i*lnh(\boldsymbol \theta,x_i)+(1-y_i)l*n(1-h(\boldsymbol \theta,x_i))
θargmaxi∑yi∗lnh(θ,xi)+(1−yi)l∗n(1−h(θ,xi))
上文已经给出了逻辑斯谛回归分布函数的导数,可据此进行梯度下降迭代求解。
四、从信息熵的角度看逻辑回归
上文给出了逻辑回归中的对数似然函数:
∑
i
y
i
∗
l
n
h
(
θ
,
x
i
)
+
(
1
−
y
i
)
∗
l
n
(
1
−
h
(
θ
,
x
i
)
)
\sum \limits_i y_i*lnh(\boldsymbol \theta,x_i)+(1-y_i)*ln(1-h(\boldsymbol \theta,x_i))
i∑yi∗lnh(θ,xi)+(1−yi)∗ln(1−h(θ,xi))
观察其每个样本的对数似然函数
y
i
h
(
θ
,
x
i
)
+
(
1
−
y
i
)
(
1
−
h
(
θ
,
x
i
)
)
y_ih(\boldsymbol \theta,x_i)+(1-y_i)(1-h(\boldsymbol \theta,x_i))
yih(θ,xi)+(1−yi)(1−h(θ,xi)),其中的每个元素均为概率值。通过对比交叉熵公式(见理解机器学习中的熵),不难发现两者仅差一个负号。
也就是说,可以从从信息熵的角度来看待逻辑回归的目标函数:
(1)原数据满足0-1分布,对应对数似然函数中的
y
i
y_i
yi和
1
−
y
i
1-y_i
1−yi
(2)预测概率函数
h
(
θ
,
x
i
)
h(\boldsymbol \theta,x_i)
h(θ,xi),意味着用某种分布去为真实分布编码
(3)真实分布和编码分布间的交叉熵为
−
(
y
i
∗
l
n
h
(
θ
,
x
i
)
+
(
1
−
y
i
)
∗
l
n
(
1
−
h
(
θ
,
x
i
)
)
)
-( y_i*lnh(\boldsymbol \theta,x_i)+(1-y_i)*ln(1-h(\boldsymbol \theta,x_i)))
−(yi∗lnh(θ,xi)+(1−yi)∗ln(1−h(θ,xi)))
(4)为了使得编码分布尽可能的接近数据真实分布,交叉熵应当尽可能的小,即:
a
r
g
m
i
n
θ
∑
i
−
(
y
i
∗
l
n
h
(
θ
,
x
i
)
+
(
1
−
y
i
)
l
n
(
1
−
h
(
θ
,
x
i
)
)
)
\mathop{argmin} \limits_{\boldsymbol \theta} \sum \limits_i -(y_i*lnh(\boldsymbol \theta,x_i)+(1-y_i)ln(1-h(\boldsymbol \theta,x_i)))
θargmini∑−(yi∗lnh(θ,xi)+(1−yi)ln(1−h(θ,xi)))
这与上文根据MLE推导得到的最优函数是一致的。
因此逻辑回归中的损失函数实际上采用了交叉熵,这也是分类问题中一种常用的损失函数。
五、交叉熵损失函数与逻辑损失函数
前文提到最大化似然函数,相当于最小化交叉熵。而按照机器学习的习惯,常定义某个损失函数,通过最小化该损失函数取得相应的模型参数。对照来看,我们便可以定义如下的交叉熵损失函数:
L
(
x
,
y
;
θ
)
=
−
y
ln
h
(
θ
,
x
)
−
(
1
−
y
)
ln
(
1
−
h
(
θ
,
x
)
)
L(x,y;\boldsymbol \theta)=-y\ln h(\boldsymbol \theta,x)-(1-y)\ln (1-h(\boldsymbol \theta,x))
L(x,y;θ)=−ylnh(θ,x)−(1−y)ln(1−h(θ,x))
此时, y y y的取值为1(正例)或0(负例)。这似乎与我们常见的分类问题编码型式不太一致(一般,正例取1;负例取-1)
那么,我们不妨取 y y y的值为1(正例)或-1(负例),此时又该如何解释逻辑回归算法呢?
当 y y y取1时,此时对应的概率可写为 σ ( x ) = 1 1 + exp − θ T x \sigma(x)=\frac{1}{1+\exp^{-\theta^T x}} σ(x)=1+exp−θTx1当 y y y取-1时,此时对应的概率可写为 1 − σ ( x ) = σ ( − x ) = 1 1 + exp θ T x 1-\sigma(x)=\sigma(-x)=\frac{1}{1+\exp^{\theta^T x}} 1−σ(x)=σ(−x)=1+expθTx1上面第一个等式是因为logistic函数的奇对称性。
因此,无论 y y y取值为 ± \pm ± 1,其概率可统一写为: p ( x ; θ ) = σ ( y x ) = 1 1 + exp ( θ T y x ) p(x;\theta)=\sigma(yx)=\frac{1}{1+\exp(\theta^Tyx)} p(x;θ)=σ(yx)=1+exp(θTyx)1其对数似然函数为: L ( θ ) = − 1 n ∑ i ln ( 1 + exp ( − θ T y x ) ) L(\theta)=-\frac{1}{n}\sum_i \ln(1+\exp(-\theta^Tyx)) L(θ)=−n1i∑ln(1+exp(−θTyx))由此,可定义对应的损失函数,即逻辑损失函数: ln ( 1 + exp ( − θ T y x ) ) \ln(1+\exp(-\theta^Tyx)) ln(1+exp(−θTyx))
更一般的,该损失函数常被写为: ln ( 1 + e − y f ( x ) ) \ln(1+e^{-yf(x)}) ln(1+e−yf(x))
因此,在逻辑回归算法中,交叉熵损失函数和逻辑损失函数是统一的。
六、将逻辑回归推广到多分类问题
原始的逻辑回归只适用于二分类问题(因为假设样本满足0-1分布),但可以通过多种策略将其推广到多分类问题。
6.1 策略一:1VN模型
构造出
N
N
N个逻辑回归模型,每个模型解决某个分类和the rest分类构成的二分类问题,最后取最大值对应的结果。
这种策略是种普适策略,可用于各类二分类模型。
6.2 策略二:1V1模型
构造出
C
N
2
C_N^2
CN2个逻辑回归模型,每个模型解决某两个分类构成的二分类问题,最后取概率统计值最大的某个分类作为结果。
这种策略也是普适策略,可用于各类二分类模型。
6.3 策略三:将伯努利分布推广到广义伯努利分布
逻辑回归的概率学原理是样本满足伯努利分布,显然对于多分类问题,将其推广到广义伯努利分布,可得到多项逻辑斯谛回归:
P
(
y
=
1
)
=
1
1
+
∑
k
=
1
K
−
1
e
−
θ
k
x
P
(
y
=
k
)
=
e
−
θ
k
x
1
+
∑
k
=
1
K
−
1
e
−
θ
k
x
,
k
∈
(
2
,
3
,
.
.
.
K
)
P(y=1)=\frac{1}{1+\sum\limits_{k=1}^{K-1}e^{-\boldsymbol \theta_kx} }\\P(y=k)=\frac{e^{-\boldsymbol \theta_kx}}{1+\sum\limits_{k=1}^{K-1}e^{-\boldsymbol \theta_kx} },k\in(2,3,...K)
P(y=1)=1+k=1∑K−1e−θkx1P(y=k)=1+k=1∑K−1e−θkxe−θkx,k∈(2,3,...K)
对于多项逻辑斯谛回归,有几点有意思的结论:
(1)满足1VN策略思想,即对任意的
k
k
k,满足
P
(
y
=
k
)
+
P
(
y
≠
k
)
=
1
P(y=k)+P(y\not=k)=1
P(y=k)+P(y=k)=1
(2)任意两个分类概率间的对数几率仍为线性回归:
l
n
P
(
y
=
m
)
P
(
y
=
n
)
=
−
(
θ
m
−
θ
n
)
x
ln\frac{P(y=m)}{P(y=n)}=-(\boldsymbol \theta_m-\boldsymbol \theta_n)x
lnP(y=n)P(y=m)=−(θm−θn)x
七、总结
逻辑斯谛回归是一种基于“线性回归+非线性函数”的分类模型,其采用交叉熵损失函数。这种策略也在深度学习中广泛采用。