【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…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
