【机器学习】Logistic Regression逻辑回归算法

一、逻辑回归的概念

逻辑回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,经济预测等领域。逻辑回归从本质来说属于二分类问题,是基于Sigmoid函数(又叫“S型函数”)的有监督二类分类模型。

二、Sigmoid函数

Sigmoid函数公式为:
g(z)=11+ez \mathbf{g}(z)=\frac{1}{1+e^{-z}}
其导数形式为:(注意,导数形式在后面会被用到)
g(z)=ddz11+ez=1(1+ez)2(ez)=1+ez1(1+ez)2=1(1+ez)(11(1+ez))=g(z)(1g(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}
Sigmoid函数其图像如下所示,其取值范围被压缩到0到1之间。【机器学习】Logistic Regression逻辑回归算法
我们知道有监督分类问题需要有带类别标记的训练样本,g(z)\mathbf{g}(z)中的zz就对应训练集中某个样本的信息。 而样本信息通常用一系列特征的线性组合来表示,即
z=x0+θ1x1+θ2x2++θnxn z=x_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n
其中xx表示nn个特征,θ\theta是每个特征的权重,代表对应特征的重要程度,x0x_0是偏移,上式通常被写成向量形式:θTx\theta^Tx(其中x0x_0对应的θ\theta等于1)。那么Sigmoid函数就可以相应地写为如下的形式:
hθ(x)=g(θTx)=11+eθTx h_\theta(x)=\mathbf{g}(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}
假设我们知道了某个样本对应的特征取值和权重参数,那么只要将其带入上式即可得到一个0到1之间的数,通常认为hθ(x)0.5h_\theta(x)\geq0.5则属于正类别,反之属于负类别,即这个数其实反映了该样本属于正类别的概率。现在的问题是,我们手上有了训练集,即样本的都是已知的,而模型参数是未知的。我们需要通过训练集来确定未知的值。一旦被确定,每当面临新样本时,我们就可以将其对应的xx扔到hθ(x)h_\theta(x)中,根据结果是否大于0.5,轻松加愉快地得出新样本的类别了。

三、逻辑回归为什么要用sigmoid函数而不是用其他呢?

首先需要了解几个知识点:
A.指数族分布
指数族分布下面的公式,即:
p(y;η)=b(y)eηT(y)+α(η) p(y;\eta)=b(y)e^{\eta T(y)+\alpha(\eta)}
其中,η\eta为自然参数,T(y)T(y)为充分统计量,通常T(y)=yT(y)=yα(η)\alpha(\eta)为正则化项。

B.广义线性模型
满足下面三个假设的模型成为广义线性模型:

  1. yx;θy|x;\theta 满足一个以η\eta为参数的指数族分布
  2. 给定xx,我们目标是预测yy的期望值,即h(x)=E(yx)h(x)=E(y|x)
  3. η=θTx\eta=\theta^Tx

因为逻辑回归假设数据服从伯努利分布,我们用一个简单例子来介绍伯努利分布:抛硬币,一枚硬币抛中正面的概率为pp,那么反面的概率则为1p1-p。那么伯努利分布的概率质量函数(PMF)为:
f(y;p)={p,y=11p,y=0 f(y;p)=\begin{cases} p, & \text {y=1} \\ 1-p, &\text{y=0} \end{cases}
分段函数比较简单易懂,但是对于后面的推导比较麻烦,于是有:
f(y;p)=py(1p)1y,y{0,1} f(y;p)=p^y\cdot (1-p)^{1-y},\quad y\in\{0,1\}
对上式进行log\log变换操作:
f(y;p)=py(1p)1y=exp(ylog(p)+(1y)log(1p))=exp(ylog(p)+log(1p)ylog(1p))=exp(ylog(p1p)+log(1p)) \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}
其中,令
{η=log(p1p)p=11+eηα(η)=log(1p)=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}
即可以得出伯努利分布属于指数族分布。

即伯努利分布满足广义线性模型的第一个假设,下面利用广义线性模型后面两个假设得到:
hθ(x)=E(yx;θ)=p=11+eη=11+eθTx h_\theta(x)=E(y|x;\theta)=p=\frac{1}{1+e^{-\eta}}=\frac{1}{1+e^{-\theta^Tx}}


四、目标函数

假设训练集中有mm个样本,每个样本属于正类别的概率为hθ(x)h_\theta(x),属于负类别的概率就是1hθ(x)1-h_\theta(x),在训练过程中,我们应该尽可能地使整个训练集的分类结果与这mm个样本的类别标记尽可能地一致。换句话说,我们要使训练样本集分类正确的似然函数最大(每个样本相互独立),而我们可以很容易地写出如下的似然函数:
L(θ)=i=1mhθ(xi)y(i)(1hθ(xi))1y(i) L(\theta)=\prod_{i=1}^m h_\theta(x^i)^{y(i)}(1-h_\theta(x^i))^{1-y(i)}
其中y(i)y(i)是训练集中第ii个样本已经被标记好的类别,若y(i)y(i)为1.则上式的前半部分起作用,反之后半部分起作用。由于对L(θ)L(\theta)整体求log\log,其极值点保持不变,因此L(θ)L(\theta)可以简化为:
l(θ)=i=1my(i)log(hθ(xi))+(1y(i))log(1hθ(xi)) l(\theta)=\prod_{i=1}^m y^{(i)}\log(h_\theta(x^i))+(1-y^{(i)})\log(1-h_\theta(x^i))
接下来的任务是求相应θ\theta的值,使得l(θ)l(\theta)取最大值。如果l(θ)l(\theta)对整体取负号即为Logistic回归的损失函数(loss function),相应地,应该求使l(θ)-l(\theta)取最小值的θ\theta

五、求解过程与正则化

一般采用梯度下降法进行求解,这里不再细说。

在实际应用中,为了防止过拟合,使得模型具有较强的泛化能力,往往还需要在目标函数中加入正则项。在逻辑回归的实际应用中,L1正则应用较为广泛,原因是在面临诸如广告系统等实际应用的场景,特征的维度往往达到百万级甚至上亿,而L1正则会产生稀疏模型,在避免过拟合的同时起到了特征选择的作用。

六、总结

优点:

  1. 简单易于实现。
  2. 逻辑回归可以输出一个[0,1]之间的浮点数,也就是不仅可以产生分类的类别,同时产生属于该类别的概率。
  3. 逻辑回归是连续可导的,易于最优化求解。

缺点:

  1. 容易过拟合
  2. 原始的逻辑回归只能处理两分类问题,且必须线性可分。

七、拓展

为什么逻辑回归使用交叉熵损失函数而不用均方误差?
参考链接: 为什么LR模型损失函数使用交叉熵不用均方差?.



如有错误,欢迎批评指出,谢谢!