机器学习的一百个概念(4)下采样
前言
本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见[《机器学习的一百个概念》
ima 知识库
知识库广场搜索:
| 知识库 | 创建人 |
|---|---|
| 机器学习 | @Shockang |
| 机器学习数学基础 | @Shockang |
| 深度学习 | @Shockang |
正文

基础概念与原理 🔍
1.1 下采样的定义
下采样(Downsampling)是机器学习中一个多义性概念,根据应用场景可分为两大类:
- 数据层面的下采样:在类别不平衡问题中,通过减少多数类样本数量来平衡数据分布的技术
- 特征层面的下采样:在深度学习中,特别是卷积神经网络(CNN)中用于降低数据维度或分辨率的操作
1.2 下采样的工作流程

1.3 理论基础
下采样的理论基础主要涉及以下几个方面:
-
统计学基础:
- 样本代表性
- 随机性与均匀性
- 概率分布保持
-
信息论基础:
- 信息熵
- 数据压缩
- 信息损失评估
-
采样理论:
- Nyquist采样定理
- 香农采样定理
- 混叠效应
应用场景与实现方法 💡
2.1 类别不平衡问题中的下采样
2.1.1 基本方法

-
随机下采样
- 优点:实现简单,计算效率高
- 缺点:可能丢失重要信息
- 适用场景:数据量大,多数类样本具有较高冗余度
-
启发式下采样
- NearMiss算法
- Tomek Links
- 编辑最近邻(ENN)
- One-Sided Selection(OSS)
-
集成下采样
- EasyEnsemble
- BalanceCascade
- UnderBagging
2.2 深度学习中的下采样
2.2.1 池化操作
- 最大池化(Max Pooling)
import torch.nn as nn# 定义2x2的最大池化层
max_pool = nn.MaxPool2d(kernel_size=2, stride=2)
- 平均池化(Average Pooling)
# 定义2x2的平均池化层
avg_pool = nn.AvgPool2d(kernel_size=2, stride=2)
- 步幅卷积(Strided Convolution)
# 使用步幅为2的卷积进行下采样
conv_downsample = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, stride=2, padding=1)
2.3 下采样的数学表达
对于图像处理中的下采样,其数学表达式为:
Y [ n ] = X [ M n ] Y[n] = X[Mn] Y[n]=X[Mn]
其中:
- X [ n ] X[n] X[n] 是输入信号
- M M M 是下采样因子
- Y [ n ] Y[n] Y[n] 是下采样后的信号
高级技巧与最佳实践 🚀
3.1 自适应下采样策略

3.2 高级采样技术
- 基于密度的下采样
from sklearn.neighbors import KernelDensitydef density_based_undersampling(X, y, threshold):kde = KernelDensity(bandwidth=0.5)kde.fit(X[y==1]) # 针对多数类densities = kde.score_samples(X[y==1])return X[densities > threshold]
- 基于聚类的下采样
from sklearn.cluster import KMeansdef cluster_based_undersampling(X, y, n_clusters):majority_class = X[y==1]kmeans = KMeans(n_clusters=n_clusters)clusters = kmeans.fit_predict(majority_class)return majority_class[::len(majority_class)//n_clusters]
常见陷阱与解决方案 ⚠️
4.1 信息丢失问题
-
问题描述
- 随机下采样可能丢失关键样本
- 特征空间覆盖不完整
- 决策边界变形
-
解决方案
- 使用启发式采样方法
- 实施分层采样
- 采用集成学习策略
4.2 采样偏差
-
现象
- 样本分布失真
- 模型性能不稳定
- 过拟合风险增加
-
缓解措施
- 交叉验证
- 多重采样
- 数据增强
实战案例分析 💻
5.1 信用卡欺诈检测
import pandas as pd
from sklearn.utils import resample
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report# 加载数据
df = pd.read_csv('credit_card_fraud.csv')
majority = df[df.Class==0]
minority = df[df.Class==1]# 下采样多数类
majority_downsampled = resample(majority, replace=False,n_samples=len(minority),random_state=42)# 合并数据
balanced_df = pd.concat([majority_downsampled, minority])# 训练模型
X = balanced_df.drop('Class', axis=1)
y = balanced_df['Class']
clf = RandomForestClassifier(random_state=42)
clf.fit(X, y)
5.2 图像分类中的下采样
import torch.nn as nnclass ConvNet(nn.Module):def __init__(self):super(ConvNet, self).__init__()self.conv1 = nn.Conv2d(3, 16, 3, padding=1)self.pool = nn.MaxPool2d(2, 2)self.conv2 = nn.Conv2d(16, 32, 3, padding=1)self.fc = nn.Linear(32 * 8 * 8, 10)def forward(self, x):x = self.pool(F.relu(self.conv1(x))) # 下采样x = self.pool(F.relu(self.conv2(x))) # 下采样x = x.view(-1, 32 * 8 * 8)x = self.fc(x)return x
未来发展趋势 🔮
-
智能采样
- 基于强化学习的采样策略
- 自适应采样率调整
- 多目标优化采样
-
混合策略
- 下采样与过采样结合
- 多种采样方法集成
- 迁移学习融合
-
新兴应用
- 联邦学习中的采样策略
- 边缘计算场景下的轻量级采样
- 自监督学习中的采样技术
总结与建议 📝
下采样是机器学习中一个重要的数据处理技术,其成功应用需要:
-
深入理解问题场景
- 数据分布特点
- 业务需求约束
- 计算资源限制
-
合理选择策略
- 根据数据规模选择合适的采样方法
- 考虑采样带来的影响
- 权衡效率与效果
-
注重实践验证
- 充分的实验对比
- 严格的效果评估
- 持续的优化改进
本文详细介绍了下采样的各个方面,从理论到实践,希望能够帮助读者更好地理解和应用这一技术。在实际应用中,建议读者根据具体场景选择合适的下采样策略,并注意避免常见陷阱。
相关文章:
机器学习的一百个概念(4)下采样
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
NNI 适配 TensorRT10教程
引言 本文涉及两个框架及其版本分别为 NNI (Neural Network Intelligence) :3.0TensorRT:10.9.0.34 NNI 在文档 Speed Up Quantized Model with TensorRT里描述了如何使用 TensorRT 为NNI量化的模型实现加速,但是从NNI 的源代码https://gi…...
Docker, Docker 镜像是什么,怎么创建, Docker有什么用
Docker, Docker 镜像是什么,怎么创建, Docker有什么用 Docker 镜像的概念 Docker 镜像可以理解为一个只读的模板,它包含了运行应用程序所需的所有文件、依赖项、环境变量和配置信息等。就像制作蛋糕的模具,利用这个模具可以制作出多个相同的蛋糕(这里的蛋糕就好比 Dock…...
多路径 TCP 调度的另一面
参考前面的文章 一个原教旨的多路径 TCP 和 MP-BBR 公平性推演,一直都破而不立,不能光说怎样不好,还得说说现状情况下,该如何是好。 如果 receiver 乱序重排的能力有限(拜 TCP 所赐),如果非要在多路径上传输 TCP&…...
vcpkg安装指定版本的库
一.vcpkg安装 使用git将vcpkg源码克隆到本地制定目录(D:\vcpkg),并初始化 git clone https://github.com/microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh # Linux/macOS .\bootstrap-vcpkg.bat # Windows 如下图: 二.安…...
【工具变量】上市公司供应链稳定性数据两个维度(2013-2023年)
供应链稳定性是指供应链在面对各种内外部因素的冲击和不确定性时,能够保持持续、顺畅运作的能力,而供应链稳定性指数是用于评估企业在其供应链管理中保持稳定性的一个重要指标。本分享数据参考钟涛(2022)、董浩和闫晴(…...
Redis场景问题2:缓存击穿
Redis 缓存击穿是指在缓存系统中,大量请求(高并发访问)同时访问一个不存在于缓存中(一般是因为缓存过期或者数据未被加载到缓存)但在数据库中存在的热点数据,从而导致这些请求直接穿透缓存层,涌…...
RocketMQ - 从消息可靠传输谈高可用
先稍微介绍下RocketMQ架构。 主从架构 Broker 集群:每个 Broker 分为 Master 和 Slave 角色,Master 负责读写,Slave 作为热备。 同步复制(SYNC_MASTER):消息写入 Master 后,需等待 Slave 同步完…...
ES拼音分词自动补全实现
#测试拼音分词 POST /_analyze { "text":"如家酒店真不错", "analyzer": "pinyin" } #这里把拼音的首字母放到这里,也说明了这句话没有被分词,而是作为一个整体出现的 #还把每一个字都形成了一个拼音&#…...
golang 日志log与logrus
目录 一、Go 标准库 log 详解 1. 功能特点 2. 常用函数 3. 示例代码 4. 优势和局限 二、第三方库 logrus 详解 1. 功能特点 2. 核心功能 3. 示例代码 4. 优势和扩展性 三、总结 1. 何时选择 log? 2. 何时选择 logrus? 3. 对比总结 一、Go 标…...
EFISH-SBC-RK3576 + 5G模组:无线工业相机与分布式AI质检
在智能制造与仓储物流场景中,传统有线工业相机存在部署成本高、灵活性差等痛点。eFish-SBC-RK3576 通过 5G无线传输 分布式NPU协同,实现跨产线、跨工厂的AI质检系统,检测效率提升300%,布线复杂度降低90%。 1. 系统架构…...
C/C++ 基础 - 回调函数
目录 前言 回调函数预备知识 函数指针 什么是函数指针 函数指针的语法 如何用函数指针调用函数 函数指针作为函数的参数 函数指针作为函数返回类型 函数指针数组 回调函数 什么是回调函数 为什么要用回调函数 怎么使用回调函数 总结 前言 在写项目的时候&#x…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的消息队列:使用 RabbitMQ 实现异步处
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…...
高项第十六章——项目采购管理
什么是采购管理?项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。 项目采购管理包括编制和管理协议所需的管理和控制过程。 16_1 管理基础 什么是协议?协议是用于明确项目初步意向的任何文件或沟通结果,协议的范…...
宽带的带宽
宽带的带宽是指在一定时间内通过网络连接传输数据的能力,通常用**比特率(bit/s,即每秒传输的比特数)**来表示,比如100Mbps(兆比特每秒)。带宽越大,理论上网络传输数据的速度越快&…...
DeepSeek分析仿写选题应该怎么做?
目录 选题分析:AIGC在学术写作中的应用及其与作者背景的关系 1. 选题背景与意义 2. 研究问题 3. 研究方法 4. 主要发现 5. 研究贡献 6. 研究局限与未来方向 7. 结论 8. 未来研究方向 大家好这里是AIWritePaper官方账号,官网👉AIWrit…...
19840 Dijkstra求最短路2
19840 Dijkstra求最短路2 相较于1,数据增强了,要用堆来优化,也就是优先队列。 ⭐️难度:中等 🌟考点:Dijkstra、最短路问题 📖 📚 import java.util.*;public class Main {static…...
docker-compose部署prometheus+grafana+node_exporter
目录 docker-compose文件 配置文件 文件层级关系,docker-compose和配置文件位于同级目录 node_exporter页面json文件 涉及离线包 一.docker-compose文件 [rootsulibao prometheus]# cat docker-compose.yml version: 3services:prometheus:image: registry.c…...
Oracle数据库数据编程SQL<递归函数详解>
递归函数是一种在函数体内直接或间接调用自身的函数。这种函数通过将复杂问题分解为更小的相同问题来解决特定类型的编程任务。 目录 一、递归函数基本概念 1. 递归定义 2. 递归工作原理 二、递归函数示例 1. 经典阶乘函数 2. 斐波那契数列 3. 计算数字位数 三、递归查…...
Redis-08.Redis常用命令-有序集合操作命令
一.有序集合操作命令 ZADD key score 1 member1 [score2 member2]: zadd zset 10.0 a 10.5 b ZRANGE key start stop [WITHSCORES]: zrange zset 0 -1 为何顺序为a,c,b? 因为 zrange zset 0 -1 withscores zrange key start …...
LLaMA-Factory使用实战
LLaMA-Factory使用实战 项目介绍 项目地址:https://github.com/hiyouga/LLaMA-Factory 中文文档:安装 - LLaMA Factory 快速开始文档:https://zhuanlan.zhihu.com/p/695287607(推荐参考) 远程服务器通过本地代理加…...
读一本书,骑行万里路:与维乐 Angel Rise+骑行看世界
最近读到了一本名为《自行车改变的世界:女性骑行的历史》的书,才发现原来女性的骑行自由来得并不轻易,激励着每一位女性勇敢地踏上骑行之路。而我一直在使用的维乐坐垫品牌,除了产品专业之外,也一直都非常关注女性骑行…...
【大模型】SpringBoot整合LangChain4j实现RAG检索实战详解
目录 一、前言 二、LangChain4j 介绍 2.1 什么是LangChain4j 2.2 LangChain4j 主要特点 2.3 Langchain4j 核心组件 三、RAG介绍 3.1 什么是RAG 3.2 RAG工作流程 3.2.1 补充说明 3.3 Embedding模型 3.3.1 RAG实际使用步骤 3.3.2 什么是Embedding 3.3.3 Embedding 技…...
流动的梦境:GPT-4o 的自回归图像生成深度解析
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
北大人工智能研究院朱松纯:“中国的AI叙事” 存在认知偏差
3月29日,在2025中关村论坛通用人工智能论坛上,北京通用人工智能学院院长,北京大学人工智能研究院、智能学院院长朱松纯表示,目前,行业对AI的讨论几乎被大模型能力所占据,而基础学科、原始创新与智能本质的研…...
习题1.26
解释题,说简单也简单,难在如何表达清楚。 首先解释下代码的变化 (defn expmod[base exp m](cond ( exp 0) 1(even? exp) (mod (square (expmod base (/ exp 2) m)) m):else (mod (* base (expmod base (- exp 1) m)) m)))(defn expmod[base exp m](co…...
FPGA调试笔记
XILINX SSTL属性电平报错 错误如下: [DRC BIVRU-1] Bank IO standard Vref utilization: Bank 33 contains ports that use a reference voltage. In order to use such standards in a bank that is not configured to use INTERNAL_VREF, the banks VREF pin mu…...
基于Java(SSM)+Mysql实现移动大厅业务办理(增删改查)
基于 SSM 框架的移动业务大厅 数据库需要自行创建! 一、 整体基本实现情况 对本学期的 Java 作业 1 的 SOSO 移动大厅进行改进, 基于 SSM、JSP、Maven、Tomcat、MySQL 等实现。 二、 实现详情 1、 工程结构图 2、 工程结构各部分实现 (…...
音视频 ColorSpace色彩空间详解
前言 基于前篇介绍YUV格式,本文继续介绍另一个重要概念颜色空间,又叫色彩空间;主要用于在音视频开发中的色彩空间转换。 色彩空间Color Space 色彩空间由色彩模型和色域共同定义。当色彩模型与特定的描述相关联以后,就称为色彩空间。 色彩模型Color Model 色彩模型Col…...
【字符设备驱动开发–IMX6ULL】(一)简介
【字符设备驱动开发–IMX6ULL】(一)简介 一、Linux驱动与裸机开发区别 1.裸机驱动开发回顾 1、底层,跟寄存器打交道,有些MCU提供了库。 spi.c:主机驱动(换成任何一个设备之后只需要调用此文件里面的…...
