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

机器学习算法:逻辑回归

1. 基础概念

定义:

逻辑回归(Logistic Regression)是一种用于解决二分类问题的监督学习算法,通过概率预测样本属于某一类别的可能性。

  • 核心特点:输出是概率值(0~1),通过阈值(如0.5)转换为类别标签。

  • 注意:名字虽含“回归”,但实际是分类算法

数学形式:

  • 使用 Sigmoid函数 将线性回归结果映射到概率: P(y=1) = 1 / (1 + e^(-z)),其中 z = w₁x₁ + w₂x₂ + ... + b

  • Sigmoid函数:将任意实数压缩到(0,1),如图: https://www.saedsayad.com/images/Logistic_curves.png


2. 核心原理

损失函数:交叉熵损失(Log Loss)

衡量预测概率与真实标签的差异: Loss = - [y_true * log(y_pred) + (1 - y_true) * log(1 - y_pred)] 目标是最小化总损失。

优化方法:
  • 梯度下降(与线性回归类似,但需计算对数概率的梯度)。

  • 牛顿法、拟牛顿法(如L-BFGS)。

评估指标:
  • 准确率(Accuracy):正确分类的比例。

  • 精确率(Precision):预测为正的样本中真实正类的比例。

  • 召回率(Recall):真实正类中被正确预测的比例。

  • ROC-AUC:综合衡量分类性能的曲线下面积。


3. 实际生产中的例子

案例1:广告点击率预测(CTR预估)
  • 场景:互联网广告平台预测用户是否会点击广告。

  • 输入特征:用户历史行为、广告内容、上下文信息(如时间、设备)。

  • 输出:点击概率(0~1)。

  • 应用:根据概率对广告排序,优先展示高点击率广告。

案例2:金融风控(贷款违约预测)
  • 场景:银行判断客户是否有违约风险。

  • 输入特征:收入、信用评分、负债比、历史还款记录。

  • 输出:违约概率。

  • 应用:若概率>阈值(如0.7),则拒绝贷款申请。

案例3:医疗诊断(疾病预测)
  • 场景:根据患者检查结果预测是否患病。

  • 输入特征:年龄、血压、血糖、胆固醇指标。

  • 输出:患病概率。

  • 应用:辅助医生快速筛查高风险患者。

案例4:垃圾邮件分类
  • 场景:自动过滤垃圾邮件。

  • 输入特征:邮件文本的词频、发件人信誉、链接数量。

  • 输出:垃圾邮件概率。

  • 应用:若概率>0.5,标记为垃圾邮件。


4. 生产中的改进方法

处理类别不平衡
  • 加权损失函数:对少数类样本赋予更高权重。

  • 过采样(如SMOTE):生成少数类样本。

  • 阈值调整:根据业务需求调整分类阈值(如医疗场景需高召回率)。

正则化(防止过拟合)
  • L1正则化(Lasso):稀疏化权重,自动特征选择。

  • L2正则化(Ridge):限制权重幅度,提升泛化能力。

特征工程
  • 分箱(Binning):将连续特征(如年龄)分段为类别。

  • 交叉特征:组合多个特征(如“收入*负债比”)。

  • 文本特征:TF-IDF或词嵌入(Embedding)。


5. 与线性回归的区别

​​维度​​​​线性回归​​​​逻辑回归​​
​​任务类型​​回归(预测连续值)分类(预测概率/类别)
​​输出范围​​任意实数0~1之间的概率
​​损失函数​​均方误差(MSE)交叉熵损失(Log Loss)
​​激活函数​​Sigmoid函数

6. 优缺点

优点
  • ✅ 输出为概率,适合需要概率解释的场景(如风控)。

  • 可解释性强,权重反映特征对结果的影响方向(正/负)。

  • ✅ 计算高效,适合大规模数据(如互联网广告的实时预测)。

缺点
  • ❌ 假设特征与对数几率(Log Odds)呈线性关系,难以捕捉复杂非线性关系。

  • ❌ 对特征相关性和异常值敏感。

  • 默认只能处理二分类,多分类需扩展(如One-vs-Rest)


7. 代码工具示例(Python)


8. 适用场景总结

  • 推荐使用逻辑回归:

    • 二分类问题且需要概率输出(如金融风控)。

    • 特征与目标的对数几率呈近似线性关系。

    • 需要快速部署和模型解释性(如医疗诊断报告)。

  • 避免使用:

    • 特征与目标存在复杂非线性关系(需用树模型或神经网络)。

    • 数据维度极高且特征稀疏(如文本分类更适合用朴素贝叶斯或深度学习)。


一句话总结

逻辑回归是“用S形曲线做分类”的经典算法,凭借概率输出和可解释性,在金融、医疗、广告等领域广泛应用。

http://www.xdnf.cn/news/10521.html

相关文章:

  • 操作系统复习
  • 方法重写与方法重载详解
  • CSS之动画(奔跑的熊、两面反转盒子、3D导航栏、旋转木马)
  • 谷歌CEO皮查伊眼中的“下一代平台“与未来图景
  • 基于FPGA的VGA显示文字和动态数字基础例程,进而动态显示数据,类似温湿度等
  • Pyomo中线性规划接口的使用
  • 为什么ping显示connect:network is unreachable,如何排查网络不通问题?
  • LearnOpenGL-笔记-其十三
  • py爬虫的话,selenium是不是能完全取代requests?
  • NodeJS全栈WEB3面试题——P2智能合约与 Solidity
  • 单调栈(打卡)
  • 【C++/Linux】TinyWebServer前置知识之IP协议详解
  • 【iOS】YYModel源码解析
  • 告别printf!嵌入式系统高效日志记录方案
  • 如何评估 RAG 的分块Chunking策略
  • 【沉浸式求职学习day52】【初识Mybaits】
  • 风控研发大数据学习路线
  • Java生态中的NLP框架
  • 【C语言】C语言经典小游戏:贪吃蛇(上)
  • Vortex GPGPU的github流程跑通与功能模块波形探索(四)
  • 解决:install via Git URL失败的问题
  • 【LLM vs Agent】从语言模型到智能体,人工智能迈出的关键一步
  • Java中对象哈希值的解析
  • 力扣HOT100之多维动态规划:64. 最小路径和
  • Langchian - 自定义提示词模板 提取结构化的数据
  • bismark OT CTOT OB CTOB 以及mapping后的bam文件中的XG,XR列的含义
  • 用go从零构建写一个RPC(4)--gonet网络框架重构+聚集发包
  • 【知识点】第3章:基本数据类型
  • Linux之进程间通信
  • 600+纯CSS加载动画一键获取指南