算法流程
逻辑回归(Logistics Regression)虽然名为回归,但大部分的场景都用来做分类任务,其与线性回归等一系列回归任务仅存在因变量分布的区别,这点会在【广义线性模型】章节详述。
- 回归问题的常规步骤
- 构造假设预测函数(hypothesis)
- 构造损失函数(loss)
- 寻找损失函数最小优化算法(optimization)
可以对于LR套用常规步骤。
- 构造假设预测函数
对于LR来说,假设因变量( x x x)的分布是二项分布的,因此在线性回归的的基础上利用了sigmoid函数对其进行了变换,至于为何会使用sigmoid函数,这点会在【LR使用Sigmoid函数的原因】章节详述。
sigmoid函数表达式为:
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac 1 {1+e^{-z}}
g(z)=1+e−z1
其函数图像有:
可以看出sigmoid函数可以将数值挤压到[0,1]之间,可以视为取1的概率使用。对于线性回归,有以下表达式
θ
0
+
θ
1
x
1
+
,
.
.
.
,
+
θ
n
x
x
=
∑
i
+
1
n
θ
i
x
i
=
θ
T
x
\theta_0+\theta_1x_1+,...,+\theta_nx_x=\sum_{i+1}^n\theta_ix_i=\theta^T \Bbb x
θ0+θ1x1+,...,+θnxx=i+1∑nθixi=θTx
构造假设预测函数有
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_{\theta}(x)=g(\theta^T \Bbb x)=\frac 1 {1 + e^{-\theta^T \Bbb x}}
hθ(x)=g(θTx)=1+e−θTx1
由于
h
θ
(
x
)
h_{\theta}(x)
hθ(x)经过sigmoid后的输出可以视为取1的概率,因此有
{
P
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
P
(
y
=
0
∣
x
;
θ
)
=
1
−
h
θ
(
x
)
\begin{cases}{P(y=1|x;\theta)=h_{\theta}(x)}\\{P(y=0|x;\theta)=1-h_{\theta}(x)}\end{cases}
{P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)
到此,逻辑回归的目标即预测
P
P
P
- 构造损失函数
上式可以合写成损失函数形式,这里只有经验风险最小而没有结构风险最小(即正则项)
l
o
s
s
(
x
,
y
)
=
h
θ
(
x
)
y
∗
(
1
−
h
θ
(
x
)
)
1
−
y
loss(x,y) = h_{\theta}(x)^y*(1-h_{\theta}(x))^{1-y}
loss(x,y)=hθ(x)y∗(1−hθ(x))1−y
- 损失函数优化方法
对于LR的损失函数使用极大似然估计进行优化,损失函数的似然函数为
L
(
θ
)
=
∏
i
=
1
m
h
θ
(
x
i
)
y
i
∗
(
1
−
h
θ
(
x
i
)
)
1
−
y
i
L(\theta)=\prod_{i=1}^mh_{\theta}(x_i)^{y_i}*(1-h_{\theta}(x_i))^{1-y_i}
L(θ)=i=1∏mhθ(xi)yi∗(1−hθ(xi))1−yi
两边去对数有对数似然函数为
l
(
θ
)
=
L
(
θ
)
=
∑
i
=
1
m
y
i
l
o
g
h
θ
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
(
x
i
)
)
l(\theta)=L(\theta)=\sum_{i=1}^m y_i logh_{\theta}(x_i)+(1-y_i)log(1-h_{\theta}(x_i))
l(θ)=L(θ)=i=1∑myiloghθ(xi)+(1−yi)log(1−hθ(xi))
这里要求
l
(
θ
)
l(\theta)
l(θ)取最大时的
θ
\theta
θ,利用梯度上升求法,做一个简单变换有
J
(
θ
)
=
−
1
m
l
(
θ
)
J(\theta)=-\frac 1 m l(\theta)
J(θ)=−m1l(θ)
对于
J
(
θ
)
J(\theta)
J(θ)即求其在最小值时的
θ
\theta
θ,采用梯度下降法迭代,迭代公式为
θ
j
:
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
\theta_j:=\theta_j-\alpha \frac {\partial J(\theta)} {\partial \theta_j}
θj:=θj−α∂θj∂J(θ)
其中
α
\alpha
α为步长,
∂
J
(
θ
)
∂
θ
j
\frac {\partial J(\theta)} {\partial \theta_j}
∂θj∂J(θ)推导结果如下
故
θ
\theta
θ的更新过程可以写成:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
x
i
j
\theta_j:=\theta_j-\alpha \frac 1 m \sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^j
θj:=θj−αm1i=1∑m(hθ(xi)−yi)xij
其中
i
i
i为样本的序号,
j
j
j为特征的序号
正则化
LR可以使用L1正则和L2正则,加入正则项后损失函数为
J
(
θ
)
=
−
1
m
l
(
θ
)
+
α
∑
j
=
1
n
∣
θ
j
∣
+
λ
∑
j
=
1
n
θ
j
2
J(\theta)=-\frac 1 ml(\theta)+\alpha\sum_{j=1}^n|\theta_j|+\lambda\sum_{j=1}^n \theta_j^2
J(θ)=−m1l(θ)+αj=1∑n∣θj∣+λj=1∑nθj2
L1和L2正则的原理都是对过大的系数进行惩罚。
- L1为什么能做特征选择,L2能够平滑特征?
为什么L1稀疏,L2平滑?,这是一个常见问题,从数学角度,L1正则参数的导数要么是1要么是-1,那么参数w每次迭代都以固定的步长增大或减小,有可能减小到0,而L2正则的导数为w,wi=wi-η*wi,以一个等比例的尺度迭代,是不会为0的。从几何角度,优化函数的等值线与L1正则项的等值线交点会更多的出现在坐标轴上,使得某维的特征权重为0,而L2正则的等值线与之的交点更多的在象限之中。还可以参考机器学习中正则化项L1和L2的直观理解
LR使用Sigmoid函数的原因
想要回答这个问题,首先先要了解两个概念,即【指数族分布】和【广义线性模型】。
- 指数族分布
指数族分布指满足以下形式的一类函数,即:
p
(
y
;
η
)
=
b
(
y
)
e
η
T
(
y
)
−
a
(
η
)
p(y;\eta)=b(y)e^{\eta T(y)-a(\eta)}
p(y;η)=b(y)eηT(y)−a(η)
其中
η
\eta
η为自然参数,
T
(
y
)
T(y)
T(y)为充分统计量,通常
T
(
y
)
=
y
T(y)=y
T(y)=y,
a
(
η
)
a(\eta)
a(η)为正则化项。
- 广义线性模型
Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。
这一家族中的模型形式基本上都差不多,不同的就是因变量不同:
如果是连续的,就是多重线性回归;
如果是二项分布,就是Logistic回归;
如果是Poisson分布,就是Poisson回归;
广义线性模型的一般性定义为满足一下三个假设:
- y ∣ x ; θ y|x;\theta y∣x;θ满足一个以 η \eta η为参数的指数族分布
- 给定 x x x,目标是预测 y y y的期望值,即 h ( x ) = E ( y ∣ x ) h(x)=E(y|x) h(x)=E(y∣x)
- η = θ T x \eta=\theta^T\Bbb x η=θTx
- 使用Sigmoid的原因
在二分类中,假设
y
y
y服从伯努利二项分布,有
KaTeX parse error: No such environment: eqnarray at position 8: \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲p(y|\theta)&=&\…
根据指数族分布的表达式
p
(
y
;
η
)
=
b
(
y
)
e
η
T
(
y
)
−
a
(
η
)
p(y;\eta)=b(y)e^{\eta T(y)-a(\eta)}
p(y;η)=b(y)eηT(y)−a(η)令
{
η
=
l
o
g
ϕ
1
−
ϕ
=
>
ϕ
=
1
1
+
e
−
η
a
(
η
)
=
−
l
o
g
(
1
−
ϕ
)
=
l
o
g
(
1
+
e
η
)
b
(
y
)
=
1
\begin{cases}\eta=log\frac \phi {1-\phi} => \phi=\frac 1 {1+e^{-\eta}}\\a(\eta)=-log(1-\phi)=log(1+e^\eta)\\b(y)=1\end{cases}
⎩⎪⎨⎪⎧η=log1−ϕϕ=>ϕ=1+e−η1a(η)=−log(1−ϕ)=log(1+eη)b(y)=1
因此伯努利分布属于指数族分布。因此伯努利二项分布满足了广义线性模型的第一个假设:
y
∣
x
;
θ
y|x;\theta
y∣x;θ满足一个以
η
\eta
η为参数的指数族分布。
对于第二个假设:给定
x
x
x,目标是预测
y
y
y的期望值,即
h
(
x
)
=
E
(
y
∣
x
)
h(x)=E(y|x)
h(x)=E(y∣x),对于伯努利二项分布有
h
θ
(
x
)
=
E
(
y
∣
x
)
=
ϕ
h_\theta(x)=E(y|x)=\phi
hθ(x)=E(y∣x)=ϕ,带入上式
ϕ
\phi
ϕ的表达式有
h
θ
(
x
)
=
E
(
y
∣
x
)
=
ϕ
=
1
1
+
e
−
η
h_\theta(x)=E(y|x)=\phi=\frac 1 {1+e^{-\eta}}
hθ(x)=E(y∣x)=ϕ=1+e−η1
对于第三个假设:
η
=
θ
T
x
\eta=\theta^T\Bbb x
η=θTx,带入上式有
h
θ
(
x
)
=
1
1
+
e
−
η
=
1
1
+
e
−
θ
T
x
=
S
i
g
m
o
i
d
h_\theta(x)=\frac 1 {1+e^{-\eta}}=\frac 1 {1+e^{-\theta^T\Bbb x}}=Sigmoid
hθ(x)=1+e−η1=1+e−θTx1=Sigmoid
因此当使用Sigmoid函数做预测函数时LR的预测函数同时满足指数族分布与广义线性模型,且预测的结果即为后验概率
p
(
y
=
1
∣
x
)
p(y=1|x)
p(y=1∣x)。
LR的输出是否为真实的概率
从指数族分布和广义线性模型的角度看LR的训练过程是这样的:
-
给定 x \Bbb x x,根据 θ T x \theta^T \Bbb x θTx计算 η \eta η(即预测值)
-
根据 η \eta η通过预测函数sigmoid算出 ϕ \phi ϕ(即经过sigmoid后的输出值), ϕ \phi ϕ既是伯努利分布的唯一参数,也是该分布的期望,所以将 ϕ \phi ϕ作为预测值。
-
通过loss function计算 ϕ \phi ϕ与真实的标签 y y y之间的误差loss。
-
通过优化方法来更新 θ \theta θ ,降低loss。
从以上步骤中可以发现将 ϕ \phi ϕ作为后验概率 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x)需要满足两个重要假设:
- y y y是一个服从伯努利二项分布的二值随机变量
- η \eta η和 x x x之间存在线性关系,即可以用 η = θ T x \eta=\theta^T\Bbb x η=θTx表示
如果以上两个假设满足,则LR的输出(对于其他模型也是一样)是真实的后验概率,但是实际情况不一定严格满足,当然,我们在建模的时候就已经率先假设了这两个条件作为大前提,故而输出更多的可以当做为置信度。