当前位置: 首页 > news >正文

逻辑回归(Logistic Regression)详细解释与公式推导

逻辑回归是二分类任务的经典统计学习模型,核心思想是:用对数几率(Logit) 将线性回归的连续输出映射到 [0,1] 区间,从而表示样本属于某一类别的概率。它虽名为“回归”,实则是分类模型,广泛应用于信用评估、医疗诊断、垃圾邮件识别等场景。

一、模型核心思想

1. 线性回归的局限

线性回归的输出是连续值(y=wTx+by = \boldsymbol{w}^T\boldsymbol{x} + by=wTx+b),但二分类任务需要输出“属于正类的概率”(范围 [0,1])。直接用线性回归存在两个问题:

  • 输出可能超出 [0,1],不符合概率定义;
  • 线性回归假设输出与特征呈线性关系,但分类任务中“概率与特征的关系”往往是非线性的。

2. 引入“Sigmoid函数”(激活函数)

为解决上述问题,逻辑回归在线性回归的基础上嵌套了Sigmoid函数,将线性输出映射到 [0,1] 区间,得到“样本属于正类的概率”。

Sigmoid函数(也叫Logistic函数)的定义:
σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1
其中 zzz 是线性回归的输出(即 z=wTx+bz = \boldsymbol{w}^T\boldsymbol{x} + bz=wTx+b),w\boldsymbol{w}w 是权重向量,x\boldsymbol{x}x 是输入特征向量,bbb 是偏置项。

3. Sigmoid函数的关键性质

  • 值域:σ(z)∈(0,1)\sigma(z) \in (0,1)σ(z)(0,1),完美契合概率的取值范围;
  • 单调性:当 z→+∞z \to +\inftyz+ 时,σ(z)→1\sigma(z) \to 1σ(z)1;当 z→−∞z \to -\inftyz 时,σ(z)→0\sigma(z) \to 0σ(z)0;当 z=0z=0z=0 时,σ(z)=0.5\sigma(z)=0.5σ(z)=0.5
  • 导数性质(后续推导关键):σ′(z)=σ(z)(1−σ(z))\sigma'(z) = \sigma(z)(1 - \sigma(z))σ(z)=σ(z)(1σ(z)),推导如下:
    σ′(z)=ddz(11+e−z)=e−z(1+e−z)2=11+e−z⋅(1−11+e−z)=σ(z)(1−σ(z))\sigma'(z) = \frac{d}{dz}\left(\frac{1}{1 + e^{-z}}\right) = \frac{e^{-z}}{(1 + e^{-z})^2} = \frac{1}{1 + e^{-z}} \cdot \left(1 - \frac{1}{1 + e^{-z}}\right) = \sigma(z)(1 - \sigma(z)) σ(z)=dzd(1+ez1)=(1+ez)2ez=1+ez1(11+ez1)=σ(z)(1σ(z))

4. 逻辑回归的最终形式

结合线性回归和Sigmoid函数,逻辑回归对“样本 x\boldsymbol{x}x 属于正类(记为 y=1y=1y=1)”的概率预测为:
P(y=1∣x;w,b)=σ(wTx+b)=11+e−(wTx+b)(1)P(y=1 \mid \boldsymbol{x}; \boldsymbol{w}, b) = \sigma(\boldsymbol{w}^T\boldsymbol{x} + b) = \frac{1}{1 + e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}} \tag{1} P(y=1x;w,b)=σ(wTx+b)=1+e(wTx+b)1(1)

对应的,“样本属于负类(y=0y=0y=0)”的概率为:
P(y=0∣x;w,b)=1−P(y=1∣x;w,b)=e−(wTx+b)1+e−(wTx+b)(2)P(y=0 \mid \boldsymbol{x}; \boldsymbol{w}, b) = 1 - P(y=1 \mid \boldsymbol{x}; \boldsymbol{w}, b) = \frac{e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}}{1 + e^{-(\boldsymbol{w}^T\boldsymbol{x} + b)}} \tag{2} P(y=0x;w,b)=1P(y=1x;w,b)=1+e(wTx+b)e(wTx+b)(2)

二、模型参数估计(极大似然估计MLE)

逻辑回归的核心是求解最优参数 w\boldsymbol{w}wbbb,使得模型对训练数据的预测概率尽可能接近真实标签。这里采用极大似然估计(Maximum Likelihood Estimation, MLE),核心思想是:“让观测到的训练数据出现的概率最大”。

1. 似然函数(Likelihood Function)

假设训练集有 NNN 个独立同分布的样本 {(x1,y1),(x2,y2),...,(xN,yN)}\{(\boldsymbol{x}_1, y_1), (\boldsymbol{x}_2, y_2), ..., (\boldsymbol{x}_N, y_N)\}{(x1,y1),(x2,y2),...,(xN,yN)},其中 yi∈{0,1}y_i \in \{0,1\}yi{0,1} 是第 iii 个样本的真实标签。

将式(1)和式(2)合并为统一形式(利用 yiy_iyi 只能取0或1的性质):
P(yi∣xi;w,b)=[P(y=1∣xi;w,b)]yi⋅[1−P(y=1∣xi;w,b)]1−yiP(y_i \mid \boldsymbol{x}_i; \boldsymbol{w}, b) = \left[P(y=1 \mid \boldsymbol{x}_i; \boldsymbol{w}, b)\right]^{y_i} \cdot \left[1 - P(y=1 \mid \boldsymbol{x}_i; \boldsymbol{w}, b)\right]^{1 - y_i} P(yixi;w,b)=[P(y=1xi;w,b)]yi[1P(y=1xi;w,b)]1yi

  • yi=1y_i=1yi=1 时,第二项为1,表达式退化为 P(y=1∣xi)P(y=1 \mid \boldsymbol{x}_i)P(y=1xi)
  • yi=0y_i=0yi=0 时,第一项为1,表达式退化为 P(y=0∣xi)P(y=0 \mid \boldsymbol{x}_i)P(y=0xi)

由于样本独立,整个训练集的似然函数(所有样本同时出现的概率)是单个样本似然的乘积:
L(w,b)=∏i=1NP(yi∣xi;w,b)=∏i=1N[σ(wTxi+b)]yi⋅[1−σ(wTxi+b)]1−yi\mathcal{L}(\boldsymbol{w}, b) = \prod_{i=1}^N P(y_i \mid \boldsymbol{x}_i; \boldsymbol{w}, b) = \prod_{i=1}^N \left[\sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)\right]^{y_i} \cdot \left[1 - \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)\right]^{1 - y_i} L(w,b)=i=1NP(yixi;w,b)=i=1N[σ(wTxi+b)]yi[1σ(wTxi+b)]1yi

2. 对数似然函数(Log-Likelihood)

乘积形式的似然函数计算复杂,且易出现数值下溢。通过取对数将乘积转化为求和,得到对数似然函数(对数是单调递增函数,最大化似然等价于最大化对数似然):
ℓ(w,b)=log⁡L(w,b)=∑i=1N[yilog⁡σ(wTxi+b)+(1−yi)log⁡(1−σ(wTxi+b))]\ell(\boldsymbol{w}, b) = \log \mathcal{L}(\boldsymbol{w}, b) = \sum_{i=1}^N \left[ y_i \log \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b) + (1 - y_i) \log \left(1 - \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)\right) \right] (w,b)=logL(w,b)=i=1N[yilogσ(wTxi+b)+(1yi)log(1σ(wTxi+b))]

3. 损失函数(负对数似然)

机器学习中通常最小化“损失函数”,因此将对数似然函数取负,得到逻辑回归的损失函数(也叫交叉熵损失,Cross-Entropy Loss):
J(w,b)=−1Nℓ(w,b)=−1N∑i=1N[yilog⁡pi+(1−yi)log⁡(1−pi)](3)\mathcal{J}(\boldsymbol{w}, b) = -\frac{1}{N} \ell(\boldsymbol{w}, b) = -\frac{1}{N} \sum_{i=1}^N \left[ y_i \log p_i + (1 - y_i) \log (1 - p_i) \right] \tag{3} J(w,b)=N1(w,b)=N1i=1N[yilogpi+(1yi)log(1pi)](3)
其中 pi=P(yi=1∣xi;w,b)=σ(wTxi+b)p_i = P(y_i=1 \mid \boldsymbol{x}_i; \boldsymbol{w}, b) = \sigma(\boldsymbol{w}^T\boldsymbol{x}_i + b)pi=P(yi=1xi;w,b)=σ(wTxi+b)1N\frac{1}{N}N1 是对样本数归一化,避免样本量影响损失大小。

损失函数的直观意义
  • yi=1y_i=1yi=1 且模型预测 pi≈1p_i \approx 1pi1log⁡pi≈0\log p_i \approx 0logpi0,损失趋近于0(预测准确);
  • yi=1y_i=1yi=1 但模型预测 pi≈0p_i \approx 0pi0log⁡pi≈−∞\log p_i \approx -\inftylogpi,损失趋近于 +∞+\infty+(预测错误,惩罚极大);
  • 同理,yi=0y_i=0yi=0 时,pip_ipi 越接近0,损失越小。

三、参数求解(梯度下降法)

损失函数 J(w,b)\mathcal{J}(\boldsymbol{w}, b)J(w,b)凸函数(无局部最优解,只有全局最优解),可通过梯度下降法(Gradient Descent)最小化损失,求解最优参数 w∗\boldsymbol{w}^*wb∗b^*b

1. 梯度计算(关键步骤)

梯度下降的核心是计算损失函数对每个参数的偏导数(梯度),再沿梯度反方向更新参数。为简化推导,先将 w\boldsymbol{w}wbbb 合并为扩展参数向量 w~=[w;b]\tilde{\boldsymbol{w}} = [\boldsymbol{w}; b]w~=[w;b],对应的输入特征扩展为 x~i=[xi;1]\tilde{\boldsymbol{x}}_i = [\boldsymbol{x}_i; 1]x~i=[xi;1](即给每个样本特征加一个常数1,将偏置 bbb 融入权重 w\boldsymbol{w}w 中),此时线性输出可简化为 zi=w~Tx~iz_i = \tilde{\boldsymbol{w}}^T \tilde{\boldsymbol{x}}_izi=w~Tx~ipi=σ(zi)p_i = \sigma(z_i)pi=σ(zi)

(1)损失函数对单个样本的偏导数

先计算单个样本的损失(式(3)去掉 1N\frac{1}{N}N1 和求和)对 w~\tilde{\boldsymbol{w}}w~ 的偏导数:
∂∂w~[−yilog⁡pi−(1−yi)log⁡(1−pi)]\frac{\partial}{\partial \tilde{\boldsymbol{w}}} \left[ -y_i \log p_i - (1 - y_i) \log (1 - p_i) \right] w~[yilogpi(1yi)log(1pi)]

代入 pi=σ(zi)=11+e−zip_i = \sigma(z_i) = \frac{1}{1 + e^{-z_i}}pi=σ(zi)=1+ezi1,并利用Sigmoid的导数性质 σ′(zi)=pi(1−pi)\sigma'(z_i) = p_i(1 - p_i)σ(zi)=pi(1pi),分步推导:

  1. log⁡pi\log p_ilogpi 求偏导:∂log⁡pi∂w~=1pi⋅∂pi∂w~=1pi⋅pi(1−pi)⋅∂zi∂w~=(1−pi)x~i\frac{\partial \log p_i}{\partial \tilde{\boldsymbol{w}}} = \frac{1}{p_i} \cdot \frac{\partial p_i}{\partial \tilde{\boldsymbol{w}}} = \frac{1}{p_i} \cdot p_i(1 - p_i) \cdot \frac{\partial z_i}{\partial \tilde{\boldsymbol{w}}} = (1 - p_i) \tilde{\boldsymbol{x}}_iw~logpi=pi1w~pi=pi1pi(1pi)w~zi=(1pi)x~i
  2. log⁡(1−pi)\log (1 - p_i)log(1pi) 求偏导:∂log⁡(1−pi)∂w~=−11−pi⋅∂pi∂w~=−11−pi⋅pi(1−pi)⋅x~i=−pix~i\frac{\partial \log (1 - p_i)}{\partial \tilde{\boldsymbol{w}}} = \frac{-1}{1 - p_i} \cdot \frac{\partial p_i}{\partial \tilde{\boldsymbol{w}}} = \frac{-1}{1 - p_i} \cdot p_i(1 - p_i) \cdot \tilde{\boldsymbol{x}}_i = -p_i \tilde{\boldsymbol{x}}_iw~log(1pi)=1pi1w~pi=1pi1pi(1pi)x~i=pix~i
  3. 合并代入损失函数的偏导:
    ∂∂w~[−yilog⁡pi−(1−yi)log⁡(1−pi)]=−yi(1−pi)x~i+(1−yi)pix~i=(pi−yi)x~i\frac{\partial}{\partial \tilde{\boldsymbol{w}}} \left[ -y_i \log p_i - (1 - y_i) \log (1 - p_i) \right] = -y_i(1 - p_i)\tilde{\boldsymbol{x}}_i + (1 - y_i)p_i \tilde{\boldsymbol{x}}_i = (p_i - y_i) \tilde{\boldsymbol{x}}_i w~[yilogpi(1yi)log(1pi)]=yi(1pi)x~i+(1yi)pix~i=(piyi)x~i
(2)整个训练集的梯度(批量梯度下降)

对所有样本的损失求平均(即式(3)的梯度):
∇w~J(w~)=1N∑i=1N(pi−yi)x~i(4)\nabla_{\tilde{\boldsymbol{w}}} \mathcal{J}(\tilde{\boldsymbol{w}}) = \frac{1}{N} \sum_{i=1}^N (p_i - y_i) \tilde{\boldsymbol{x}}_i \tag{4} w~J(w~)=N1i=1N(piyi)x~i(4)

若不使用扩展参数(分开 w\boldsymbol{w}wbbb),梯度可拆分为:

  • 对权重 w\boldsymbol{w}w 的梯度:∇wJ(w,b)=1N∑i=1N(pi−yi)xi\nabla_{\boldsymbol{w}} \mathcal{J}(\boldsymbol{w}, b) = \frac{1}{N} \sum_{i=1}^N (p_i - y_i) \boldsymbol{x}_iwJ(w,b)=N1i=1N(piyi)xi
  • 对偏置 bbb 的梯度:∇bJ(w,b)=1N∑i=1N(pi−yi)\nabla_b \mathcal{J}(\boldsymbol{w}, b) = \frac{1}{N} \sum_{i=1}^N (p_i - y_i)bJ(w,b)=N1i=1N(piyi)(因为 x~i\tilde{\boldsymbol{x}}_ix~i 的最后一维是1,求和后对应偏置的梯度)。

2. 参数更新规则

梯度下降的参数更新公式为:沿梯度反方向移动,步长由学习率 η\etaηη>0\eta > 0η>0)控制:
w~(t+1)=w~(t)−η⋅∇w~J(w~(t))\tilde{\boldsymbol{w}}^{(t+1)} = \tilde{\boldsymbol{w}}^{(t)} - \eta \cdot \nabla_{\tilde{\boldsymbol{w}}} \mathcal{J}(\tilde{\boldsymbol{w}}^{(t)}) w~(t+1)=w~(t)ηw~J(w~(t))
代入式(4),得到具体更新:
w~(t+1)=w~(t)−η⋅1N∑i=1N(pi(t)−yi)x~i\tilde{\boldsymbol{w}}^{(t+1)} = \tilde{\boldsymbol{w}}^{(t)} - \eta \cdot \frac{1}{N} \sum_{i=1}^N (p_i^{(t)} - y_i) \tilde{\boldsymbol{x}}_i w~(t+1)=w~(t)ηN1i=1N(pi(t)yi)x~i
其中 pi(t)=σ(w~(t)Tx~i)p_i^{(t)} = \sigma(\tilde{\boldsymbol{w}}^{(t)T} \tilde{\boldsymbol{x}}_i)pi(t)=σ(w~(t)Tx~i) 是第 ttt 轮迭代的预测概率。

常见梯度下降变体
  • 批量梯度下降(BGD):每次用所有样本计算梯度(式(4)),稳定但速度慢;
  • 随机梯度下降(SGD):每次用单个样本计算梯度(∇J≈(pi−yi)x~i\nabla \mathcal{J} \approx (p_i - y_i) \tilde{\boldsymbol{x}}_iJ(piyi)x~i),速度快但波动大;
  • 小批量梯度下降(Mini-batch GD):每次用 kkk 个样本(1<k<N1 < k < N1<k<N)计算梯度,兼顾速度和稳定性(实际应用中最常用)。

3. 迭代终止条件

当满足以下任一条件时,停止迭代:

  • 损失函数 J(w,b)\mathcal{J}(\boldsymbol{w}, b)J(w,b) 的下降量小于预设阈值(如 10−610^{-6}106);
  • 梯度的L2范数小于阈值(梯度趋近于0,接近最优解);
  • 迭代次数达到预设最大值。

四、模型预测规则

训练完成后,得到最优参数 w∗\boldsymbol{w}^*wb∗b^*b,对新样本 xnew\boldsymbol{x}_{\text{new}}xnew 的预测步骤:

  1. 计算线性输出:znew=w∗Txnew+b∗z_{\text{new}} = \boldsymbol{w}^{*T} \boldsymbol{x}_{\text{new}} + b^*znew=wTxnew+b
  2. 计算正类概率:pnew=σ(znew)=11+e−znewp_{\text{new}} = \sigma(z_{\text{new}}) = \frac{1}{1 + e^{-z_{\text{new}}}}pnew=σ(znew)=1+eznew1
  3. 分类决策(默认阈值0.5):
    • pnew≥0.5p_{\text{new}} \geq 0.5pnew0.5,预测为正类(ypred=1y_{\text{pred}} = 1ypred=1);
    • pnew<0.5p_{\text{new}} < 0.5pnew<0.5,预测为负类(ypred=0y_{\text{pred}} = 0ypred=0)。

阈值可根据业务需求调整(如医疗诊断中,为降低漏诊率,可将阈值调小至0.3)。

五、关键补充:对数几率回归的本质

逻辑回归的另一种解读是“对数几率回归”,即:正类概率与负类概率的比值(几率)的对数,是特征的线性函数

几率(Odds)的定义:正类概率与负类概率的比:Odds(y=1∣x)=P(y=1∣x)1−P(y=1∣x)\text{Odds}(y=1 \mid \boldsymbol{x}) = \frac{P(y=1 \mid \boldsymbol{x})}{1 - P(y=1 \mid \boldsymbol{x})}Odds(y=1x)=1P(y=1x)P(y=1x)

对几率取对数(对数几率,Logit):
log⁡(P(y=1∣x)1−P(y=1∣x))=wTx+b(5)\log \left( \frac{P(y=1 \mid \boldsymbol{x})}{1 - P(y=1 \mid \boldsymbol{x})} \right) = \boldsymbol{w}^T \boldsymbol{x} + b \tag{5} log(1P(y=1x)P(y=1x))=wTx+b(5)

推导验证:将 P=σ(wTx+b)P = \sigma(\boldsymbol{w}^T\boldsymbol{x} + b)P=σ(wTx+b) 代入左边:
log⁡(P1−P)=log⁡(11+e−ze−z1+e−z)=log⁡(ez)=z=wTx+b\log \left( \frac{P}{1 - P} \right) = \log \left( \frac{\frac{1}{1 + e^{-z}}}{\frac{e^{-z}}{1 + e^{-z}}} \right) = \log(e^z) = z = \boldsymbol{w}^T\boldsymbol{x} + b log(1PP)=log(1+ezez1+ez1)=log(ez)=z=wTx+b
与式(5)一致。这说明:逻辑回归本质是通过线性模型拟合“对数几率”,而非直接拟合概率——这也是它被称为“对数几率回归”的原因。

六、总结

  1. 模型形式:逻辑回归 = 线性回归 + Sigmoid函数,核心是将线性输出映射为概率;
  2. 损失函数:交叉熵损失(负对数似然),确保预测概率与真实标签一致;
  3. 参数求解:通过梯度下降法最小化损失,利用Sigmoid的导数性质简化梯度计算;
  4. 核心优势:模型简单、可解释性强(权重 w\boldsymbol{w}w 可反映特征对分类的影响程度)、训练速度快、泛化能力稳定;
  5. 适用场景:二分类任务,尤其适合需要概率输出和特征解释的场景。

逻辑回归的扩展形式(如Softmax回归)可用于多分类任务,但其核心思想(线性拟合+概率映射)保持一致。

http://www.dtcms.com/a/589829.html

相关文章:

  • 网站搜索引擎优化建议辽宁省建设局网站
  • Rust中Protobuf使用简介
  • 【ISO8601库】日期时间解析器测试套件详解(tests.rs)
  • 游戏手柄遥控越疆协作机器人[三]
  • 怎样搭建免费网站一个网站怎么做镜像站
  • 专业网站建设套餐深圳西乡网站建设
  • 35.linux的定时器使用
  • 网站建设最好的公司哪家好太原的网站搭建公司
  • 【开题答辩全过程】以 基于SpringBoot的中央厨房系统的设计与实现为例,包含答辩的问题和答案
  • 如何做到30分钟可完成企业网站建设
  • 自己做的美食分享到网站用wordpress做网站页面显示404
  • 打工人日报#20251109
  • 沃森 | 科学突破与争议并存 / “与智者为伍” 的人生启示
  • zmaiFy自研排版与格式优化介绍
  • ESLint 是什么?
  • 车联网UDS诊断:0x22,0x2E,0x11,0x2F,0x31,0x28请求数据分析实战.
  • Python字符串详解
  • STL中容器vector -- 讲解超详细
  • 线性代数 - 特征值和特征向量可视化是什么样的
  • 不用下载劰网站的片你懂的荷塘网站建设
  • 网站优化推广软件建立微信小程序
  • 【Java Web学习 | 第七篇】JavaScript(1) 基础知识1
  • ERROR: Failed building wheel for dlib
  • 【Cursor AI编程】Cursor安装与初始化
  • 网站建设规划书的目的做两个阿里网站吗
  • 正交频分复用技术
  • 【Android】活动的生命周期、启动模式及标记位
  • 建站案例系统小说
  • 招聘网站建设维护广西城乡建设部网站
  • 多线程编程:从日志到单例模式全解析