逻辑回归(Logistic Regression):线性回归与逻辑回归的来龙去脉

Intro

逻辑回归是一种十分常见得一种分析模型,属于广义线性回归分析模型。
本文回答了以下问题:

线性回归/逻辑回归的使用前提/假设是?
线性回归/逻辑回归是什么?
线性回归/逻辑回归为什么使用其对应的损失函数?
线性回归/逻辑回归如何计算其梯度?

本文包括了:

线性回归/逻辑回归的假设,线性回归/逻辑回归的形式,线性回归/逻辑回归的损失函数推导过程,线性回归/逻辑回归的梯度计算, 逻辑回归在多分类问题上的应用

分享两个讲的非常好的文章:
详解逻辑回归
逻辑回归与面试问题
关于逻辑回归的总结与解释
以上两个文章讲解都非常好,但是有些细节可能个人理解偏多,希望大家都能有自己的思考。
通常,我们见到逻辑回归会想到它的函数图像,和softmax,以及线性回归。下面,我们将进行介绍与解释:

Logistic Regression

理解逻辑回归,首先要明确一点,逻辑回归是一种分析方法,而不是一个公式,也不是一个函数,它是一个模型
如同线性回归一样,逻辑回归本身也包含很多参数,使用它的目的,就是调整这些参数,以达到很好的预测效果。

1. 回归的预测形式

逻辑回归的基础是线性回归,而线性回归是一个比较容易理解的分析方式,我们从线性回归的单变量形式讲起:

1.1 线性回归的单变量形式

对于输入数据:
X = { x 1 , x 2 , . . . , x n } \textbf{X} = \{x_1, x_2, ..., x_n\} X={x1,x2,...,xn}
我们想得到的预测结果是:
Y = { y 1 , y 2 , . . . , y n } \textbf{Y} = \{y_1, y_2, ..., y_n\} Y={y1,y2,...,yn}
则线性回归模型中,我们假设存在参数 θ \bm{\theta} θ ,使下式成立:
y = θ 1 x + θ 2 {y} = \theta_1{x} + \theta_2 y=θ1x+θ2
即,在二维平面中,从一堆散点中,找到一条直线,形成 x → y x\rightarrow y xy 的映射,如果有 x n e w x_{new} xnew 出现,我们能根据映射,合理的预测 y n e w y_{new} ynew 的值,如下图所示:

图一:单变量的线性回归

1.2 线性回归的多变量形式

在单变量的基础上,我们进一步假设,对上述 X \textbf{X} X 中的每一个 x n x_n xn ,都有:
x n : = i n = i 1 , i 2 , . . . , i K x_n:= \textbf{i}_n = {i_1, i_2, ..., i_K} xn:=in=i1,i2,...,iK
即对每个输入都是K维的数据。
与单变量一样,我们希望通过建立一个映射,使得 x → y x\rightarrow y xy 依然成立,则对任意的 x n x_n xn 仍然假设参数 θ \bm{\theta} θ 存在:
h θ ( x n ) = Σ j = 1 K θ j ⋅ i j + θ b i a s = θ T i = y n h_\theta(x_n) = \Sigma_{j=1}^K \theta_j \cdot i_j + \theta_{bias} = \bm{\theta}^T\textbf{i} = y_n hθ(xn)=Σj=1Kθjij+θbias=θTi=yn
最终, h θ h_\theta hθ 仍然是 x → y x\rightarrow y xy 的映射,只不过是多维度映射。而无论 x n e w x_{new} xnew的维度为多大,我们都将最后一维当作1,则对于一组新的多维数据 x n e w x_{new} xnew ,我们可以通过 θ T i \bm{\theta}^T\textbf{i} θTi 计算得到对应的 y n e w y_{new} ynew。注意到,当K=1时,多变量形式变成了单变量形式。

1.3 逻辑回归:将线性回归转化为概率模型

在以上线性回归中,我们不难发现其输出是根据输入变化的,如果预测的直线是递增的,当输入 x n e w x_{new} xnew 取无穷大时,输出 y n e w y_{new} ynew 也会无穷大。这种回归方式能满足我们对一些数值预测问题(如股票预测,房价预测,室温预测等)的需求,但并不能满足我们对分类问题的需求。

在分类问题中,线性回归不能满足我们的需求,这是因为最终我们想要的输出值在分类问题中,往往是一个整数,以下我们探讨二分类问题。
对于二分类问题,沿用线性回归中的形式,我们可以将输出表达为:
Y = y 1 , y 2 , . . . , y n , y i ∈ 0 , 1 \bm{Y} = {y_1, y_2, ..., y_n}, y_i \in {0, 1} Y=y1,y2,...,yn,yi0,1
可以想象,对于二分类问题在坐标系中的表达,就变成了两条线: y = 0 y=0 y=0 y = 1 y=1 y=1 上的散点。我们无法使用一条直线来拟合出他们的结果。
所以,对于任何一个二分类问题,我们可以将其看作一个概率预测问题,即仍然通过线性预测的方式进行数值预测,只不过预测的是事件 A A A 发生的概率
但这样的假设会引出新的问题:在一个输入是无穷的情况下,理论输出也是无穷大,可概率不可能无穷大。所以我们需要将线性回归的模型输出,限制在 [ 0 , 1 ] [0, 1] [0,1] 这个区间。

1.4 逻辑回归的形式

有了以上的目的,我们只需要找到一个方程,对这个方程 f ( x ) f(x) f(x),我们需要保证其值域为 [ 0 , 1 ] [0, 1] [0,1] ,且为单调函数,最终我们选择了Sigmoid函数作为了逻辑回归的函数,至于为什么这样选择,可以参照这篇博客和其引用的这篇博客

我们先看Sigmoid函数的样子:
在这里插入图片描述

图二:Sigmoid函数

Sigmoid的函数表达式为:
f ( x ) = e x 1 + e x = 1 1 + e − x f(x) = \frac{e^x}{1+e^x} = \frac{1}{1+e^{-x}} f(x)=1+exex=1+ex1
往往逻辑回归处理的是多变量问题,所以沿用上述线性回归结果,我们可以把这个方程写为:
f ( x ) = 1 1 + e − θ T i f(x) = \frac{1}{1+e^{-\bm{\theta}^T\bm{i}}} f(x)=1+eθTi1
所以最终,我们通过了Sigmoid函数,将线性回归的结果转化为了一个在0到1之间的概率值。直觉上,我们可以将大于0.5的输出判断为属于1类,小于0.5的输出判断为0类。就完成了二分类问题的预测。

2. 回归的核心:损失函数

上述问题都谈论到我们想刻画一个 θ \bm{\theta} θ ,使预测会得到一个更好的结果。但如何得到 θ \bm{\theta} θ ,又如何确定 θ \bm{\theta} θ 的好坏。但从每次判断的结果来看是不够准确的,因为我们不仅需要知道预判是好还是坏,也同样需要知道预判有多好或者多坏。即每次输出结果到真实值的差距。

这就是线性回归和逻辑回归中的损失函数,损失函数刻画了每次预测结果 y ^ \hat y y^ 和真实值 y y y 之间的距离。
那我们如何确定这个距离,取决于我们使用何种关系衡量他们。

2.1 线性回归的基本假设

对于线性回归,我们使用的是MSE(Mean Square Error),均方差,也就是预测值和真实值的平均平方差。但为什么使用均方差呢?

直觉上,我们可以认为,样本点到真实值(线性回归的真实值,是一条距离所有样本点平均距离最近的一条直线)的误差是相当平均的。所以我们引入假设:

  • 样本到真实值的误差呈正态分布

事实上,线性回归不只有这一个假设,还有以下假设:

对于以上性质,其实都很好理解:

  • 线性性,可加性:我们本身在做的就是线性回归,如果没有了线性关系,那得到的预测结果肯定会很差。
  • 无自相关性:这里我的理解和网上一些其他理解不同。在了解了自相关性性质之后,我们可以得到的结论是,自变量是时序的,那么我们可以理解为信号中的因果性,换句话说,影响 y ^ n \hat y_n y^n 输出的不只有自变量 x n \bm x_n xn也和 n n n 的值有关。这种关系,是线性回归算法很难捕捉到的,自然其结果变差。PS:对于一些计算置信区间的说法我保持怀疑态度,如果说自相关性会让其标准差变小,那置信区间会变窄,这样结果不是更稳定吗?
  • 多重共线性,这个更好理解了,如果自变量之间都存在线性关系,会让模型学习能力变弱,简单的假设 i k = a i 1 i_k = ai_1 ik=ai1(完全共线性) ,则对应的, i 1 i_1 i1 的真实值 θ 1 = θ ^ k + θ ^ 1 \theta_1 = \hat\theta_k + \hat\theta_1 θ1=θ^k+θ^1;这使得解有无数种,故很难在回归的过程中,找到两个合适的值。
  • 方差为常数说明了样本的同一性,异常值导致的方差异常会让预测值 y ^ \hat y y^ 变得不确定,故使模型失效。

对于以上性质,或者假设,是指线性回归使用的前提,在这些前提的基础上,我们才能继续研究。

2.2 线性回归的损失函数

线性回归的损失函数选择的是均方差MSE(Mean Square Error),用 l o s s loss loss 表示损失函数,对于N个预测值和真实值( y ^ , y \bm{\hat y}, \bm{y} y^,y)最基本的形式为:
l o s s = 1 N Σ i = 1 N ( y ^ i − y i ) 2 loss = \frac{1}{N} \Sigma_{i=1}^N (\hat y_i - y_i)^2 loss=N1Σi=1N(y^iyi)2
即为其预测值与真实值差的平方的平均值。

为什么线性回归选择MSE作为损失函数呢?

查询了一些资料过后,我更详细的描述了一下:
在线性回归中,如上所述,我们已经知道,模型的预测形式为 h θ ( x ) = x T θ + b h_\theta(x) = x^T\theta+b hθ(x)=xTθ+b,其中 x x x为输入, b b b为偏置项。(这里及下文中不再使用 i \bm i i 来表示输入 x n x_n xn 中的多变量,直接使用向量 x x x 代替)
从上文的假设中,我们可知,线性回归假设误差项符合正态分布,即:
h θ ( x ) − y = ϵ ∈ N ( μ , σ 2 ) h_\theta(x) - y = \epsilon \in N(\mu, \sigma^2) hθ(x)y=ϵN(μ,σ2)
其中, ϵ = y − y ^ \epsilon = y - \hat y ϵ=yy^ 表示真实值与预测值的误差。
要知道,在这个假设下,我们可以将想要预测的直线 h θ h_\theta hθ 理解为正态分布的平均值,即样本的点以正态分布的形式随机散落在真实直线的两边
大致(我用的N(0, 1)的正态分布)如下图所示:

图三:线性回归样本分布

以下内容可以略看:
这时,我们看正态分布的公式为:
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=2π σ1e2σ2(xμ)2
根据我们的假设:
h θ ( x ) − y = ϵ ∈ N ( μ , σ 2 ) h_\theta(x) - y = \epsilon \in N(\mu, \sigma^2) hθ(x)y=ϵN(μ,σ2)
进而正态分布公式变为:
f ( ϵ ) = 1 2 π σ e − ( ϵ − μ ) 2 2 σ 2 f(\epsilon) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon-\mu)^2}{2\sigma^2}} f(ϵ)=2π σ1e2σ2(ϵμ)2
我们可以把它看作是(这个写法不严谨):
f ( ϵ ∣ μ , σ ) = 1 2 π σ e − ( ϵ − μ ) 2 2 σ 2 f(\epsilon|\mu, \sigma) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon-\mu)^2}{2\sigma^2}} f(ϵμ,σ)=2π σ1e2σ2(ϵμ)2
即我们可以将正态分布的概率密度函数(即上式)转化为概率:
P ( ϵ ∣ μ , σ ) = 1 2 π σ e − ( ϵ − μ ) 2 2 σ 2 P(\epsilon|\mu, \sigma) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon-\mu)^2}{2\sigma^2}} P(ϵμ,σ)=2π σ1e2σ2(ϵμ)2
很明显这是一个条件概率方程,根据极大似然估计,我们可以将其等效于一个似然函数
L ( μ , σ ∣ ϵ i ) = 1 2 π σ e − ( ϵ i − μ ) 2 2 σ 2 L(\mu, \sigma|\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon_i-\mu)^2}{2\sigma^2}} L(μ,σϵi)=2π σ1e2σ2(ϵiμ)2
注意,这里我用了 ϵ i \epsilon_i ϵi来表示每个误差,这个似然函数的意义是找到一组 ( μ , σ ) (\mu, \sigma) (μ,σ)使得 ϵ i \epsilon_i ϵi的概率最大。(即我们需要找到一个 μ \mu μ 每个使 ϵ i \epsilon_i ϵi 无限接近于 μ \mu μ 。对于事件:每一次预测值都满足 ϵ i \epsilon_i ϵi 无限接近于 μ \mu μ,我们可以用概率连乘表达,这也是为什么似然函数变成了连乘!)
则现在我们需要:
m a x   L ( μ , σ ) = ∏ i = 1 N 1 2 π σ e − ( ϵ i − μ ) 2 2 σ 2 max\ L(\mu, \sigma) = \prod_{i=1}^{N}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon_i - \mu)^2}{2\sigma^2}} max L(μ,σ)=i=1N2π σ1e2σ2(ϵiμ)2
对似然函数取对数:
l o g L ( μ , σ ) = l o g ( ∏ i = 1 N 1 2 π σ e − ( ϵ i − μ ) 2 2 σ 2 ) = Σ i = 1 N l o g ( 1 2 π σ e − ( ϵ i − μ ) 2 2 σ 2 ) = Σ i = 1 N ( l o g ( 1 2 π σ ) + l o g ( e − ( ϵ i − μ ) 2 2 σ 2 ) ) = Σ i = 1 N l o g ( 1 2 π σ ) − Σ i = 1 N ( ϵ i − μ ) 2 2 σ 2 = − Σ i = 1 N l o g 2 π − l o g Σ i = 1 N σ − Σ i = 1 N ( ϵ i − μ ) 2 2 σ 2 = − Σ i = 1 N l o g 2 π − N 2 l o g σ 2 − Σ i = 1 N ( ϵ i − μ ) 2 2 σ 2 \begin{aligned} logL(\mu, \sigma) &= log( \prod_{i=1}^{N}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon_i - \mu)^2}{2\sigma^2}}) \\ &=\Sigma_{i=1}^N log(\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\epsilon_i - \mu)^2}{2\sigma^2}}) \\ &= \Sigma_{i=1}^N(log(\frac{1}{\sqrt{2\pi}\sigma}) + log(e^{-\frac{(\epsilon_i - \mu)^2}{2\sigma^2}})) \\ &=\Sigma_{i=1}^Nlog(\frac{1}{\sqrt{2\pi}\sigma}) - \Sigma_{i=1}^N\frac{(\epsilon_i - \mu)^2}{2\sigma^2} \\ &= -\Sigma_{i=1}^Nlog\sqrt{2\pi} - log\Sigma_{i=1}^N\sigma - \frac{\Sigma_{i=1}^N(\epsilon_i - \mu)^2}{2\sigma^2} \\ &= -\Sigma_{i=1}^Nlog\sqrt{2\pi} - \frac{N}{2}log\sigma^2 - \frac{\Sigma_{i=1}^N(\epsilon_i - \mu)^2}{2\sigma^2} \end{aligned} logL(μ,σ)=log(i=1N2π σ1e2σ2(ϵiμ)2)=Σi=1Nlog(2π σ1e2σ2(ϵiμ)2)=Σi=1N(log(2π σ1)+log(e2σ2(ϵiμ)2))=Σi=1Nlog(2π σ1)Σi=1N2σ2(ϵiμ)2=Σi=1Nlog2π logΣi=1Nσ2σ2Σi=1N(ϵiμ)2=Σi=1Nlog2π 2Nlogσ22σ2Σi=1N(ϵiμ)2
即最终,除去常数项,我们得到的式子是:
l o g L ( μ , σ 2 ) = − N 2 l o g σ 2 − Σ i = 1 N ( ϵ i − μ ) 2 2 σ 2 logL(\mu, \sigma^2)= - \frac{N}{2}log\sigma^2 - \frac{\Sigma_{i=1}^N(\epsilon_i - \mu)^2}{2\sigma^2} logL(μ,σ2)=2Nlogσ22σ2Σi=1N(ϵiμ)2
对上式进行求导,(只写出对 σ 2 \sigma^2 σ2的导数),令 σ 2 = x \sigma^2 = x σ2=x, Σ i = 1 N ( ϵ i − μ ) 2 = K \Sigma_{i=1}^N(\epsilon_i - \mu)^2=K Σi=1N(ϵiμ)2=K
f ( x ) = − N 2 l o g x − K 2 x f ′ ( x ) = − N 2 ⋅ 1 x − ( − 1 ) ⋅ K ⋅ 1 x 2 = 0 \begin{aligned} f(x) &=-\frac{N}{2}logx-\frac{K}{2x} \\ f'(x) &=-\frac{N}{2}\cdot\frac{1}{x} - (-1)\cdot K\cdot \frac{1}{x^2} = 0 \\ \end{aligned} f(x)f(x)=2Nlogx2xK=2Nx1(1)Kx21=0
即:
N 2 x = K 2 x 2 x = K N \begin{aligned} \frac{N}{2x} &=\frac{K}{2x^2} \\ x&=\frac{K}{N} \end{aligned} 2xNx=2x2K=NK
则求导后,我们可知,当:
μ = 1 N Σ i = 1 N ϵ i , \mu=\frac{1}{N}\Sigma_{i=1}^N\epsilon_i, μ=N1Σi=1Nϵi,
σ 2 = 1 N Σ i = 1 N ( ϵ i − μ ) 2 \sigma^2 = \frac{1}{N}\Sigma_{i=1}^N(\epsilon_i - \mu)^2 σ2=N1Σi=1N(ϵiμ)2
时,似然函数取最大值。

略看结束!

到此,我们完成了对正态分布的推导,推到最后,发现一个事实:这不就是两个参数的定义吗???
我不是很明白,因此我把它post在这里,但我觉得这个问题其实非常简单!

由于我们假设了 ϵ \epsilon ϵ 是符合正态分布的,回到我们的初衷,是预测一条直线,能通过它继续根据未知输入预测输出值。所以我们希望这个原始数据与正态分布越吻合越好,至少满足:
μ = 1 N Σ i = 1 N ϵ i , \mu=\frac{1}{N}\Sigma_{i=1}^N\epsilon_i, μ=N1Σi=1Nϵi,
预测出的直线能代表其均值,更好的结果是(因为我们预测的是误差值!),这个均值最好趋近于0
在这个假设下,我们同时也想要方差越小越好,这说明数据得真实值与实际值越吻合(离散程度越低!),那么我们将 μ = 0 \mu=0 μ=0,代入方差的定义式中,得到:
σ 2 = 1 N Σ i = 1 N ϵ i   2 \sigma^2 = \frac{1}{N}\Sigma_{i=1}^N\epsilon_i^{\ 2} σ2=N1Σi=1Nϵi 2
可以通过似然函数或者直接通过方差定义得到结论:
m a x   L ( μ , σ ) → m i n   σ 2 → m i n   1 N Σ i = 1 N ϵ i   2 → m i n   1 N Σ i = 1 N ( y − y ^ )   2 \begin{aligned} max\ L(\mu, \sigma) &\rightarrow min\ \sigma^2 \\ &\rightarrow min\ \frac{1}{N}\Sigma_{i=1}^N\epsilon_i^{\ 2} \\ &\rightarrow min\ \frac{1}{N}\Sigma_{i=1}^N(y-\hat y)^{\ 2} \end{aligned} max L(μ,σ)min σ2min N1Σi=1Nϵi 2min N1Σi=1N(yy^) 2

2.3 线性回归的优化及梯度计算

在得到了损失函数之后,我们可以计算线性回归的优化过程和梯度。对于单变量的情况,其损失函数十分简单:
L o s s = J ( θ ) = ( y ^ − y ) 2 = ( θ 0 x + θ 1 − y ) 2 Loss=J(\theta)=(\hat y - y)^2 = (\theta_0x + \theta_1 -y)^2 Loss=J(θ)=(y^y)2=(θ0x+θ1y)2
不同于直接求导,对于大量的数据,我们使用梯度下降法进行计算:
J ( θ i ) : = J ( θ i ) − α ∂ J ( θ i ) ∂ θ i J(\theta_i):=J(\theta_i) - \alpha\frac{\partial J(\theta_i)}{\partial \theta_i} J(θi):=J(θi)αθiJ(θi)
其中, α \alpha α 为学习率。通过迭代,我们可以无限将损失函数逼近与0,即通过2.2中损失函数的定义,我们可以获得一条最佳的预测直线。在单变量情况下,我们可以用一个粗略的图进行表达:

图四:单变量线性回归梯度下降示意图
而显然,我们更关心的是多变量的情况,对于多变量,我们使用向量进行表示:

L o s s = J ( θ 0 , θ 1 ) = 1 N Σ i = 1 N ( θ 0 x i + θ 1 − y i ) 2 = 1 N Σ i = 1 N ( h θ ( x i ) − y i ) 2 Loss=J(\bm \theta_0, \bm \theta_1) =\frac{1}{N}\Sigma_{i=1}^{N} (\bm \theta_0 x_i + \bm \theta_1 - y_i)^2=\frac{1}{N}\Sigma_{i=1}^{N}(h_\theta( x_i)- y_i)^2 Loss=J(θ0,θ1)=N1Σi=1N(θ0xi+θ1yi)2=N1Σi=1N(hθ(xi)yi)2

此时,我们分别对参数向量 θ 0 \bm \theta_0 θ0 θ 1 \bm \theta_1 θ1进行求导可得:
θ 0 : = θ 0 − α 2 N Σ i = 1 N ( h θ ( x i ) − y i ) ⋅ x i θ 1 : = θ 1 − α 2 N Σ i = 1 N ( h θ ( x i ) − y i ) ⋅ 1 \begin{aligned} &\bm\theta_0 := \bm \theta_0 - \alpha \frac{2}{N}\Sigma_{i=1}^{N}(h_\theta( x_i)- y_i)\cdot x_i \\ &\bm \theta_1:= \bm \theta_1 - \alpha \frac{2}{N}\Sigma_{i=1}^{N}(h_\theta( x_i)- y_i)\cdot 1 \end{aligned} θ0:=θ0αN2Σi=1N(hθ(xi)yi)xiθ1:=θ1αN2Σi=1N(hθ(xi)yi)1进行计算即可,对于多变量情况中的每一组 { x , y } \{\bm x, \bm y\} {x,y},我们都进行上式的迭代运算,即能得到最终结果。这时的梯度下降的示意图为:

图五:多元变量线性回归梯度下降示意图

到此,我们就可以完成线性回归,拟合出一条恰当的直线了。而梯度下降的算法,由于内容太多,可以重新写一篇文章了,大家可以自己查找。

2.4 逻辑回归的基本假设

说起来,使用逻辑回归对数据的分布是没有要求的,任何数据都可以用逻辑回归进行判断,但这终究还是起源于逻辑回归的形式。其实,逻辑回归适用于符合伯努利分布 B B B 形式的数据,毕竟它的功能就是预测事件发生的可能性,事件只可能发生,或者不发生。
然而,对于逻辑回归并不只能用于二分类问题,其在多分类问题也可以进行扩展,这其中就包括了著名的 S o f t m a x Softmax Softmax 函数。

2.5 逻辑回归的损失函数

注意到,在选取损失函数的时候,我们更倾向于构建一个方程,能表达计算方法的意义。如,在线性回归中,我们使用MSE是为了贴合线性回归“寻找一条直线,使其到各个样本点的距离最小”的假设。所以在逻辑回归中,我们希望寻找一组参数,使其在Sigmoid函数上的映射,能最接近输入事件发生的概率,即:
m a x   P ( x ∣ θ ) max \ P(x|\bm{\theta}) max P(xθ)这样的思想让我们不由得会联想到线性回归——我们只需要继续做均方差就可以了,那么逻辑回归的损失函数将变成:
J ( θ ) = 1 N Σ i ( z ( x i ) − y i ) 2 J(\bm{\theta})=\frac{1}{N}\Sigma_i(z(x_i) - y_i)^2 J(θ)=N1Σi(z(xi)yi)2其中, z ( x i ) z(x_i) z(xi)代表了从输入到线性变换再到Sigmoid映射的过程, y i y_i yi代表了此处结果的真实值(0或1)。然而,理想很饱满,现实很骨感,在这样的情况下,我们最终发现逻辑回归的效果很差,因为我们最终形成的是一个非凸函数,即结果很容易落入极值。一个非常非常粗糙的图如下所示:

图六:逻辑回归损失函数示意图

注意,这只是一个示意图,可以理解成一个非凸函数的示意图。但回过头来,如果还是从逻辑回归的定义入手,这个问题就变得简单了很多。
我们知道,逻辑回归的输出目标是一个概率,即 P ( y ∣ x , θ ) P(y|x, \bm{\theta}) P(yx,θ),由于输入 x \bm{x} x是已知的,在后式中我们不将 x \bm{x} x 写入条件中,我们可以将输出 P P P 看作为对于参数的似然函数 L L L,则得到:
L ( θ ∣ y ) = P ( y ∣ θ ) = z ( x ) , y ∈ ( 0 , 1 ) L(\bm{\theta}|y) = P(y|\bm{\theta})=z(\bm{x}), y \in (0, 1) L(θy)=P(yθ)=z(x),y(0,1)在输出已知的情况下,我们可以将整个式子写成:
{   L ( θ ∣ y = 1 ) = z ( x )   L ( θ ∣ y = 0 ) = 1 − z ( x ) \left\{ \begin{aligned} &\ L(\bm{\theta}|y=1)=z(\bm{x}) \\ &\ L(\bm{\theta}|y=0) = 1 - z(\bm{x}) \end{aligned} \right. { L(θy=1)=z(x) L(θy=0)=1z(x)即:
L ( θ ) = Π i = 1 N ( y i z ( x i ) + ( 1 − y i ) ( 1 − z ( x i ) ) ) L(\bm{\theta}) = \Pi_{i=1}^N(y_iz(\bm{x_i})+ (1-y_i)(1-z(\bm{x_i}))) L(θ)=Πi=1N(yiz(xi)+(1yi)(1z(xi)))我们对似然函数取对数,简化运算:
l o g L ( θ ) = Σ i = 1 N ( y i l o g z ( x i ) + ( 1 − y i ) l o g ( 1 − z ( x i ) ) ) logL(\bm{\theta})= \Sigma_{i=1}^N(y_ilogz(\bm{x_i})+(1-y_i)log(1-z(\bm{x_i}))) logL(θ)=Σi=1N(yilogz(xi)+(1yi)log(1z(xi)))注意到,我们希望模型效果越好时,损失函数越小。所以我们对上式取反并进行归一化,得到逻辑回归的损失函数:
J ( θ ) = − 1 N l o g L ( θ ) = − 1 N Σ i = 1 N ( y i l o g z ( x i ) + ( 1 − y i ) l o g ( 1 − z ( x i ) ) ) , y i ∈ { 0 , 1 } J(\bm{\theta})=-\frac{1}{N}logL(\bm{\theta})=-\frac{1}{N}\Sigma_{i=1}^N(y_ilogz(\bm{x_i})+(1-y_i)log(1-z(\bm{x_i}))), y_i\in \{0, 1\} J(θ)=N1logL(θ)=N1Σi=1N(yilogz(xi)+(1yi)log(1z(xi)))yi{0,1}这就是逻辑回归的损失函数,注意到,这里式子中的两项分别代表了真实函数与假设分布的交叉熵,所以我们也可以称之为二元交叉熵损失函数。对于交叉熵的理解可以参考这篇文章当然,我们的过程是对似然函数取对数,所以它的损失函数也叫对数损失函数
(这里似然函数使用连乘表达在上文提到过,可以搜索“连乘”)

2.6 逻辑回归的优化及梯度计算

计算逻辑回归的梯度,根据上面线性回归的方式,我们同样使用梯度下降的方式。注意,在逻辑回归中,我们使用到的参数 θ \bm{\theta} θ 存在于函数 z ( x i ) z(\bm{x_i}) z(xi) 中,即:
z ( x i ) = h ( θ x i ) , h ( ⋅ ) = s i g m o i d ; z(\bm{x_i}) = h(\bm{\theta x_i}), h(\cdot)=sigmoid; z(xi)=h(θxi),h()=sigmoid;
则对参数 θ \bm{\theta} θ 的梯度更新可以写为:
θ i = θ i − 1 − α ∂ J ( θ ) ∂ θ \theta_i=\theta_{i-1} - \alpha\frac{\partial J(\theta)}{\partial\bm{\theta}} θi=θi1αθJ(θ)
其中 α \alpha α 为预先定义的学习率。我们对损失函数进行偏导计算的结果为:
∂ J ( θ ) ∂ θ = − ∂ 1 N Σ i = 1 N ( y i l o g z ( x i ) + ( 1 − y i ) l o g ( 1 − z ( x i ) ) ) ∂ θ = − 1 N ∂ Σ i = 1 N ( y i l o g h ( θ x i ) + ( 1 − y i ) l o g ( 1 − h ( θ x i ) ) ) ∂ θ = − 1 N Σ i = 1 N ( y i l o g h ( θ x i ) ∂ θ + ( 1 − y i ) l o g ( 1 − h ( θ x i ) ) ∂ θ ) = − 1 N Σ i = 1 N ( y i l o g h ( θ x i ) ∂ h ( θ x i ) ∂ h ( θ x i ) ∂ θ + ( 1 − y i ) l o g ( 1 − h ( θ x i ) ) ∂ h ( θ x i ) ∂ h ( θ x i ) ∂ θ ) = − 1 N Σ i = 1 N ( y i 1 h ( θ x i ) ∂ h ( θ x i ) ∂ θ + ( 1 − y i ) − 1 1 − h ( θ x i ) ∂ h ( θ x i ) ∂ θ ) = − 1 N Σ i = 1 N ( ( y i h ( θ x i ) − 1 − y i 1 − h ( θ x i ) ) ∂ h ( θ x i ) ∂ θ ) \begin{aligned} \frac{\partial J(\bm{\theta})}{\partial\bm{\theta}}&=-\frac{\partial\frac{1}{N}\Sigma_{i=1}^N(y_ilogz(\bm{x_i})+(1-y_i)log(1-z(\bm{x_i}))) }{\partial\bm{\theta}} \\ &=-\frac{1}{N}\frac{\partial \Sigma_{i=1}^N(y_ilogh(\bm{\theta x_i}) + (1-y_i)log(1-h(\bm{\theta x_i})))}{\partial\bm{\theta}} \\ &=-\frac{1}{N}\Sigma_{i=1}^N(y_i\frac{logh(\bm{\theta x_i})}{\partial \bm{\theta}}+(1-y_i)\frac{log(1-h(\bm{\theta x_i}))}{\partial\bm{\theta}}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N(y_i\frac{logh(\bm{\theta x_i})}{\partial{h(\bm{\theta x_i})}}\frac{\partial h(\bm{\theta x_i})}{\partial \bm{\theta}}+(1-y_i)\frac{log(1-h(\bm{\theta x_i}))}{\partial h(\bm{\theta x_i})}\frac{\partial h(\bm{\theta x_i})}{\partial\bm{\theta}}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N(y_i\frac{1}{{h(\bm{\theta x_i})}}\frac{\partial h(\bm{\theta x_i})}{\partial \bm{\theta}}+(1-y_i)\frac{-1}{1-h(\bm{\theta x_i})}\frac{\partial h(\bm{\theta x_i})}{\partial\bm{\theta}}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N((\frac{y_i}{{h(\bm{\theta x_i})}} - \frac{1-y_i}{1-h(\bm{\theta x_i})})\frac{\partial h(\bm{\theta x_i})}{\partial \bm{\theta}}) \\ \end{aligned} θJ(θ)=θN1Σi=1N(yilogz(xi)+(1yi)log(1z(xi)))=N1θΣi=1N(yilogh(θxi)+1yi)log(1h(θxi)))=N1Σi=1N(yiθlogh(θxi)+(1yi)θlog(1h(θxi)))=N1Σi=1N(yih(θxi)logh(θxi)θh(θxi)+(1yi)h(θxi)log(1h(θxi))θh(θxi))=N1Σi=1N(yih(θxi)1θh(θxi)+(1yi)1h(θxi)1θh(θxi))=N1Σi=1N((h(θxi)yi1h(θxi)1yi)θh(θxi))
这里要用到Sigmoid一个很重要的性质,Sigmoid的导与Sigmoid函数本身有关:
d h ( x ) d x = d 1 1 + e − x d x = d ( 1 + e − x ) − 1 d ( 1 + e − x ) ⋅ d ( 1 + e − x ) d e − x ⋅ d e − x d x = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( − e − x ) = e − x ( 1 − e − x ) 2 = 1 1 + e − x ⋅ e − x 1 + e − x = 1 1 + e − x ⋅ ( 1 + e − x ) − 1 1 + e − x = 1 1 + e − x ⋅ ( 1 − 1 1 + e − x ) = h ( x ) ( 1 − h ( x ) ) \begin{aligned} \frac{dh(x)}{d x}&=\frac{d\frac{1}{1+e^{-x}}}{d x} \\ &=\frac{d(1+e^{-x})^{-1}}{d(1+e^{-x})}\cdot\frac{d(1+e^{-x})}{de^{-x}}\cdot\frac{de^{-x}}{dx} \\ &=-(1+e^{-x})^{-2} \cdot 1 \cdot (-e^{-x}) \\ &=\frac{e^{-x}}{(1-e^{-x})^2} \\ &=\frac{1}{1 + e^{-x}} \cdot\frac{e^{-x}}{1 + e^{-x}} \\ &=\frac{1}{1 + e^{-x}} \cdot\frac{(1 +e^{-x}) - 1 }{1 + e^{-x}} \\ &=\frac{1}{1 + e^{-x}} \cdot(1 - \frac{1}{1 + e^{-x}}) \\ & = h(x)(1-h(x)) \end{aligned} dxdh(x)=dxd1+ex1=d(1+ex)d(1+ex)1dexd(1+ex)dxdex=(1+ex)21(ex)=(1ex)2ex=1+ex11+exex=1+ex11+ex(1+ex)1=1+ex1(11+ex1)=h(x)(1h(x))
在已知以上性质之后,我们可以继续计算梯度:
∂ J ( θ ) ∂ θ = − 1 N Σ i = 1 N ( ( y i h ( θ T x i ) − 1 − y i 1 − h ( θ T x i ) ) ∂ h ( θ T x i ) ∂ θ ) = − 1 N Σ i = 1 N ( ( y i h ( θ T x i ) − 1 − y i 1 − h ( θ T x i ) ) ∂ h ( θ T x i ) ∂ ( θ T x i ) ⋅ ∂ ( θ T x i ) ∂ θ ) = − 1 N Σ i = 1 N ( ( y i h ( θ T x i ) − 1 − y i 1 − h ( θ T x i ) ) ⋅ h ( θ T x i ) ⋅ ( 1 − h ( θ T x i ) ) ⋅ x i ) = − 1 N Σ i = 1 N ( ( y i ⋅ ( 1 − h ( θ T x i ) ) − ( 1 − y i ) h ( θ T x i ) ) ⋅ x i ) = − 1 N Σ i = 1 N ( ( y i − h ( θ T x i ) y i − h ( θ T x i ) + y i h ( θ T x i ) ) ⋅ x i ) = − 1 N Σ i = 1 N ( ( y i − h ( θ T x i ) ) ⋅ x i ) \begin{aligned} \frac{\partial J(\bm{\theta})}{\partial\bm{\theta}} &=-\frac{1}{N}\Sigma_{i=1}^N((\frac{y_i}{{h(\bm{\theta^T x_i})}} - \frac{1-y_i}{1-h(\bm{\theta^T x_i})})\frac{\partial h(\bm{\theta^T x_i})}{\partial \bm{\theta}}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N((\frac{y_i}{{h(\bm{\theta^T x_i})}} - \frac{1-y_i}{1-h(\bm{\theta^T x_i})})\frac{\partial h(\bm{\theta^T x_i})}{\partial (\bm{\theta^T x_i})}\cdot\frac{\partial(\bm{\theta^T x_i})}{\partial \bm{\theta}}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N((\frac{y_i}{{h(\bm{\theta^T x_i})}} - \frac{1-y_i}{1-h(\bm{\theta^T x_i})}) \cdot h(\bm{\theta^T x_i})\cdot (1 - h(\bm{\theta^T x_i}))\cdot\bm{x_i}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N((y_i\cdot(1 - {h(\bm{\theta^T x_i}))} - (1-y_i)h(\bm{\theta^T x_i})) \cdot \bm{x_i}) \\ &=-\frac{1}{N}\Sigma_{i=1}^N((y_i - {h(\bm{\theta^T x_i})y_i} - h(\bm{\theta^T x_i}) + y_ih(\bm{\theta^T x_i})) \cdot \bm{x_i}) \\ &= -\frac{1}{N}\Sigma_{i=1}^N((y_i - h(\bm{\theta^T x_i}) ) \cdot \bm{x_i}) \\ \end{aligned} θJ(θ)=N1Σi=1N((h(θTxi)yi1h(θTxi)1yi)θh(θTxi))=N1Σi=1N((h(θTxi)yi1h(θTxi)1yi)(θTxi)h(θTxi)θ(θTxi))=N1Σi=1N((h(θTxi)yi1h(θTxi)1yi)h(θTxi)(1h(θTxi))xi)=N1Σi=1N((yi(1h(θTxi))(1yi)h(θTxi))xi)=N1Σi=1N((yih(θTxi)yih(θTxi)+yih(θTxi))xi)=N1Σi=1N((yih(θTxi))xi)
则我们可以通过上式对逻辑回归的梯度进行更新,看似复杂的公式经过了Sigmoid求导的巧妙变换变得十分简单,进而我们可以快速的更新逻辑回归中的参数。

3. 结语

总结来看:

  • 简而言之逻辑回归 = Sigmoid(线性回归)
  • 逻辑回归和线性回归的不同之处在于适用的问题不同,一个是回归,一个是分类(计算概率)
  • 两者的损失函数也不同,线性回归使用的是MSE,其本质是使真实点到预测直线的方差最小;逻辑回归使用的是MLE,对数损失函数,其本质是使预测概率最接近真实值

以上就是关于逻辑回归和线性回归的所有内容。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值