机器学习算法:逻辑回归

news2025/7/21 18:29:22

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.coloradmin.cn/o/2398178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI健康小屋+微高压氧舱:科技如何重构我们的健康防线?

目前,随着科技和社会的不断发展,人们的生活水平和方式有了翻天覆地的变化。 从吃饱穿暖到吃好喝好再到健康生活,观念也在逐渐发生改变。 尤其是在21世纪,大家对健康越来越重视,这就不得不提AI健康小屋和氧舱。 一、A…

如何做接口测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 01、通用的项目架构 02、什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url&#xff…

【JMeter】性能测试知识和工具

目录 何为系统性能 何为性能测试 性能测试分类 性能测试指标 性能测试流程 性能测试工具:JMeter(主测web应用) jmeter文件目录 启动方式 基本元件:元件内有很多组件 jmeter参数化 jmeter关联 自动录制脚本 直连数据库…

SOC-ESP32S3部分:25-HTTP请求

飞书文档https://x509p6c8to.feishu.cn/wiki/KL4RwxUQdipzCSkpB2lcBd03nvK HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是一种建立在 TCP 上的无状态连接,整个基本的工作流程是客户端发送一个 HTTP 请求,说明…

字符编码全解析:ASCII、GBK、Unicode、UTF-8与ANSI

UTF - 8(全球字符能被唯一标识)、GBK、Unicode、ANSI 区别与关联 qwen模型分词器文件 1. ASCII(基础铺垫,理解编码起源) 作用:最早期为处理英文文本设计,是字符编码的基础,后演变成其他编码兼容的一部分 。范围:共 128 个字符(0 - 127),包含英文大小写字母、数字…

MaxCompute开发UDF和UDTF案例

文章目录 一、Java开发UDF1、创建Maven项目2、创建UDF类3、打包上传资源4、创建函数MyUDF5、SQL验证 二、Java开发UDTF1、创建Maven项目2、创建UDTF类3、打包上传更新资源4、创建函数MyUDTF5、SQL验证 三、常见问题1、发布函数报错 一、Java开发UDF 1、创建Maven项目 创建Mav…

49套夏日小清新计划总结日系卡通ppt模板

绿色小清新PPT模版,日系小清新PPT模版,粉红色PPT模版,蓝色PPT模版,草青色PPT模版,日系卡通PPT模版 49套夏日小清新计划总结日系卡通ppt模板:夏日小清新日系卡通PPT模版https://pan.quark.cn/s/9e4270d390fa…

告别硬编码!用工厂模式优雅构建可扩展的 Spring Boot 应用 [特殊字符]

嗨,各位技术伙伴们!👋 在日常的软件开发中,我们经常面临需求变更的挑战。如何构建一个既能满足当前需求,又能轻松应对未来变化的系统呢?答案往往藏在那些经典的设计模式中。 今天,我们就来聊聊…

Express教程【006】:使用Express写接口

文章目录 8、使用Express写接口8.1 创建API路由模块8.2 编写GET接口8.3 编写POST接口 8、使用Express写接口 8.1 创建API路由模块 1️⃣新建routes/apiRouter.js路由模块: /*** 路由模块*/ // 1-导入express const express require(express); // 2-创建路由对象…

mongodb集群之分片集群

目录 1. 适用场景2. 集群搭建如何搭建搭建实例Linux搭建实例(待定)Windows搭建实例1.资源规划2. 配置conf文件3. 按顺序启动不同角色的mongodb实例4. 初始化config、shard集群信息5. 通过router进行分片配置 1. 适用场景 数据量大影响性能 数据量大概达到千万级或亿级的时候&…

Starrocks Full GC日志分析

GC日志样例: [2025-06-03T07:36:06.1770800] GC(227) Pause Full (G1 Evacuation Pause) [2025-06-03T07:36:06.1960800] GC(227) Phase 1: Mark live objects [2025-06-03T07:36:06.9480800] GC(227) Cleaned string and symbol table, strings: 47009 processed,…

飞算 JavaAI 赋能老项目重构:破旧立新的高效利器

许多企业的 Java 老项目面临着代码陈旧、架构落后、维护困难等问题。老项目重构势在必行,却又因庞大的代码量、复杂的业务逻辑让开发团队望而却步。 老项目重构困境重重 传统的 Java 老项目往往在长期的迭代和维护中积累了诸多问题。一方面,代码质量堪…

typescript的Interface和Type

类型别名和接口非常相似,在大多数情况下你可以在它们之间自由选择。 几乎所有的 interface 功能都可以在 type 中使用,关键区别在于不能重新开放类型以添加新的属性,而接口始终是可扩展的。 // window.ts.transpileModule(src, {}); 这是调…

java后端生成心电图-jfreechart

用jfreechart生成心电图 先上成功的图片 上代码 1.导入包 implementation org.jfree:jfreechart:1.5.4implementation org.jfree:jcommon:1.0.242.实现代码 对数据进行滤波 转换单位 package com.shinrun.infrastructure.util;import java.util.ArrayList; import java.ut…

算法/机理模型演示平台搭建(二)——算法接口部署(FastApi)

算法/机理模型演示平台搭建(二)—— 算法接口部署(FastApi) 1. 项目结构2. 构建 Docker 镜像3. 运行 Docker 容器4. 访问 API 文档5. 调用 API1. 项目结构 app app/algorithms app/models Dockerfile FROM python:3.9-slimWORKDIR /codeCOPY ./requirements.txt /code…

动态规划-647.回文子串-力扣(LeetCode)

一、题目解析 这里的子字符串是连续的,与之前的子序列不同,这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题,如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1),马拉车算法(具有局限性) 时间复杂…

仿真每日一练 | Workbench中接触种类及选择方法简介

Workbench中给我们提供的接触类型主要包括以下几种👇 ◆ 1、摩擦 ◆ 2、无摩擦 ◆ 3、绑定 ◆ 4、不分离 ◆ 5、粗糙 ◆ 6、强制滑移 下面通过最常用的摩擦和绑定给大家展示两者的区别,同时文末也给大家介绍了几种接触的选择方法。首先先给大家介绍一下…

Go语言中的rune和byte类型详解

1. rune类型 1.1. 基本概念 1. rune是Go语言的内建类型,它是int32的别名,即32位有符号整数; 2. 用于表示一个Unicode码点,全拼Unicode code point; 3. 可以表示任何UTF-8编码的字符; 1.2. 特点 1. 每…

【java面试】redis篇

redis篇 一、适用场景(一)缓存1、缓存穿透1.1 解决方案1:缓存空数据,查询返回的数据为空,将空结果缓存1.2 解决方案2:布隆过滤器 2、缓存击穿1.1 解决方案1:互斥锁1.2 解决方案2:逻辑…

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验,详细介绍 macSvn工具的核心…