逻辑回归模型详解(Logistic Regression)

article/2025/8/24 9:00:10

目录

广义线性模型

极大似然法

逻辑回归的假设函数

逻辑回归的损失函数

交叉熵损失函数

为什么LR模型损失函数使用交叉熵不用均方差

交叉熵损失函数的数学原理

交叉熵损失函数的直观理解

交叉熵简介

对数损失函数和交叉熵损失函数

逻辑回归优缺点

其他

逻辑回归与线性回归的区别与联系

LR一般需要连续特征离散化原因


广义线性模型

逻辑回归与线性回归都是一种广义线性模型(generalized linear model,GLM)。具体的说,都是从指数分布族导出的线性模型,线性回归假设Y|X服从高斯分布,逻辑回归假设Y|X服从伯努利分布。

伯努利分布:伯努利分布又名0-1分布或者两点分布,是一个离散型概率分布。随机变量X只取0和1两个值,比如正面或反面,成功或失败,有缺陷或没有缺陷,病人康复或未康复。为方便起见,记这两个可能的结果为0和1,成功概率为p(0<=p<=1),失败概率为q=1-p。

高斯分布:高斯分布一般指正态分布。

因此逻辑回归与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

这两种分布都是属于指数分布族,我们可以通过指数分布族求解广义线性模型(GLM)的一般形式,导出这两种模型,具体的演变过程如下:

(此部分参考:https://zhuanlan.zhihu.com/p/81723099)

 

极大似然法

极大似然估计,通俗理解来说,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值。

 极大似然估计的原理,用一张图片来说明,如下图所示:

原理:极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概率论在统计学中的应用。

极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
 

逻辑回归的假设函数

首先我们要先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):

其函数曲线如下:

从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1,它的这个特性对于解决二分类问题十分重要。

逻辑回归的假设函数形式如下:

所以:

其中 x 是我们的输入,θ 为我们要求取的参数。

一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是:

这个函数的意思就是在给定 x 和 θ 的条件下,y = 1的概率。

 

逻辑回归的损失函数

通常提到损失函数,我们不得不提到代价函数(Cost Function)及目标函数(Object Function)。

损失函数(Loss Function) 直接作用于单个样本,用来表达样本的误差

代价函数(Cost Function)是整个样本集的平均误差,对所有损失函数值的平均

目标函数(Object Function)是我们最终要优化的函数,也就是代价函数+正则化函数(经验风险+结构风险)

概况来讲,任何能够衡量模型预测出来的值 h(θ) 与真实值 y 之间的差异的函数都可以叫做代价函数 C(θ) 如果有多个样本,则可以将所有代价函数的取值求均值,记做 J(θ) 。因此很容易就可以得出以下关于代价函数的性质:

  • 选择代价函数时,最好挑选对参数 θ 可微的函数(全微分存在,偏导数一定存在)
  • 对于每种算法来说,代价函数不是唯一的;
  • 代价函数是参数 θ 的函数;
  • 总的代价函数 J(θ) 可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本(x,y);
  • J(θ) 是一个标量;

经过上面的描述,一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数 θ 可微。

在线性回归中,最常用的是均方误差(Mean squared error),即

在逻辑回归中,最常用的是代价函数是交叉熵(Cross Entropy),交叉熵是一个常见的代价函数

通过梯度下降法求参数的更新式

我们下图为推倒式,这样可以使推导式更简洁。

求梯度:

学习率

LR在确定了模型的形式后,通过最大似然估计法来实现最小散度从而求出模型参数。

 

交叉熵损失函数

说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式:

为什么LR模型损失函数使用交叉熵不用均方差

交叉熵损失函数的数学原理

我们知道,在二分类问题模型:例如逻辑回归「Logistic Regression」、神经网络「Neural Network」等,真实样本的标签为 [0,1],分别表示负类和正类。模型的最后通常会经过一个 Sigmoid 函数,输出一个概率值,这个概率值反映了预测为正类的可能性:概率越大,可能性越大。

Sigmoid 函数的表达式和图形如下所示:

其中 s 是模型上一层的输出,Sigmoid 函数有这样的特点:s = 0 时,g(s) = 0.5;s >> 0 时, g ≈ 1,s << 0 时,g ≈ 0。显然,g(s) 将前一级的线性输出映射到 [0,1] 之间的数值概率上。这里的 g(s) 就是交叉熵公式中的模型预测输出 。

我们说了,预测输出即 Sigmoid 函数的输出表征了当前样本标签为 1 的概率:

很明显,当前样本标签为 0 的概率就可以表达成:

重点来了,如果我们从极大似然性的角度出发,把上面两种情况整合到一起:

不懂极大似然估计也没关系。我们可以这么来看:

当真实样本标签 y = 0 时,上面式子第一项就为 1,概率等式转化为:

当真实样本标签 y = 1 时,上面式子第二项就为 1,概率等式转化为:

两种情况下概率表达式跟之前的完全一致,只不过我们把两种情况整合在一起了。

重点看一下整合之后的概率表达式,我们希望的是概率 P(y|x) 越大越好。首先,我们对 P(y|x) 引入 log 函数,因为 log 运算并不会影响函数本身的单调性。则有:

我们希望 log P(y|x) 越大越好,反过来,只要 log P(y|x) 的负值 -log P(y|x) 越小就行了。那我们就可以引入损失函数,且令 Loss = -log P(y|x)即可。则得到损失函数为:

非常简单,我们已经推导出了单个样本的损失函数,是如果是计算 N 个样本的总的损失函数,只要将 N 个 Loss 叠加起来就可以了:

这样,我们已经完整地实现了交叉熵损失函数的推导过程。

 

交叉熵损失函数的直观理解

从图形的角度,分析交叉熵函数,加深大家的理解。首先,还是写出单个样本的交叉熵损失函数:

我们知道,当 y = 1 时:

这时候,L 与预测输出的关系如下图所示:

看了 L 的图形,简单明了!横坐标是预测输出,纵坐标是交叉熵损失函数 L。显然,预测输出越接近真实样本标签 1,损失函数 L 越小;预测输出越接近 0,L 越大。因此,函数的变化趋势完全符合实际需要的情况。

当 y = 0 时:

这时候,L 与预测输出的关系如下图所示:

同样,预测输出越接近真实样本标签 0,损失函数 L 越小;预测函数越接近 1,L 越大。函数的变化趋势也完全符合实际需要的情况。

从上面两种图,可以帮助我们对交叉熵损失函数有更直观的理解。无论真实样本标签 y 是 0 还是 1,L 都表征了预测输出与 y 的差距。

另外,重点提一点的是,从图形中我们可以发现:预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 “ 惩罚 ” 越大,而且是非线性增大,是一种类似指数增长的级别。这是由 log 函数本身的特性所决定的。这样的好处是模型会倾向于让预测输出更接近真实样本标签 y。

  • 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。

  • 交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。

交叉熵简介

交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性,要理解交叉熵,需要先了解下面几个概念。

信息量

信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。

“太阳从东边升起”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起的,这是一句废话,信息量为0。

”2018年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。

根据上述可总结如下:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。

设某一事件发生的概率为P(x),其信息量表示为:

其中 I ( x ) 表示信息量,这里 log 表示以e为底的自然对数。

信息熵

信息熵也被称为熵,用来表示所有信息量的期望。

期望是试验中每次可能结果的概率乘以其结果的总和。

所以信息量的熵可表示为:(这里的X XX是一个离散型随机变量)

使用明天的天气概率来计算其信息熵:

对于0-1分布的问题,由于其结果只用两种情况,是或不是,设某一件事情发生的概率为P ( x ) ,则另一件事情发生的概率为1 − P ( x ) ,所以对于0-1分布的问题,计算熵的公式可以简化如下:

相对熵(KL散度)

如果对于同一个随机变量X XX有两个单独的概率分布 P(x) 和 Q(x),则我们可以使用KL散度来衡量这两个概率分布之间的差异

下面直接列出公式,再举例子加以说明。

在机器学习中,常常使用 P(x) 来表示样本的真实分布,Q(x) 来表示模型所预测的分布,比如在一个三分类任务中(例如,猫狗马分类器), x1​,x2​,x3​ 分别代表猫,狗,马,例如一张猫的图片真实分布 P(X)=[1,0,0] ,预测分布 Q(X)=[0.7,0.2,0.1] ,计算KL散度:

KL散度越小,表示 P(x) 与 Q(x) 的分布更加接近,可以通过反复训练 Q(x) 来使 Q(x) 的分布逼近 P(x)。

交叉熵

首先将KL散度公式拆开:

前者 H(p(x)) 表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵

交叉熵公式表示为:

在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布 P(x) 也就确定下来了,所以信息熵在这里就是一个常量。由于KL散度的值表示真实概率分布 P(x) 与预测概率分布 Q(x) 之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。

对数损失函数和交叉熵损失函数

逻辑回归优缺点

LR优点

  1. 直接对分类的可能性建模,无需事先假设数据分布,避免了假设分布不准确带来的问题
  2. 不仅预测出类别,还可得到近似概率预测
  3. 对率函数是任意阶可导凸函数,有很好得数学性质,很多数值优化算法可直接用于求取最优解
  4. 容易使用和解释,计算代价低
  5. LR对时间和内存需求上相当高效
  6. 可应用于分布式数据,并且还有在线算法实现,用较小资源处理较大数据
  7. 对数据中小噪声鲁棒性很好,并且不会受到轻微多重共线性影响
  8. 因为结果是概率,可用作排序模型

LR缺点

  1. 容易欠拟合,分类精度不高
  2. 数据特征有缺失或特征空间很大时效果不好

 

其他

逻辑回归与线性回归的区别与联系

区别

  • 线性回归假设响应变量服从正态分布,逻辑回归假设响应变量服从伯努利分布
  • 线性回归优化的目标函数是均方差(最小二乘),而逻辑回归优化的是似然函数(交叉熵)
  • 线性归回要求自变量与因变量呈线性关系,而逻辑回归没有要求
  • 线性回归分析的是因变量自身与自变量的关系,而逻辑回归研究的是因变量取值的概率与自变量的概率
  • 逻辑回归处理的是分类问题,线性回归处理的是回归问题,这也导致了两个模型的取值范围不同:0-1和实数域
  • 参数估计上,都是用极大似然估计的方法估计参数(高斯分布导致了线性模型损失函数为均方差,伯努利分布导致逻辑回归损失函数为交叉熵)

联系

  • 两个都是线性模型,线性回归是普通线性模型,逻辑回归是广义线性模型
  • 表达形式上,逻辑回归是线性回归套上了一个Sigmoid函数

LR一般需要连续特征离散化原因

  1. 离散特征的增加和减少都很容易,易于模型快速迭代
  2. 稀疏向量内积乘法速度快,计算结果方便存储,容易扩展
  3. 离散化的特征对异常数据有很强的鲁棒性(比如年龄为300异常值可归为年龄>30这一段)
  4. 逻辑回归属于广义线性模型,表达能力受限。单变量离散化为N个后,每个变量有单独的权重,相当于对模型引入了非线性,能够提升模型表达能力,加大拟合
  5. 离散化进行特征交叉,由 m+n 个变量为 m*n 个变量(将单个特征分成 m 个取值),进一步引入非线性,提升表达能力
  6. 特征离散化后,模型会更稳定(比如对用户年龄离散化,20-30作为一个区间,不会因为用户年龄,增加一岁变成完全不同的人,但区间相邻处样本会相反,所以怎样划分区间很重要)
  7. 特征离散化后,简化了LR模型作用,降低模型过拟合风险

 

 

 

参考链接:https://blog.csdn.net/zengxiantao1994/article/details/72787849

交叉熵损失函数:https://zhuanlan.zhihu.com/p/35709485

参考链接:https://zhuanlan.zhihu.com/p/38241764

 


http://chatgpt.dhexx.cn/article/eh72h8Oy.shtml

相关文章

机器学习算法(一):逻辑回归模型(Logistic Regression, LR)

目录 1 LR 1.1 直观表述 1.2 决策边界&#xff08;Decision Boundary&#xff09; 2. 权值求解 2.1 代价函数&#xff08;似然函数&#xff09; 2.1.1 为什么损失函数不用最小二乘&#xff1f;即逻辑斯蒂回归损失函数为什么使用交叉熵而不是MSE&#xff1f; 2.1.2 代价函…

详解逻辑回归

目录 1. 逻辑回归模型介绍1.1 Logistic分布1.2 Logistic回归1.3 代价函数1.4 求解1.5 正则化1.5.1 L1正则化1.5.2 L2正则化1.5.3 L1正则化和L2正则化区别 2 与其他模型的对比2.1 与线性回归2.2 与 SVM2.3 与朴素贝叶斯 3. 模型细节3.1 为什么适合离散特征3.2 为什么不用平方误差…

逻辑回归模型(Logistic Regression)

逻辑回归符合伯努利分布。伯努利分布就是我们常见的0-1分布&#xff0c;即它的随机变量只取0或者1&#xff0c;各自的频率分别取1−p和p&#xff0c;当x0或者x1时&#xff0c;我们数学定义为&#xff1a; 所以在常规的逻辑回归模型中&#xff0c;只有两个类别&#xff0c;0或者…

逻辑回归(Logistic Regression)详解

逻辑回归也称作logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程&#xff0c;但实际上主要是用来解决二分类问题&#xff08;也可以解决多分类问题&#xff09;。通过给定的n组数据&…

逻辑回归模型及案例(Python)

1 简介 逻辑回归也被称为广义线性回归模型&#xff0c;它与线性回归模型的形式基本上相同&#xff0c;最大的区别就在于它们的因变量不同&#xff0c;如果是连续的&#xff0c;就是多重线性回归&#xff1b;如果是二项分布&#xff0c;就是Logistic回归。 Logistic回归虽然名…

PyCharm如何修改配置大内存

现在的电脑标配都8G以上内存了&#xff0c;不过很多IDE仍然是以低配电脑为标准&#xff0c;去配置软件占用硬件的程度 因为内存会直接影响到软件的性能&#xff0c;可以通过手动去设置大内存 一、首先启动虚拟机 进入pychram的bin目录&#xff0c;可以看到2个以vmoptions为后…

jvm最大内存限制多少?

(1)堆内存分配 JVM初始分配的内存由-Xms指定&#xff0c;默认是物理内存的1/64&#xff1b;JVM最大分配的内存由-Xmx指定&#xff0c;默认是物理内存的1/4。默认空余堆内存小 于40%时&#xff0c;JVM就会增大堆直到-Xmx的最大限制&#xff1b;空余堆内存大于70%时&#xff0c;…

大内存时代虚拟内存现在还有用吗

但凡用过Windows的人&#xff0c;大多听说过“虚拟内存”这四个字。尤其在当年物理内存还普遍偏低的年代&#xff0c;虚拟内存几乎成了每一个玩电脑的人都曾摆弄过 的东东。不过随着硬件技术不断发展&#xff0c;内存价格逐步白菜化&#xff0c;我们的电脑再也不像当年那样算计…

笔记本电脑查看几个卡槽,支持最大内存,内存条参数详细步骤,开启双通道条件

1&#xff1a;一个命令&#xff0c;轻松查看电脑支持多大内存 使用 Win R组合快捷键&#xff0c;打开 运行 操作框&#xff0c;然后在打开后面 输入命令 cmd &#xff0c;并点击下方的“确定”进入命令操作窗口&#xff0c;如下图所示。 然后在打开的CMD命令窗口输入命令&am…

在Jupyter里按需删除大内存变量并且释放内存

使用情形&#xff1a; 项目需要对多个大内存变量进行处理&#xff0c;但是每个大内存变量处理的时候都需要加载一个另外共同的大内存变量。现在处理完一个变量之后&#xff0c;只能重启kernel然后处理另一个变量&#xff1b;但是理论上我们可以删除一个变量的内存并读入下一个…

xp计算机如何查看内存大小,xp如何查看内存大小

想知道怎么查看电脑内存的大小吗&#xff0c;下面是学习啦小编带来的关于xp如何查看内存大小的内容&#xff0c;欢迎阅读! xp查看内存大小方法一&#xff1a; 一&#xff1a; 右键单击 我的电脑&#xff0c;选择 【属性】 查看 二&#xff1a; 打开控制面板&#xff0c;打开【系…

Android Studio如何设置占用的最大内存?

1.File-Settings,如下图&#xff0c;是应用到所有项目中的。 2.下方的“Daemon Heap Size Setting”是设置当前项目编译时所能使用的最大内存的&#xff0c;所以如果我们需要仅当前项目有效&#xff0c;可以在这里设置,设置好之后点击“确定”&#xff0c;完成更改。

不花里胡哨看电脑主板支持最大内存与频率

怎么看电脑主板支持最大内存 WinR输入Cmd回车 wmic memphysical get maxcapacity如上图 Maxcapacity&#xff1a;最大内存 k/1024M/1021G 33554432/1024/102132GB说明最高支持32GB的内存 怎么看电脑主板内存条卡槽 CtrlShiftEsc 可以看到卡槽、速度频率 怎么看电脑主板支…

确定你的台式计算机支持的内存类型,怎么查看电脑主板支持多大内存?教你看主板支持多大内存2种方法...

在我们使用电脑时&#xff0c;都希望电脑有这极强的性能&#xff0c;在想要电脑有极强的情况下&#xff0c;电脑的硬件其重要性毋庸置疑。很多喜欢DIY的小伙伴都会选择性能强但是极具性价比的硬件组装。不过不少用户在选择内存条的时候都是往大了选&#xff0c;通常情况下&…

确定你的台式计算机支持的内存类型,怎么看主板支持多大内存 教你看主板支持多大内存2种方法...

怎么看主板支持多大内存&#xff1f;由于不同的主板最大支持的内存大小不同&#xff0c;一些老主板最大支持4G/8GB内存&#xff0c;一些新主板可以支持16GB或者更高。对于DIY装机或者打算为电脑升级内存的时&#xff0c;就需要先了解主板最大支持多大的内存&#xff0c;这样才能…

win10设置虚拟内存_大内存时代,电脑系统还需要设置虚拟内存吗?

大家都知道,内存是组成电脑的重要硬件之一,甚至内存的大小决定了电脑系统运行的快慢,那么在电脑硬件高速发展的今天,电脑系统是否只需要物理内存就可以了呢?要搞清楚这个问题,我们需要先来认识一下物理内存和虚拟内存。 什么是物理内存,什么是虚拟内存? 虚拟内存是相对…

python设置程序最大内存_限制你的Python程序所能使用的最大内存

如果程序开发不当&#xff0c;可能会出现占用过多内存的情况。特别是在Docker里面&#xff0c;如果Python程序占用太多内存&#xff0c;可能会导致Docker容器死掉。 为了限制Python程序所能使用的最大内存&#xff0c;我们可以使用Python自带的resource模块。 首先获取系统默认…

64位 计算机 最大内存,win10 64位最大支持内存是多少_win10系统最高支持多大内存...

许多用户认为&#xff0c;win10电脑应该内存越大那么运行速度也就会越快&#xff0c;因此常常会给自己的win10 64位系统增加内存条&#xff0c;可是有些用户可能不知道&#xff0c;win10系统所能承受的内存空间也是有限制的&#xff0c;那么win10 64位最大支持内存是多少呢&…

计算机支持最大内存大小,64位电脑系统可以支持多大内存【详细介绍】

电脑最大支持多大内存条? 很多小白朋友对这方面的知识并不了解,导致走了很多弯路,其实电脑支持的内存位数取决于处理器、系统位数、主板等,不懂不要紧,今天小编给大家分享下详细的电脑最大支持多大内存条的相关知识点哦。 64位电脑系统可以支持多大内存? 就现在而言,主要…

引导最大内存_实际内存不够大,可用内存更加小,这样解决

内存在电脑上是非常重要的一个部件,电脑种所运行的程序都是在内存里面进行的,因此内存的大小也决定可同时运行的程序的多少,当电脑内存不足时就会影响电脑的性能。 有时电脑安装的内存明明很大,但实际可用的内存却很小,这是怎么回事呢? 右键计算机(或者此电脑)图标,打开…