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

手把手带你推导“逻辑回归”核心公式

在机器学习中,逻辑回归是一种用于分类问题的模型,它的输出是一个概率值,表示某个样本属于某个类别的概率。

比如,在医疗诊断中,逻辑回归可以输出患者患病的概率。

逻辑回归不仅在医疗领域大显身手,还在金融、市场营销等众多领域发挥着重要作用。可以说,逻辑回归是数据分析的必备工具之一。


一、逻辑回归基础


在介绍逻辑回归之前,我们先回顾一下线性回归。

线性回归是一种用于回归问题的模型,它的目标是找到一条直线,让这条直线尽可能地“贴合”数据点。

图1. 线性回归

然而,线性回归在处理分类问题时会遇到一些问题。

比如,线性回归的输出是一个连续的数值,而分类问题需要的是一个离散的类别标签(如0或1)。

这就需要一种新的模型来解决分类问题,逻辑回归应运而生。


二、逻辑回归的核心公式


逻辑回归(Logistic Regression)是一种用于二分类问题的统计模型。

其核心公式是 Sigmoid 函数,也称为 Logistic 函数,它将线性回归的输出映射到 [0,1] 区间内,表示为概率。

逻辑回归的公式如下:

P(y=1∣x)=11+e−(β0+β1x1+⋯+βpxp) P(y = 1|x) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p)}} P(y=1∣x)=1+e(β0+β1x1++βpxp)1

其中:

  • P(y=1∣x)P(y = 1|x)P(y=1∣x) 是给定特征 xxx 的条件下,目标变量 yyy 等于 1 的概率。
  • β0,β1,…,βp\beta_0, \beta_1, \ldots, \beta_pβ0,β1,,βp 是模型的参数,其中 β0\beta_0β0 是截距项,β1,…,βp\beta_1, \ldots, \beta_pβ1,,βp 是特征系数。
  • x1,x2,…,xpx_1, x_2, \ldots, x_px1,x2,,xp 是特征变量。
图2. Sigmoid 函数图像

Sigmoid 函数 的图形是一个 S 形曲线,当线性组合 β0+β1x1+⋯+βpxp\beta_0 + \beta_1 x_1 + \cdots + \beta_p x_pβ0+β1x1++βpxp 趋向于正无穷时,P(y=1∣x)P(y = 1|x)P(y=1∣x) 趋向于 1;当线性组合趋向于负无穷时,P(y=1∣x)P(y = 1|x)P(y=1∣x) 趋向于 0。

逻辑回归的目标是找到参数 β0,β1,…,βp\beta_0, \beta_1, \ldots, \beta_pβ0,β1,,βp,使得模型的预测概率与实际观测值之间的差异最小。

这通常可以通过极大似然估计(Maximum Likelihood Estimation, MLE)来实现,即最大化似然函数或等价地最小化负对数似然函数(Negative Log-Likelihood, NLL)。

对于一个包含 nnn 个独立样本的数据集 {(xi,yi)}i=1n\{(x_i, y_i)\}_{i=1}^n{(xi,yi)}i=1n,其中 yi∈{0,1}y_i \in \{0, 1\}yi{0,1},似然函数为:

L(β)=∏i=1nP(yi∣xi)=∏i=1n[P(yi=1∣xi)]yi[1−P(yi=1∣xi)]1−yi L(\beta) = \prod_{i=1}^{n} P(y_i|x_i) = \prod_{i=1}^{n} \left[P(y_i = 1|x_i)\right]^{y_i} \left[1 - P(y_i = 1|x_i)\right]^{1-y_i} L(β)=i=1nP(yixi)=i=1n[P(yi=1∣xi)]yi[1P(yi=1∣xi)]1yi

负对数似然函数为:

NLL(β)=−∑i=1n[yilog⁡P(yi=1∣xi)+(1−yi)log⁡(1−P(yi=1∣xi))] NLL(\beta) = - \sum_{i=1}^{n} \left[ y_i \log P(y_i = 1|x_i) + (1 - y_i) \log (1 - P(y_i = 1|x_i)) \right] NLL(β)=i=1n[yilogP(yi=1∣xi)+(1yi)log(1P(yi=1∣xi))]

通过最小化负对数似然函数,可以得到模型参数的极大似然估计。这通常使用梯度下降或其他优化算法来实现。

综上所述,逻辑回归的核心公式是 Sigmoid 函数,它将线性组合的输出映射到概率值。通过极大似然估计,可以找到最适合数据的模型参数。


三、逻辑回归公式推导


好的!接下来我从零开始,一步步推导逻辑回归的核心公式,特别是利用极大似然估计来求解参数的过程。

图3. 逻辑回归原理示意图

这个过程会涉及大量的数学推导,我会尽量详细地解释每一步🤗🤗🤗。

3.1 模型定义

逻辑回归是一种用于二分类问题的模型。假设我们有一组数据点 (xi,yi)(\mathbf{x}_i, y_i)(xi,yi),其中 xi\mathbf{x}_ixi 是特征向量,yi∈{0,1}y_i \in \{0, 1\}yi{0,1} 是目标变量。

逻辑回归模型的目标是预测 y=1y = 1y=1 的概率,即:

P(y=1∣x)=σ(βTx) P(y = 1|\mathbf{x}) = \sigma(\beta^T \mathbf{x}) P(y=1∣x)=σ(βTx)

其中,σ(z)\sigma(z)σ(z) 是 Sigmoid 函数:

σ(z)=11+e−z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1

βTx\beta^T \mathbf{x}βTx 是线性部分:

βTx=β0+β1x1+β2x2+⋯+βnxn \beta^T \mathbf{x} = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_n x_n βTx=β0+β1x1+β2x2++βnxn

3.2 参数求解

逻辑回归通过极大似然估计来求解模型参数。

极大似然估计的基本思想是:找到一组参数,使得观测到的数据出现的概率最大。对于二分类问题,每个样本 iii 的似然函数可以表示为:

P(yi∣xi,β)=σ(βTxi)yi⋅(1−σ(βTxi))1−yi P(y_i|\mathbf{x}_i, \beta) = \sigma(\beta^T \mathbf{x}_i)^{y_i} \cdot (1 - \sigma(\beta^T \mathbf{x}_i))^{1-y_i} P(yixi,β)=σ(βTxi)yi(1σ(βTxi))1yi

这个公式的意思是:

  • 如果 yi=1y_i = 1yi=1,则似然函数为 σ(βTxi)\sigma(\beta^T \mathbf{x}_i)σ(βTxi)
  • 如果 yi=0y_i = 0yi=0,则似然函数为 1−σ(βTxi)1 - \sigma(\beta^T \mathbf{x}_i)1σ(βTxi)

对于整个数据集,似然函数 L(β)L(\beta)L(β) 是所有样本似然函数的乘积:

L(β)=∏i=1nσ(βTxi)yi⋅(1−σ(βTxi))1−yi L(\beta) = \prod_{i=1}^{n} \sigma(\beta^T \mathbf{x}_i)^{y_i} \cdot (1 - \sigma(\beta^T \mathbf{x}_i))^{1-y_i} L(β)=i=1nσ(βTxi)yi(1σ(βTxi))1yi

为了简化计算,我们通常取对数似然函数 ℓ(β)\ell(\beta)(β)

ℓ(β)=log⁡L(β)=∑i=1n[yilog⁡σ(βTxi)+(1−yi)log⁡(1−σ(βTxi))] \ell(\beta) = \log L(\beta) = \sum_{i=1}^{n} \left[ y_i \log \sigma(\beta^T \mathbf{x}_i) + (1 - y_i) \log (1 - \sigma(\beta^T \mathbf{x}_i)) \right] (β)=logL(β)=i=1n[yilogσ(βTxi)+(1yi)log(1σ(βTxi))]

为了找到最优的参数 β\betaβ,我们需要最大化对数似然函数 ℓ(β)\ell(\beta)(β)

3.3 优化方法

由于对数似然函数是一个非线性凸函数,我们通常可以使用数值优化算法,如梯度上升法(或梯度下降法)来求解。

  1. 梯度计算

我们需要计算对数似然函数 ℓ(β)\ell(\beta)(β) 对每个参数 βj\beta_jβj 的梯度:

∂ℓ(β)∂βj=∑i=1n[yiσ(βTxi)−1−yi1−σ(βTxi)]⋅∂σ(βTxi)∂βj \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^{n} \left[ \frac{y_i}{\sigma(\beta^T \mathbf{x}_i)} - \frac{1 - y_i}{1 - \sigma(\beta^T \mathbf{x}_i)} \right] \cdot \frac{\partial \sigma(\beta^T \mathbf{x}_i)}{\partial \beta_j} βj(β)=i=1n[σ(βTxi)yi1σ(βTxi)1yi]βjσ(βTxi)

根据 Sigmoid 函数的导数:

∂σ(βTxi)∂βj=σ(βTxi)(1−σ(βTxi))⋅xij \frac{\partial \sigma(\beta^T \mathbf{x}_i)}{\partial \beta_j} = \sigma(\beta^T \mathbf{x}_i)(1 - \sigma(\beta^T \mathbf{x}_i)) \cdot x_{ij} βjσ(βTxi)=σ(βTxi)(1σ(βTxi))xij

因此

∂ℓ(β)∂βj=∑i=1n[yi−σ(βTxi)]⋅xij \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^{n} \left[ y_i - \sigma(\beta^T \mathbf{x}_i) \right] \cdot x_{ij} βj(β)=i=1n[yiσ(βTxi)]xij

  1. 梯度上升更新公式

根据梯度上升算法,参数的更新公式为:

βj=βj+α∂ℓ(β)∂βj \beta_j = \beta_j + \alpha \frac{\partial \ell(\beta)}{\partial \beta_j} βj=βj+αβj(β)

代入梯度:

βj=βj+α∑i=1n[yi−σ(βTxi)]⋅xij \beta_j = \beta_j + \alpha \sum_{i=1}^{n} \left[ y_i - \sigma(\beta^T \mathbf{x}_i) \right] \cdot x_{ij} βj=βj+αi=1n[yiσ(βTxi)]xij

其中,α\alphaα 是学习率,控制每次更新的步长。

通过上述步骤,我们可以找到最优的模型参数 β\betaβ,使得对数似然函数最大。最终的逻辑回归模型为:

P(y=1∣x)=σ(βTx) P(y = 1|\mathbf{x}) = \sigma(\beta^T \mathbf{x}) P(y=1∣x)=σ(βTx)



- 结语 -

今天,我们从零开始,一步步推导了逻辑回归模型的核心公式。我们了解了逻辑回归的基本概念、核心公式、Sigmoid函数,以及极大似然估计。

但逻辑回归也有它的局限性,比如它只能处理线性可分问题,对于复杂的非线性关系就无能为力了。不过别担心,还有其他更强大的模型等着我们去探索,比如支持向量机、决策树等。

最后,希望你能动手实践一下逻辑回归模型,用真实的数据去感受它的魅力。

注:本文中未声明的图片均来源于互联网


文章转载自:

http://3kbH2Wzq.rzbgn.cn
http://XvN2qLmt.rzbgn.cn
http://hmamG92x.rzbgn.cn
http://aDJK3UVr.rzbgn.cn
http://w2sWjecX.rzbgn.cn
http://n8akp7kM.rzbgn.cn
http://YJm3Ipz5.rzbgn.cn
http://sIkAhcCy.rzbgn.cn
http://kozKlFa7.rzbgn.cn
http://V5qJFxk5.rzbgn.cn
http://qE33RNIn.rzbgn.cn
http://18e4W6Ix.rzbgn.cn
http://ZcNmMv0H.rzbgn.cn
http://qaukeLKu.rzbgn.cn
http://MunA5f8F.rzbgn.cn
http://bDFCEynN.rzbgn.cn
http://3gPK4cDL.rzbgn.cn
http://OT6HPHzY.rzbgn.cn
http://aqZ9Zrl9.rzbgn.cn
http://OZ0mgyLv.rzbgn.cn
http://eyrXbP0h.rzbgn.cn
http://PPNZChIl.rzbgn.cn
http://iA4gzwA9.rzbgn.cn
http://zePeX5h7.rzbgn.cn
http://stwgffud.rzbgn.cn
http://ZBsH1uAn.rzbgn.cn
http://XR06DruU.rzbgn.cn
http://KMY5kxv8.rzbgn.cn
http://MkUVt8lr.rzbgn.cn
http://lsjsyGpk.rzbgn.cn
http://www.dtcms.com/a/376984.html

相关文章:

  • 当按摩机器人“活了”:Deepoc具身智能如何重新定义人机交互体验
  • solidity得高级语法3
  • PLM 与机器视觉协同:三维模型驱动自动光学检测标准制定
  • vuecli中使用splitchunksplugin提取公共组件,vue单组件使用less scoped处理style,打包会有css顺序冲突警告
  • 元宇宙与旅游产业:沉浸式体验重构旅行全流程
  • 城市道路落叶清扫机设计【三维SW模型】【含9张CAD
  • apache poi 导出复杂的excel表格
  • 海外盲盒APP开发:如何用技术重构“惊喜经济”
  • Linux快速安装JDK1.8
  • 高可用消息队列线程池设计与实现:从源码解析到最佳实践
  • 使用nvm管理node多版本(安装、卸载nvm,配置环境变量,更换npm淘宝镜像)
  • Python 0909
  • 二进制安装MySQL 8.0指南:跨平台、自定义数据路径、安全远程访问配置
  • MySQL - 全表扫描 会发生死锁?
  • 0代码,教你三步搭建AI Agent
  • Flask 前后端分离架构实现支付宝电脑网站支付功能
  • Next.js 客户端渲染 (CSR) 与 Next.js 的结合使用
  • GitHub 镜像站点
  • S7-200 SMART 实战:自动包装控制系统的指令应用拆解(程序部分)
  • 从音频到Token:构建原神角色语音识别模型的完整实践
  • 【从0开始学习Java | 第16篇】数据结构 -树
  • (设计模式)区分建造者、 规格模式(MyBatis Example+Criteria )
  • Shell 条件测试与 if 语句:从基础到实战
  • 数据结构 之 【布隆过滤器 的简介】
  • 《sklearn机器学习——数据预处理》归一化
  • 网络编程(7)
  • 嘉立创EDA从原理图框选住器件进行PCB布局
  • 浅谈代理流程自动化 (APA)
  • 图论3 图的遍历
  • MySQL内核革新:智能拦截全表扫描,百度智能云守护数据库性能与安全