一、什么是逻辑回归
虽然名字是“回归”,但解决的是“分类”问题。
模型学习的是
E
[
y
∣
x
;
θ
]
E[y|x;\theta]
E[y∣x;θ],即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。
前提:逻辑回归假设数据服从伯努利分布,通过极大似然估计的方法,是用梯度下降法求解参数,最终达到二分类的目的。
逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层激活函数
σ
(
z
)
\sigma(z)
σ(z),即先把特征线性求和
z
=
w
T
x
z=w^Tx
z=wTx,然后使用函数
σ
(
z
)
\sigma(z)
σ(z)作为假设函数来预测。
σ
(
z
)
\sigma(z)
σ(z)可以将连续值映射到0 和1。
σ
(
z
)
\sigma(z)
σ(z)为sigmoid function。
其中,真实标签为
y
i
y_i
yi,特征向量
x
i
x_i
xi在参数
θ
\theta
θ下的预测值为
h
θ
(
x
i
)
h_\theta (x_i)
hθ(xi)。
下图为sigmoid公式、图像,注意取值范围 (0,1):
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z)=\frac{1}{1+e^{-z}}
σ(z)=1+e−z1
h
θ
(
x
)
=
σ
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta (x)=\sigma(\theta^Tx)\\ =\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=σ(θTx)=1+e−θTx1
下图为求导过程、导数图像注意取值范围 (0,0.25] :
σ
′
(
z
)
=
0
−
1
∗
(
1
+
e
−
z
)
′
(
1
+
e
−
z
)
2
=
−
e
−
z
∗
−
1
(
1
+
e
−
z
)
2
=
e
−
z
(
1
+
e
−
z
)
2
=
1
+
e
−
z
−
1
(
1
+
e
−
z
)
2
=
1
(
1
+
e
−
z
)
−
1
(
1
+
e
−
z
)
2
=
σ
(
z
)
(
1
−
σ
(
z
)
)
\sigma^{'}(z)=\frac{0-1*(1+e^{-z})^{'}}{(1+e^{-z})^2}\\ =\frac{-e^{-z}*-1}{(1+e^{-z})^2}\\=\frac{e^{-z}}{(1+e^{-z})^2}\\ =\frac{1+e^{-z}-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)20−1∗(1+e−z)′=(1+e−z)2−e−z∗−1=(1+e−z)2e−z=(1+e−z)21+e−z−1=(1+e−z)1−(1+e−z)21=σ(z)(1−σ(z))
二、逻辑回归求解0/1分类问题
模型学习的是
E
[
y
∣
x
;
θ
]
E[y|x;\theta]
E[y∣x;θ],即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。
逻辑回归的假设:
1、数据服从伯努利分布
2、模型的输出值是样本为正的概率
P
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
P(y=1|x;\theta)=h_\theta (x)=\frac{1}{1+e^{-\theta^Tx}}
P(y=1∣x;θ)=hθ(x)=1+e−θTx1
P
(
y
=
0
∣
x
;
θ
)
=
1
−
h
θ
(
x
)
=
1
−
1
1
+
e
−
θ
T
x
=
e
−
θ
T
x
1
+
e
−
θ
T
x
P(y=0|x;\theta)=1-h_\theta (x)=1-\frac{1}{1+e^{-\theta^Tx}}=\frac{e^{-\theta^Tx}}{1+e^{-\theta^Tx}}
P(y=0∣x;θ)=1−hθ(x)=1−1+e−θTx1=1+e−θTxe−θTx
P
(
y
∣
x
;
θ
)
=
(
h
θ
(
x
)
)
y
(
1
−
h
θ
(
x
)
)
1
−
y
P(y|x;\theta)=(h_\theta (x))^y(1-h_\theta (x))^{1-y}
P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y
面经:既然只需要得到0/1概率,为什么不使用简单的阶跃函数,而是使用sigmoid函数作为假设?
1、阶跃函数
使用阶跃函数将线性输出转化到[0,1]。
σ
(
z
)
=
{
0
,
z
<
0
0.5
,
z
=
0
1
,
z
>
0
\sigma(z)=\begin{cases}0,z<0\\0.5,z=0 \\1,z>0\end{cases}
σ(z)=⎩
⎨
⎧0,z<00.5,z=01,z>0
该分段函数是不连续、且不可导的。
2、sigmoid函数
连续且处处可导函数。
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z)=\frac{1}{1+e^{-z}}
σ(z)=1+e−z1
σ
′
(
z
)
=
=
σ
(
z
)
(
1
−
σ
(
z
)
)
\sigma^{'}(z)==\sigma(z)(1-\sigma(z))
σ′(z)==σ(z)(1−σ(z))
因为线性回归模型的预测值是一个实数,如果应用到0/1分类问题当中,就需要把线性回归模型的预测值和分类标签能够对应起来。
如果采用单位阶跃函数,是不连续且不可导的。(得到目标函数,没法对参数进行求导)
如果采用sigmoid函数,是连续且处处可导的。而且能够将线性输出转化到(0,1)区间。
三、求参数 θ \theta θ的方式
可以采用两种不同的角度:交叉熵/对数损失函数和极大似然估计。
二者本质上是等价的。损失函数的目标是最小化,似然函数则是最大化,二者仅相差一个符号。
1、交叉熵/对数损失函数
1)线性回归采用最小二乘法,基于MSE作为损失函数
L
(
θ
)
=
∑
i
=
1
n
(
θ
T
x
i
−
y
i
)
2
L(\theta)=\sum_{i=1}^{n}(\theta^\mathrm{T}x_i-y_i)^2
L(θ)=i=1∑n(θTxi−yi)2
可以直接求解析解或采用梯度下降法求解参数
θ
\theta
θ。
2)逻辑回归属于分类问题,需要依据先前算出来的概率来估计0/1类别
先前的假设2,输出的结果是正样本的概率。 由此根据不同类别,需要不同的损失函数。p越大说明y=1的概率越大,y=1的loss越小。使用log函数设计损失函数:
L
(
θ
)
=
{
−
l
o
g
(
p
)
,
y
=
1
−
l
o
g
(
1
−
p
)
,
y
=
0
L(\theta)=\begin{cases}-log(p),y=1\\-log(1-p),y=0 \end{cases}
L(θ)={−log(p),y=1−log(1−p),y=0
函数图像如下所示:
分为两段,使用起来不方便,将这两段进行合并,以下为单个样本的损失函数:
L
(
θ
)
=
−
y
l
o
g
(
p
)
−
(
1
−
y
)
l
o
g
(
1
−
p
)
L(\theta)=-ylog(p)-(1-y)log(1-p)
L(θ)=−ylog(p)−(1−y)log(1−p)
若数据集中有m个样本,则总体损失函数(也就是交叉熵损失函数)为:
L
(
θ
)
=
−
1
m
∑
i
=
1
m
y
(
i
)
l
o
g
(
p
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
p
(
i
)
)
L(\theta)=-\frac{1}{m}\sum_{i=1}^my^{(i)}log(p^{(i)})+(1-y^{(i)})log(1-p^{(i)})
L(θ)=−m1i=1∑my(i)log(p(i))+(1−y(i))log(1−p(i))
目标就是找到一组
θ
\theta
θ,使得上面的
L
(
θ
)
L(\theta)
L(θ)最小。这个函数是凸函数,但是没有公式解,只能通过梯度下降法进行求解。
2、极大似然法估计参数 θ \theta θ
极大似然估计是一种参数估计的方法。已知某个事件已经发生,求导致该事件发生的概率最大的参数。
核心思想:找到参数 θ 的一个估计值,使得当前样本出现的可能性最大。即联合概率最大,需要写出联合概率密度函数,即似然函数,求似然函数最大时参数的值。
对于数据集
{
(
x
i
,
y
i
)
}
i
=
1
m
\{(x_i,y_i)\}^m_{i=1}
{(xi,yi)}i=1m,一共有m个样本。即令每个样本属于其真实标记的概率越大越好。
*极大似然估计基本步骤
1)写出似然函数(联合概率密度)
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) L(\theta)=\prod\limits_{i=1}^mp(y^{(i)}|x^{(i)};\theta) L(θ)=i=1∏mp(y(i)∣x(i);θ)
2)取对数(连乘符号变成连加符号,容易求导)
l n L ( θ ) = l n ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∑ i = 1 m l n p ( y ( i ) ∣ x ( i ) ; θ ) lnL(\theta)=ln\prod\limits_{i=1}^mp(y^{(i)}|x^{(i)};\theta) \\=\sum\limits_{i=1}^mlnp(y^{(i)}|x^{(i)};\theta) lnL(θ)=lni=1∏mp(y(i)∣x(i);θ)=i=1∑mlnp(y(i)∣x(i);θ)
3)对参数 θ \theta θ求偏导数
∂ ∂ θ l n L ( θ ) = 0 ? \frac{\partial}{\partial \theta} lnL(\theta)=0? ∂θ∂lnL(θ)=0?有解则为所求的参数 θ \theta θ。
*极大似然估计具体求解过程
1)似然函数
L ( θ ) = P ( y ∣ x ; θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta)=P(y|x;\theta)\\ =\prod\limits_{i=1}^mp(y^{(i)}|x^{(i)};\theta)\\ =\prod\limits_{i=1}^m(h_\theta (x^{(i)}))^{y^{(i)}}(1-h_\theta (x^{(i)}))^{1-y^{(i)}} L(θ)=P(y∣x;θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)
2)log似然函数
l o g L ( θ ) = ∑ i = 1 m y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) logL(\theta)=\sum\limits_{i=1}^m{y^{(i)}}logh_\theta (x^{(i)})+({1-y^{(i)}})log(1-h_\theta (x^{(i)})) logL(θ)=i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
3)极大似然函数求最优解
θ
^
=
a
r
g
m
a
x
l
o
g
L
(
θ
)
=
a
r
g
m
a
x
∑
i
=
1
m
y
(
i
)
(
l
o
g
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
\hat{\theta}=argmax logL(\theta)=argmax\sum\limits_{i=1}^m{y^{(i)}}(logh_\theta (x^{(i)}))+({1-y^{(i)}})log(1-h_\theta (x^{(i)}))
θ^=argmaxlogL(θ)=argmaxi=1∑my(i)(loghθ(x(i)))+(1−y(i))log(1−hθ(x(i)))
可以看到,极大似然估计求解的是最大值,而交叉熵损失函数(对数损失函数求解的是最小值)。二者本质上并无差别。