【pytorch18】Logistic Regression
回忆线性回归
- for continuous:y = xw+b
- for probability output:y=σ(xw+b)
- σ:sigmoid or logistic
线性回归是简单的线性模型,输入是x,网络参数是w和b,输出是连续的y的值
如何把它转化为分类问题?加了sigmoid函数,输出的值不再是一个连续的实数范围,而是一个在[0,1]范围的值,等效于probability,因此可以理解为分类问题
二分类问题
- interpret network as f : x → p ( y ∣ x ; θ ) f:x\to p(y|x; \theta) f:x→p(y∣x;θ)
- output∈[0,1]
- which is exactly what logistic function comes in!
首先之前的线性回归模型,是x到一个y这样的映射,即 f : x → y f:x\rightarrow y f:x→y
但是对于logistic regression(逻辑回归是分类问题)而言,是给x求y=1的这样的probability,θ的参数就是等于[w,b]这样的参数,所以输出的值就变成了0和1
两类问题的本质区别
-
For regression:
- Goal:pred=y
- Approach:minimize dist(pred,y)
-
For classification:
- Goal:maximize benchmark,e.g. accuracy
- Approach1:minimize d i s t ( p θ ( y ∣ x ) , p r ( y ∣ x ) ) \mathrm{dist}(p_\theta(y|x),p_r(y|x)) dist(pθ(y∣x),pr(y∣x))
- Approach1:minimize d i v e r g e n c e ( p θ ( y ∣ x ) , p r ( y ∣ x ) ) divergence(p_{\theta}(y|x),p_{r}(y|x)) divergence(pθ(y∣x),pr(y∣x))
对于regression问题,预测值关注的是y,目标是预测的值要与真实值非常接近,方法也是minimize该差距
对于classfication问题,目标是accuracy或F1-score这种指标很高(例如准确率),做法并不需要直接优化accuracy,这一点是classification问题与regression最本质的区别,会用一个general proxy objective(如两个分布的边界或差异,这是一些数学的概念,还可以用cross entropy)
从概念上来说,给出x对y的一个probability,θ参数上给出一个probability和真实给定x得到y的probability,r是real的意思,就是真实的probability,希望这两个分布越近越好
即最终要测试的目标和训练的目标其实是不一样的
为什么训练的目标和测试的目标的目标是不一样的?
也就是说为什么不能直接的maximize accuracy

直接maximize accuracy会有两个问题,accuracy是预测对的数量 / 总的数量(例如有5个数字,预测对了3个accuracy就是3/5=60%)
第一种情况:
一个二分类问题中模型权重调整对准确率没有影响的情况。让我们逐步分析这个问题:
- 阈值决策: 在二分类问题中,模型的输出通常通过一个阈值来转换为类别标签。如果预测概率小于或等于0.5,模型预测为类别0;如果大于0.5,预测为类别1。
- 权重调整: 通过调整模型权重𝑤,使得某个样本的预测概率从0.4增加到0.45。尽管预测概率更接近真实标签的概率,但由于没有超过0.5的阈值,最终的类别预测仍然是0。
- 准确率不变: 由于预测结果没有改变,即使概率更接近真实值,准确率(accuracy)仍然保持不变。准确率是预测正确的样本数与总样本数的比例,在这个例子中,如果只有3个样本预测正确,准确率就是60%。
- 梯度为零: 在使用梯度下降算法优化模型时,如果预测结果没有改变,即模型输出对于权重的微小变化不敏感,那么在权重𝑤附近的梯度可能是零。这意味着在这个点上,权重的进一步调整不会影响预测结果,因此模型不会更新这个权重。
- 优化问题: 这个问题揭示了一个优化上的挑战:即使模型的预测概率接近真实分布,但如果不能越过决策阈值,就无法反映在准确率上,从而导致梯度为零,模型学习停滞。

此时x变了,y没变 ∂ y ∂ x = 0 \frac{\partial y}{\partial x}=0 ∂x∂y=0
第二种情况:如果预测的是0.4999,这里w只动一点点变成了0.501大于0.5了,但是这个值本来是预测错的,现在反而预测对了,那accuracy就变成了4/5=80%,w可能动了0.0001,accurcacy增加了0.2,这样0.2/0.0001就会出现不连续的情况,就是x动一点点,accuracy可能会发生一个巨大的变化,会出现一个比较大的gradient
1.准确率的不连续性: 在二分类问题中,准确率是衡量模型预测正确性的一种离散指标。当模型的预测概率非常接近决策阈值(如0.5)时,即使是模型权重微小的调整,也可能引起预测结果的突变。
- 微小权重变化导致准确率的显著变化: 例如,如果模型对某个样本的初始预测概率为0.4999,权重的微小调整使其变为0.501,超过了0.5的阈值。这导致该样本的预测结果从错误变为正确,从而显著提高了准确率,如从60%(3/5)增加到80%(4/5)。
- 准确率的极端变化: 权重的微小变化引起准确率的显著增加,这在数学上可以类比为梯度非常大。在这种情况下,如果将准确率的变化率视为“梯度”,那么这个“梯度”是非常大的,因为准确率的变化(0.2)与权重变化(0.0001)的比值非常高。
所以在优化的时候就会发现要么就是gradient不连续会造成一个梯度爆炸的情况,要么就是training非常不稳定,这也解释了为什么不能使用accuracy来训练,要是用corss entropy来训练

logistic regression是用于classification问题的,为什么叫regression?
因为你的loss虽然用了softmax或者用了把probability变成了一个0到1的问题,但是如果跟原来的1做一个均方差,把这个作为loss去优化还是有regression的感觉,就是希望probability跟1越近越好,就是regression,把probability看作一个连续的输出值,因此如果使用MSE的话就把它叫做regression,是因为当时没有使用cross entropy
如果loss使用的是cross entropy,就可以理解为classification的问题,会使得 p θ ( y ∣ x ) p_{\theta}(y|x) pθ(y∣x)~ p r ( y ∣ x ) p_{r}(y|x) pr(y∣x)
二分类做法

多分类做法
使用softmax来实现所有分类相加的概率为1
相关文章:
【pytorch18】Logistic Regression
回忆线性回归 for continuous:y xwbfor probability output:yσ(xwb) σ:sigmoid or logistic 线性回归是简单的线性模型,输入是x,网络参数是w和b,输出是连续的y的值 如何把它转化为分类问题?加了sigmoid函数,输出的值不再是…...
PostgreSQL的使用
PostgreSQL的使用 1.首先,使用docker进行安装pgvector数据库,具体的安装步骤可以查看我之前发的博文。 2.docker exec -it pgvector /bin/bash 进入docker容器内部,操作数据库,上述命令是以交互式命令进入了容器的内部…...
python 高级技巧 0706
python 33个高级用法技巧 列表推导式 简化了基于现有列表创建新列表的过程。 squares [x**2 for x in range(10)] print(squares)[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]字典推导式 用简洁的方式创建字典。 square_dict {x: x**2 for x in range(10)} print(square_dict){0…...
面试经典 106. 从中序与后序遍历序列构造二叉树
最近小胖开始找工作了,又来刷苦逼的算法了 555 废话不多说,看这一题,上链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/?envTypestudy-plan-v2&envIdtop-inte…...
如何解决群晖Docker注册表查询失败/无法拉取镜像等问题
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 问题概述 📒📒 解决方案 📒🔖 方法一🔖 方法二🔖 方法三⚓️ 相关链接 🚓️📖 介绍 📖 在群晖(Synology)NAS设备上使用Docker时,我们可能会遇到查询Docker注册表失败,无法拉取Docker镜像的问题。这种情况…...
【Scrapy】 深入了解 Scrapy 中间件中的 process_spider_input 方法
准我快乐地重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 再去做没流着情泪的伊人 假装再有从前演过的戏份 重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 你纵是未明白仍夜深一人 穿起你那无言毛衣当跟你接近 🎵 陈慧娴《傻女》 Scrapy 是…...
数据库MySQL---基础篇
存储和管理数据的仓库 MySQL概述 数据库相关概念 数据库(DataBase)---数据存储的仓库,数据是有组织的进行存储 数据库管理系统(DBMS)-----操纵和管理数据库的大型软件 SQL----操作关系型数据库的编程语言ÿ…...
欧姆龙安全PLC及周边产品要点指南
电气安全、自动化设备作业安全,向来是非常非常之重要的!越来越多的客户在规划新产线、改造既有产线的过程中,明确要求设计方和施工方将安全考虑进整体方案中进行考虑和报价!作为一名自动化电气工程师,尤其是高级工程师…...
tableau气泡图与词云图绘制 - 8
气泡图及词云图绘制 1. 气泡图绘制1.1 选择相关属性字段1.2 选择气泡图1.3 设置颜色1.4 设置标签1.5 设置单位 2. 气泡图绘制 - 22.1 类别筛选2.2 页面年份获取2.3 行列获取2.4 历史轨迹显示 3. 词云图绘制3.1 筛选器3.2 选择相关属性3.3 选择气泡图3.4 设置类型颜色3.5 设置形…...
C语言 找出一个二维数组中的鞍点
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。 #include <stdio.h>int main() {int matrix[4][4] {{10, 17, 13, 28},{21, 14, 16, 40},{30, 42, 23, 39},{24, 11, 19, 17}};int n 4, m 4;int found 0;for (int i 0; i …...
【笔记】在linux中设置错文件如何重置
以mysql的auto.cnf文件为例...
DNS中的CNAME与A记录:为什么无法共存A解析和C解析?
在互联网的世界中,DNS(域名系统)扮演着至关重要的角色,它将易于记忆的域名转换为计算机可识别的IP地址。在这个过程中,两种常见的DNS记录类型——CNAME记录和A记录——经常被提及。然而,它们之间存在着一些…...
线程和进程
文章目录 进程和线程进程线程案例 时间片概念调度方式线程的创建和启动第一种创建方式第二种创建方式(匿名内部类)第三种创建方式(Runnable接口)main线程和t线程之间的关系 线程的名字线程的优先级线程状态 进程和线程 进程 在计…...
【JavaEE】 简单认识CPU
🐵本篇文章将对cpu的相关知识进行讲解 一、认识CPU 下图是简略的冯诺依曼体系结构图 上图中,存储器用来存储数据,注意在存储器中都是以二进制的形式存储数据的,CPU就是中央处理器,其功能主要是进行各种算术运算和各种…...
《数字图像处理-OpenCV/Python》第17章:图像的特征描述
《数字图像处理-OpenCV/Python》第17章:图像的特征描述 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第17章:图像的特征描述 特征检测与匹配是计算机视觉的…...
考研数学什么时候开始强化?如何保证进度不掉队?
晚了。我是实在人,不给你胡乱吹,虽然晚了,但相信我,还有的救。 实话实说,从七月中旬考研数一复习完真的有点悬,需要超级高效快速... 数二的时间也有点紧张... 中间基本没有试错的时间,让你换…...
Node.js的下载、安装和配置
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
java.util.Properties类介绍
java.util.Properties 是 Java 编程语言中的一个类,用于管理应用程序的配置信息,它继承自 java.util.Hashtable 类,因此它也是基于键值对的数据结构。主要用途是存储应用程序的配置参数,比如数据库连接信息、用户设置等。 以下是 Properties 类的一些主要特点和用法: 存储…...
SpringBoot后端验证码-防止密码爆破功能
一、简介 为了防止网站的用户被通过密码典爆破。引入验证码的功能是十分有必要的。而前端的验证码又仅仅是只防君子不防小人。通过burpsuit等工具很容易就会被绕过。所以后端实现的验证码才是对用户信息安全的一大重要保障。 实现思路: 1.引入图形生成的依赖 2.生成…...
ChatEval:通过多代理辩论提升LLM文本评估质量
论文地址:ChatEval: Towards Better LLM-based Evaluators through Multi-Agent Debate | OpenReviewText evaluation has historically posed significant challenges, often demanding substantial labor and time cost. With the emergence of large language models (LLMs…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
