【机器学习】Logistic Regression逻辑回归算法
一、逻辑回归的概念
逻辑回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,经济预测等领域。逻辑回归从本质来说属于二分类问题,是基于Sigmoid函数(又叫“S型函数”)的有监督二类分类模型。
二、Sigmoid函数
Sigmoid函数公式为:
g
(
z
)
=
1
1
+
e
−
z
\mathbf{g}(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1其导数形式为:(注意,导数形式在后面会被用到)
g
′
(
z
)
=
d
d
z
1
1
+
e
−
z
=
1
(
1
+
e
−
z
)
2
(
e
−
z
)
=
1
+
e
−
z
−
1
(
1
+
e
−
z
)
2
=
1
(
1
+
e
−
z
)
(
1
−
1
(
1
+
e
−
z
)
)
=
g
(
z
)
(
1
−
g
(
z
)
)
\begin{aligned} \mathbf{g}'(z)&=\frac{d}{dz}\frac{1}{1+e^{-z}}\\ &=\frac{1}{(1+e^{-z})^2}(e^{-z})\\ &=\frac{1+e^{-z}-1}{(1+e^{-z})^2}\\ &=\frac{1}{(1+e^{-z})}(1-\frac{1}{(1+e^{-z})})\\ &=\mathbf{g}(z)(1-\mathbf{g}(z)) \end{aligned}
g′(z)=dzd1+e−z1=(1+e−z)21(e−z)=(1+e−z)21+e−z−1=(1+e−z)1(1−(1+e−z)1)=g(z)(1−g(z))Sigmoid函数其图像如下所示,其取值范围被压缩到0到1之间。
我们知道有监督分类问题需要有带类别标记的训练样本,
g
(
z
)
\mathbf{g}(z)
g(z)中的
z
z
z就对应训练集中某个样本的信息。 而样本信息通常用一系列特征的线性组合来表示,即
z
=
x
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
z=x_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n
z=x0+θ1x1+θ2x2+⋯+θnxn其中
x
x
x表示
n
n
n个特征,
θ
\theta
θ是每个特征的权重,代表对应特征的重要程度,
x
0
x_0
x0是偏移,上式通常被写成向量形式:
θ
T
x
\theta^Tx
θTx(其中
x
0
x_0
x0对应的
θ
\theta
θ等于1)。那么Sigmoid函数就可以相应地写为如下的形式:
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=\mathbf{g}(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=g(θTx)=1+e−θTx1假设我们知道了某个样本对应的特征取值和权重参数,那么只要将其带入上式即可得到一个0到1之间的数,通常认为
h
θ
(
x
)
≥
0.5
h_\theta(x)\geq0.5
hθ(x)≥0.5则属于正类别,反之属于负类别,即这个数其实反映了该样本属于正类别的概率。现在的问题是,我们手上有了训练集,即样本的都是已知的,而模型参数是未知的。我们需要通过训练集来确定未知的值。一旦被确定,每当面临新样本时,我们就可以将其对应的
x
x
x扔到
h
θ
(
x
)
h_\theta(x)
hθ(x)中,根据结果是否大于0.5,轻松加愉快地得出新样本的类别了。
三、逻辑回归为什么要用sigmoid函数而不是用其他呢?
首先需要了解几个知识点:
A.指数族分布
指数族分布下面的公式,即:
p
(
y
;
η
)
=
b
(
y
)
e
η
T
(
y
)
+
α
(
η
)
p(y;\eta)=b(y)e^{\eta T(y)+\alpha(\eta)}
p(y;η)=b(y)eηT(y)+α(η)其中,
η
\eta
η为自然参数,
T
(
y
)
T(y)
T(y)为充分统计量,通常
T
(
y
)
=
y
T(y)=y
T(y)=y,
α
(
η
)
\alpha(\eta)
α(η)为正则化项。
B.广义线性模型
满足下面三个假设的模型成为广义线性模型:
- 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^Tx η=θTx
因为逻辑回归假设数据服从伯努利分布,我们用一个简单例子来介绍伯努利分布:抛硬币,一枚硬币抛中正面的概率为
p
p
p,那么反面的概率则为
1
−
p
1-p
1−p。那么伯努利分布的概率质量函数(PMF)为:
f
(
y
;
p
)
=
{
p
,
y=1
1
−
p
,
y=0
f(y;p)=\begin{cases} p, & \text {y=1} \\ 1-p, &\text{y=0} \end{cases}
f(y;p)={p,1−p,y=1y=0分段函数比较简单易懂,但是对于后面的推导比较麻烦,于是有:
f
(
y
;
p
)
=
p
y
⋅
(
1
−
p
)
1
−
y
,
y
∈
{
0
,
1
}
f(y;p)=p^y\cdot (1-p)^{1-y},\quad y\in\{0,1\}
f(y;p)=py⋅(1−p)1−y,y∈{0,1}对上式进行
log
\log
log变换操作:
f
(
y
;
p
)
=
p
y
⋅
(
1
−
p
)
1
−
y
=
e
x
p
(
y
log
(
p
)
+
(
1
−
y
)
log
(
1
−
p
)
)
=
e
x
p
(
y
log
(
p
)
+
log
(
1
−
p
)
−
y
log
(
1
−
p
)
)
=
e
x
p
(
y
log
(
p
1
−
p
)
+
log
(
1
−
p
)
)
\begin{aligned} f(y;p)&=p^y\cdot (1-p)^{1-y}\\ &=exp(y\log(p)+(1-y)\log(1-p))\\ &=exp(y\log(p)+\log(1-p)-y\log(1-p))\\ &=exp(y\log(\frac{p}{1-p})+\log(1-p))\\ \end{aligned}
f(y;p)=py⋅(1−p)1−y=exp(ylog(p)+(1−y)log(1−p))=exp(ylog(p)+log(1−p)−ylog(1−p))=exp(ylog(1−pp)+log(1−p))其中,令
{
η
=
log
(
p
1
−
p
)
⇒
p
=
1
1
+
e
−
η
α
(
η
)
=
−
log
(
1
−
p
)
=
log
(
1
+
e
η
)
b
(
y
)
=
1
\begin{cases} \eta=\log(\frac{p}{1-p})\quad \Rightarrow p=\frac{1}{1+e^{-\eta}}\\ \alpha(\eta)=-\log(1-p)=\log(1+e^\eta)\\ b(y)=1 \end{cases}
⎩⎪⎨⎪⎧η=log(1−pp)⇒p=1+e−η1α(η)=−log(1−p)=log(1+eη)b(y)=1即可以得出伯努利分布属于指数族分布。
即伯努利分布满足广义线性模型的第一个假设,下面利用广义线性模型后面两个假设得到:
h
θ
(
x
)
=
E
(
y
∣
x
;
θ
)
=
p
=
1
1
+
e
−
η
=
1
1
+
e
−
θ
T
x
h_\theta(x)=E(y|x;\theta)=p=\frac{1}{1+e^{-\eta}}=\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=E(y∣x;θ)=p=1+e−η1=1+e−θTx1
四、目标函数
假设训练集中有
m
m
m个样本,每个样本属于正类别的概率为
h
θ
(
x
)
h_\theta(x)
hθ(x),属于负类别的概率就是
1
−
h
θ
(
x
)
1-h_\theta(x)
1−hθ(x),在训练过程中,我们应该尽可能地使整个训练集的分类结果与这
m
m
m个样本的类别标记尽可能地一致。换句话说,我们要使训练样本集分类正确的似然函数最大(每个样本相互独立),而我们可以很容易地写出如下的似然函数:
L
(
θ
)
=
∏
i
=
1
m
h
θ
(
x
i
)
y
(
i
)
(
1
−
h
θ
(
x
i
)
)
1
−
y
(
i
)
L(\theta)=\prod_{i=1}^m h_\theta(x^i)^{y(i)}(1-h_\theta(x^i))^{1-y(i)}
L(θ)=i=1∏mhθ(xi)y(i)(1−hθ(xi))1−y(i)其中
y
(
i
)
y(i)
y(i)是训练集中第
i
i
i个样本已经被标记好的类别,若
y
(
i
)
y(i)
y(i)为1.则上式的前半部分起作用,反之后半部分起作用。由于对
L
(
θ
)
L(\theta)
L(θ)整体求
log
\log
log,其极值点保持不变,因此
L
(
θ
)
L(\theta)
L(θ)可以简化为:
l
(
θ
)
=
∏
i
=
1
m
y
(
i
)
log
(
h
θ
(
x
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
i
)
)
l(\theta)=\prod_{i=1}^m y^{(i)}\log(h_\theta(x^i))+(1-y^{(i)})\log(1-h_\theta(x^i))
l(θ)=i=1∏my(i)log(hθ(xi))+(1−y(i))log(1−hθ(xi))接下来的任务是求相应
θ
\theta
θ的值,使得
l
(
θ
)
l(\theta)
l(θ)取最大值。如果
l
(
θ
)
l(\theta)
l(θ)对整体取负号即为Logistic回归的损失函数(loss function),相应地,应该求使
−
l
(
θ
)
-l(\theta)
−l(θ)取最小值的
θ
\theta
θ。
五、求解过程与正则化
一般采用梯度下降法进行求解,这里不再细说。
在实际应用中,为了防止过拟合,使得模型具有较强的泛化能力,往往还需要在目标函数中加入正则项。在逻辑回归的实际应用中,L1正则应用较为广泛,原因是在面临诸如广告系统等实际应用的场景,特征的维度往往达到百万级甚至上亿,而L1正则会产生稀疏模型,在避免过拟合的同时起到了特征选择的作用。
六、总结
优点:
- 简单易于实现。
- 逻辑回归可以输出一个[0,1]之间的浮点数,也就是不仅可以产生分类的类别,同时产生属于该类别的概率。
- 逻辑回归是连续可导的,易于最优化求解。
缺点:
- 容易过拟合
- 原始的逻辑回归只能处理两分类问题,且必须线性可分。
七、拓展
为什么逻辑回归使用交叉熵损失函数而不用均方误差?
参考链接: 为什么LR模型损失函数使用交叉熵不用均方差?.
如有错误,欢迎批评指出,谢谢!