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

逻辑回归:从线性回归到分类决策的演化

结合逻辑回归的核心原理、数学推导与工程实践进行系统化阐述:


逻辑回归:从线性回归到分类决策的演化

为何名为“回归”却用于分类?揭秘Sigmoid函数的桥梁作用与决策边界本质


一、问题起源:线性回归为何不能直接用于分类?
  1. 回归 vs 分类的本质差异

    • 线性回归:输出连续值(如房价预测),拟合直线最小化误差(如均方误差)
    • 分类任务:输出离散类别(如红/绿点分类),需找到决策边界分离数据
    • 关键矛盾:线性回归的输出范围是(−∞,+∞)(-\infty, +\infty)(−∞,+∞),无法直接映射到类别标签(0/1)
  2. 直接使用线性回归的缺陷

    • 若强行设定阈值(如 y>0.5y>0.5y>0.5 判为正类),存在两大问题:
      • 输出值无概率意义(可能超出[0,1]范围)
      • 分段函数不可导,无法优化参数
        例:二维空间中,线性方程 y=θ0+θ1x1+θ2x2y = \theta_0 + \theta_1x_1 + \theta_2x_2y=θ0​+θ1​x1​+θ2​x2​ 无法将红绿点分到直线两侧

二、核心突破:Sigmoid函数如何连接回归与分类?
  1. Sigmoid函数的数学魔力
    σ(z)=11+e−z其中 z=θTx\sigma(z) = \frac{1}{1 + e^{-z}} \quad \text{其中 } z = \theta^Txσ(z)=1+e−z1​其中 z=θTx

    • 值域压缩​:将任意实数 zzz 映射到 (0,1)(0,1)(0,1) 区间,输出可解释为概率
    • 可导性​:导数 σ′(z)=σ(z)(1−σ(z))\sigma'(z) = \sigma(z)(1-\sigma(z))σ′(z)=σ(z)(1−σ(z)),便于梯度下降优化
    • 决策规则​:
      y^={1if σ(z)≥0.50otherwise\hat{y} = \begin{cases} 1 & \text{if } \sigma(z) \geq 0.5 \\ 0 & \text{otherwise} \end{cases}y^​={10​if σ(z)≥0.5otherwise​

  2. 为何不用分段函数?​

    • 分段函数(如 z>0z>0z>0 输出1)不可导,无法通过梯度下降求解参数 θ\thetaθ
    • Sigmoid提供平滑近似,保留可导性且逼近阶跃函数

三、数学推导:从概率建模到参数优化
  1. 概率建模

    • 正类概率: P(y=1∣x)=σ(θTx)=11+e−θTxP(y=1|x) = \sigma(\theta^Tx) = \frac{1}{1+e^{-\theta^Tx}}P(y=1∣x)=σ(θTx)=1+e−θTx1​
    • 负类概率: P(y=0∣x)=1−P(y=1∣x)P(y=0|x) = 1 - P(y=1|x)P(y=0∣x)=1−P(y=1∣x)
  2. 损失函数:交叉熵(Cross-Entropy)​

    • 通过极大似然估计推导:
      L(θ)=∏i=1nP(yi∣xi;θ)=∏i=1ny^iyi(1−y^i)1−yiL(\theta) = \prod_{i=1}^n P(y_i|x_i;\theta) = \prod_{i=1}^n \hat{y}_i^{y_i} (1-\hat{y}_i)^{1-y_i}L(θ)=∏i=1n​P(yi​∣xi​;θ)=∏i=1n​y^​iyi​​(1−y^​i​)1−yi​
    • 取负对数似然得损失函数:
      J(θ)=−1n∑i=1n[yiln⁡(y^i)+(1−yi)ln⁡(1−y^i)]J(\theta) = -\frac{1}{n} \sum_{i=1}^n \left[ y_i \ln(\hat{y}_i) + (1-y_i) \ln(1-\hat{y}_i) \right]J(θ)=−n1​∑i=1n​[yi​ln(y^​i​)+(1−yi​)ln(1−y^​i​)]
      注:此函数凸性保证梯度下降收敛到全局最优
  3. 梯度下降优化

    • 梯度计算:
      ∇θJ=1nXT(σ(Xθ)−y)\nabla_\theta J = \frac{1}{n} X^T (\sigma(X\theta) - y)∇θ​J=n1​XT(σ(Xθ)−y)
    • 参数更新:
      θ:=θ−α∇θJ\theta := \theta - \alpha \nabla_\theta Jθ:=θ−α∇θ​J
      (α\alphaα 为学习率)

四、决策边界:线性与非线性拓展
  1. 线性决策边界

    • 当 σ(z)=0.5\sigma(z)=0.5σ(z)=0.5 时 z=0z=0z=0,即 θTx=0\theta^Tx = 0θTx=0 为分类超平面
      例:二维空间中为直线,三维为平面
  2. 非线性边界拓展

    • 通过特征工程引入多项式项(如 x12,x1x2x_1^2, x_1x_2x12​,x1​x2​)
    • 核函数(Kernel Trick)映射高维空间(需配合正则化防过拟合)

五、代码实现:Python实战示例
import numpy as npclass LogisticRegression:def __init__(self, lr=0.01, n_iters=1000):self.lr = lr          # 学习率self.n_iters = n_iters # 迭代次数self.weights = None    # 权重参数self.bias = None       # 偏置项def _sigmoid(self, z):return 1 / (1 + np.exp(-z))  # Sigmoid激活函数def fit(self, X, y):n_samples, n_features = X.shapeself.weights = np.zeros(n_features)self.bias = 0# 梯度下降优化for _ in range(self.n_iters):z = np.dot(X, self.weights) + self.biasy_pred = self._sigmoid(z)# 计算梯度dw = (1 / n_samples) * np.dot(X.T, (y_pred - y))db = (1 / n_samples) * np.sum(y_pred - y)# 更新参数self.weights -= self.lr * dwself.bias -= self.lr * dbdef predict(self, X, threshold=0.5):z = np.dot(X, self.weights) + self.biasy_prob = self._sigmoid(z)return (y_prob >= threshold).astype(int)  # 按阈值分类

关键步骤说明​:

  • fit() 中梯度计算对应公式 ∇θJ\nabla_\theta J∇θ​J
  • 预测时以0.5为默认阈值

六、工业应用与局限
场景案例逻辑回归优势
金融风控用户违约概率预测可解释性强(权重代表特征影响)
医疗诊断疾病阳性概率判断计算高效,适合实时系统
推荐系统用户点击/购买行为预测对稀疏特征鲁棒性好

局限性​:

  • 仅适合线性可分数据(需特征工程或高阶拓展)
  • 对异常值敏感(需数据清洗或正则化)
  • 多分类需扩展(如OvR, Softmax)

结语:为什么逻辑回归是分类基石?

逻辑回归通过 ​Sigmoid函数​ 架起回归与分类的桥梁,其核心价值在于:

  1. 数学简洁性​:线性组合 + 概率映射,奠定广义线性模型基础
  2. 工程实用性​:梯度下降高效求解,适合大规模数据
  3. 可解释性​:权重系数直接反映特征重要性(优于黑盒模型)

“逻辑回归的智慧在于:用连续的数学工具解决离散的决策问题,这正是机器学习的艺术。” —— 算法设计者视角

完整代码与数据集:GitHub示例链接
扩展阅读:《统计学习导论》第4章(逻辑回归与广义线性模型)

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

相关文章:

  • Spark大数据分与实践笔记(第五章 HBase分布式数据库-04)
  • Java学习------Object类
  • Qt 与物联网(IoT)开发
  • (补题)小塔的饭
  • 算法-CodeTop(三)
  • PyTorch生成式人工智能(21)——归一化流模型(Normalizing Flow Model)
  • 【机器学习11】“分类算法“评估矩阵:从对数损失、AUC和ROC、混淆矩阵与分类报告等角度来评估算法
  • 第十九周-文档数据库MongoDB、消息队列和微服务
  • C++代码题部分(1)
  • 双功能预测模型开发:基于预训练模块与迁移学习的天然肽序列与SAFP修饰信息融合
  • 基于uni-app的血糖血压刻度滑动控件
  • uniApp实战六:Echart图表集成
  • uniapp-vue3来实现一个金额千分位展示效果
  • 《CLIP改进工作串讲》论文精读笔记
  • uniapp使用谷歌地图获取位置
  • uniapp实现微信小程序导航功能
  • 从单机到分布式:Redis如何成为架构升级的胜负手
  • 问题1:uniapp在pages样式穿刺没有问题,在components组件中样式穿刺小程序不起效果
  • Oracle迁移PostgreSQL隐式类型转换配置指南
  • FPGA实现CameraLink视频解码转SRIO与DSP交互,FPGA+DSP多核异构图像处理架构,提供2套工程源码和技术支持
  • Windows Server 2019 查询最近7天远程登录源 IP 地址(含 RDP 和网络登录)
  • 【OD机试题解法笔记】符号运算
  • AWS Blockchain Templates:快速部署企业级区块链网络的终极解决方案
  • Keil-C51 与 Keil -ARM 项目工程兼容的方法
  • leetcode热题——搜索二维矩阵Ⅱ
  • Syzkaller实战教程2:运行环境配置+实例运行
  • 多模通信·数据采集:AORO P9000U三防平板带来定制化解决方案
  • Rust × Elasticsearch官方 `elasticsearch` crate 上手指南
  • Hyperchain 的分级权限体系如何应对潜在的安全威胁和攻击?
  • 龙虎榜——20250730