【机器学习基础算法系列】【壹】全面详解逻辑回归LR(Logistics Regression)

算法流程

逻辑回归(Logistics Regression)虽然名为回归,但大部分的场景都用来做分类任务,其与线性回归等一系列回归任务仅存在因变量分布的区别,这点会在【广义线性模型】章节详述。

  • 回归问题的常规步骤
    1. 构造假设预测函数(hypothesis)
    2. 构造损失函数(loss)
    3. 寻找损失函数最小优化算法(optimization)

可以对于LR套用常规步骤。

  • 构造假设预测函数

对于LR来说,假设因变量(xx)的分布是二项分布的,因此在线性回归的的基础上利用了sigmoid函数对其进行了变换,至于为何会使用sigmoid函数,这点会在【LR使用Sigmoid函数的原因】章节详述。

sigmoid函数表达式为:
g(z)=11+ez g(z)=\frac 1 {1+e^{-z}}
其函数图像有:
【机器学习基础算法系列】【壹】全面详解逻辑回归LR(Logistics Regression)
可以看出sigmoid函数可以将数值挤压到[0,1]之间,可以视为取1的概率使用。对于线性回归,有以下表达式
θ0+θ1x1+,...,+θnxx=i+1nθixi=θTx \theta_0+\theta_1x_1+,...,+\theta_nx_x=\sum_{i+1}^n\theta_ix_i=\theta^T \Bbb x
构造假设预测函数有
hθ(x)=g(θTx)=11+eθTx h_{\theta}(x)=g(\theta^T \Bbb x)=\frac 1 {1 + e^{-\theta^T \Bbb x}}
由于hθ(x)h_{\theta}(x)经过sigmoid后的输出可以视为取1的概率,因此有
{P(y=1x;θ)=hθ(x)P(y=0x;θ)=1hθ(x) \begin{cases}{P(y=1|x;\theta)=h_{\theta}(x)}\\{P(y=0|x;\theta)=1-h_{\theta}(x)}\end{cases}
到此,逻辑回归的目标即预测PP

  • 构造损失函数

上式可以合写成损失函数形式,这里只有经验风险最小而没有结构风险最小(即正则项)
loss(x,y)=hθ(x)y(1hθ(x))1y loss(x,y) = h_{\theta}(x)^y*(1-h_{\theta}(x))^{1-y}

  • 损失函数优化方法

对于LR的损失函数使用极大似然估计进行优化,损失函数的似然函数为
L(θ)=i=1mhθ(xi)yi(1hθ(xi))1yi L(\theta)=\prod_{i=1}^mh_{\theta}(x_i)^{y_i}*(1-h_{\theta}(x_i))^{1-y_i}
两边去对数有对数似然函数为
l(θ)=L(θ)=i=1myiloghθ(xi)+(1yi)log(1hθ(xi)) 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(\theta)取最大时的θ\theta,利用梯度上升求法,做一个简单变换有
J(θ)=1ml(θ) J(\theta)=-\frac 1 m l(\theta)
对于J(θ)J(\theta)即求其在最小值时的θ\theta,采用梯度下降法迭代,迭代公式为
θj:=θjαJ(θ)θj \theta_j:=\theta_j-\alpha \frac {\partial J(\theta)} {\partial \theta_j}
其中α\alpha为步长,J(θ)θj\frac {\partial J(\theta)} {\partial \theta_j}推导结果如下

【机器学习基础算法系列】【壹】全面详解逻辑回归LR(Logistics Regression)
θ\theta的更新过程可以写成:
θj:=θjα1mi=1m(hθ(xi)yi)xij \theta_j:=\theta_j-\alpha \frac 1 m \sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^j
其中ii为样本的序号,jj为特征的序号


正则化

LR可以使用L1正则和L2正则,加入正则项后损失函数为
J(θ)=1ml(θ)+αj=1nθj+λj=1nθj2 J(\theta)=-\frac 1 ml(\theta)+\alpha\sum_{j=1}^n|\theta_j|+\lambda\sum_{j=1}^n \theta_j^2
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)}
其中η\eta为自然参数,T(y)T(y)为充分统计量,通常T(y)=yT(y)=ya(η)a(\eta)为正则化项。

  • 广义线性模型

Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。

这一家族中的模型形式基本上都差不多,不同的就是因变量不同:

如果是连续的,就是多重线性回归;

如果是二项分布,就是Logistic回归;

如果是Poisson分布,就是Poisson回归;

广义线性模型的一般性定义为满足一下三个假设:

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

在二分类中,假设yy服从伯努利二项分布,有
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)}
{η=logϕ1ϕ=>ϕ=11+eηa(η)=log(1ϕ)=log(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}
因此伯努利分布属于指数族分布。因此伯努利二项分布满足了广义线性模型的第一个假设:yx;θy|x;\theta满足一个以η\eta为参数的指数族分布

对于第二个假设:给定xx,目标是预测yy的期望值,即h(x)=E(yx)h(x)=E(y|x),对于伯努利二项分布有hθ(x)=E(yx)=ϕh_\theta(x)=E(y|x)=\phi,带入上式ϕ\phi的表达式有
hθ(x)=E(yx)=ϕ=11+eη h_\theta(x)=E(y|x)=\phi=\frac 1 {1+e^{-\eta}}
对于第三个假设:η=θTx\eta=\theta^T\Bbb x,带入上式有
hθ(x)=11+eη=11+eθTx=Sigmoid h_\theta(x)=\frac 1 {1+e^{-\eta}}=\frac 1 {1+e^{-\theta^T\Bbb x}}=Sigmoid
因此当使用Sigmoid函数做预测函数时LR的预测函数同时满足指数族分布与广义线性模型,且预测的结果即为后验概率p(y=1x)p(y=1|x)


LR的输出是否为真实的概率

从指数族分布和广义线性模型的角度看LR的训练过程是这样的:

  • 给定x\Bbb x,根据 θTx\theta^T \Bbb x计算η\eta(即预测值)

  • 根据η\eta通过预测函数sigmoid算出ϕ\phi(即经过sigmoid后的输出值),ϕ\phi既是伯努利分布的唯一参数,也是该分布的期望,所以将ϕ\phi作为预测值。

  • 通过loss function计算ϕ\phi与真实的标签yy之间的误差loss。

  • 通过优化方法来更新θ\theta ,降低loss。

从以上步骤中可以发现将ϕ\phi作为后验概率p(y=1x)p(y=1|x)需要满足两个重要假设:

  1. yy是一个服从伯努利二项分布的二值随机变量
  2. η\etaxx之间存在线性关系,即可以用η=θTx\eta=\theta^T\Bbb x表示

如果以上两个假设满足,则LR的输出(对于其他模型也是一样)是真实的后验概率,但是实际情况不一定严格满足,当然,我们在建模的时候就已经率先假设了这两个条件作为大前提,故而输出更多的可以当做为置信度。