机器学习的一百个概念(3)上采样

news/2025/4/2 4:55:09/

前言

本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见[《机器学习的一百个概念》


ima 知识库

知识库广场搜索:

知识库创建人
机器学习@Shockang
机器学习数学基础@Shockang
深度学习@Shockang

正文

在这里插入图片描述

🎯 基础概念与应用场景

1.1 什么是上采样?

上采样(Oversampling)是机器学习中解决类别不平衡问题的关键技术之一。其核心思想是通过增加少数类样本的数量,使数据集中各类别的样本数量趋于平衡,从而提高模型对少数类的学习能力。

在这里插入图片描述

1.2 应用场景

上采样技术在以下场景中特别有价值:

  1. 🏦 金融风控

    • 信用卡欺诈检测(欺诈样本占比<0.1%)
    • 贷款违约预测(违约样本通常<5%)
  2. 🏥 医疗诊断

    • 罕见疾病识别
    • 医学图像异常检测
  3. 🔍 异常检测

    • 工业设备故障预测
    • 网络安全入侵检测
  4. 📱 用户行为分析

    • 用户流失预警
    • 精准营销响应预测

🚀 上采样技术的演进

2.1 技术发展历程

在这里插入图片描述

2.2 核心技术分类

  1. 传统采样方法

    • Random Oversampling
    • SMOTE及其变体
    • ADASYN
  2. 现代智能采样方法

    • 基于GAN的采样
    • 自适应动态采样
    • 深度学习结合采样

🛠 主流上采样方法详解

3.1 SMOTE算法原理

SMOTE(Synthetic Minority Over-sampling Technique)是最经典的上采样算法之一。其工作流程如下:

在这里插入图片描述

核心公式:
X n e w = X i + λ × ( X k n n − X i ) X_{new} = X_i + \lambda \times (X_{knn} - X_i) Xnew=Xi+λ×(XknnXi)
其中:

  • X i X_i Xi 为原始少数类样本
  • X k n n X_{knn} Xknn 为选择的近邻样本
  • λ \lambda λ 为0到1之间的随机数

3.2 ADASYN算法

ADASYN(Adaptive Synthetic Sampling)是SMOTE的改进版本,其特点是根据样本分布自适应地生成新样本。

关键改进:

  1. 引入密度分布权重
  2. 自适应样本生成数量
  3. 关注难分样本

计算密度比:
r i = Δ i K r_i = \frac{\Delta_i}{K} ri=KΔi
其中:

  • Δ i \Delta_i Δi 为K近邻中多数类样本数
  • K K K 为近邻总数

3.3 基于GAN的上采样

生成对抗网络(GAN)在上采样中的应用:

在这里插入图片描述

优势:

  • 生成样本质量高
  • 可保持复杂特征
  • 具有更好的泛化性

💡 实践应用与案例分析

4.1 信用卡欺诈检测案例

实验数据特征:

  • 总样本量: 284,807
  • 欺诈交易: 492 (0.17%)
  • 正常交易: 284,315

性能对比:

方法准确率召回率F1分数
原始数据0.9990.6420.781
SMOTE0.9970.8930.874
ADASYN0.9960.9010.882
GAN采样0.9980.9120.891

4.2 代码实现示例

from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split
import numpy as np# 创建SMOTE对象
smote = SMOTE(random_state=42)# 应用SMOTE
X_resampled, y_resampled = smote.fit_resample(X, y)# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X_resampled, y_resampled, test_size=0.2, random_state=42
)

📊 性能评估与优化建议

5.1 评估指标选择

在不平衡数据集中,应重点关注:

  1. ROC曲线与AUC值
  2. PR曲线(Precision-Recall)
  3. F1分数
  4. Cohen’s Kappa系数

5.2 交叉验证策略

在这里插入图片描述

5.3 参数优化建议

  1. SMOTE参数调优:

    • k_neighbors: 5-10
    • sampling_strategy: auto/dict
    • random_state: 固定随机种子
  2. 集成策略:

    • Bagging与上采样结合
    • Boosting与上采样结合
    • 投票/堆叠集成

⚠️ 常见陷阱与解决方案

6.1 数据泄露问题

避免在整个数据集上进行上采样,正确流程:

在这里插入图片描述

6.2 过拟合防护

  1. 数据增强技术:

    • 添加噪声
    • 特征扰动
    • 随机旋转/平移
  2. 正则化策略:

    • L1/L2正则化
    • Dropout
    • Early Stopping

6.3 样本质量控制

  1. 异常检测:

    • IsolationForest
    • LocalOutlierFactor
    • One-Class SVM
  2. 质量评估指标:

    • 样本间距离分布
    • 特征空间覆盖率
    • 类内方差分析

🔮 总结与展望

7.1 技术选择建议

根据数据特征选择合适的上采样方法:

场景特征推荐方法原因
小数据集SMOTE/ADASYN实现简单,效果可控
高维数据GAN/VAE更好的特征学习能力
时序数据时序SMOTE保持时序特性
图像数据条件GAN保持视觉特征

7.2 未来发展趋势

  1. 🤖 与深度学习深度融合

    • 自编码器结合
    • 对抗生成网络优化
    • 迁移学习应用
  2. 📈 自适应动态采样

    • 在线学习支持
    • 实时调整策略
    • 多目标优化
  3. 🎯 可解释性增强

    • 样本生成过程可视化
    • 质量评估体系完善
    • 决策依据透明化

7.3 实践建议

  1. 数据预处理

    • 特征工程先行
    • 异常值处理
    • 标准化/归一化
  2. 采样策略

    • 逐步增加采样比例
    • 多种方法对比
    • 交叉验证验证
  3. 模型选择

    • 从简单模型开始
    • 逐步增加复杂度
    • 集成学习考虑

http://www.ppmy.cn/news/1584522.html

相关文章

css基础之浮动相关学习

一、浮动基本介绍 在最初&#xff0c;浮动是用来实现文字环绕图片效果的&#xff0c;现在浮动是主流的页面布局方式之一。 效果/代码 图片环绕 代码 div {width: 600px;height: 400px;background-color: skyblue;}img {width: 200px;float: right;margin-right: 0.5em;}<…

想弄清VR和AR区别,这一篇文章就够了

一、VR 与 AR 的定义差异 VR 即虚拟现实&#xff0c;是通过计算机生成的虚拟环境&#xff0c;用户可通过佩戴设备完全沉浸其中。比如&#xff0c;虚拟现实技术通过计算机模拟产生一个包含三维空间和时间的虚拟世界&#xff0c;使得用户对模拟场景产生身临其境的感觉。戴上 VR 眼…

Vue 项目安装依赖报错:errno -4048

笔记&#xff1a; 报错 使用管理换身份打开重新 运行 npm install 就好&#xff01; 报错 原因是 因为 当前 node.js 版本过高 需要降低node版本 重新运行 npm install 就好 降级 Node.js 版本&#xff1a; 根据错误提示&#xff0c;achrinza/node-ipc9.2.2 支持的最高版本是 N…

ora-38301:oracle的回收站临时表异常

最近&#xff0c;私人计算机的oracle意外出现异常错误 ora-38301:can not execute DDL/DML to recycle object. 个人估计可能原因如下&#xff1a; 1. 与使用truncate有关&#xff1b; 2. 可能是因为我的客户端工具有两类&#xff1a;PL/SQL 和 eclipse的Data Source Explo…

习题1.26

解释题&#xff0c;说简单也简单&#xff0c;难在如何表达清楚。 首先解释下代码的变化 (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…

20250330期:在前端网页上开发超图二维地图(vue+html)

目录 1 获取脚手架 2 运行环境 3 新建page页 4 vue环境下加载二维地图 4.1 定义空间 4.2 空间样式优化 4.3 安装依赖库 4.4 创建存储地图的函数 4.5 地图初始化 4.6 界面展示 5 html环境下加载二维地图 5.1 引入 SuperMap JS API 5.2 创建地图容器 5.3 初始化地图…

Unity 一个丝滑的3D下--XY轴2D平台跳跃--控制器模板(FSM)

本Demo基础来自于: 【阿严】[Unity]平台跳跃游戏 角色控制器 教程合集 | 状态机架构 | Platformer Controller Tutorial Collection_哔哩哔哩_bilibili 阿严的Github地址:https://github.com/AtCloudStudio/PlatformerControllerTutorial 我的实现:通过网盘分享的文件&#xf…

Android 中获取颜色资源

在 Android 开发中&#xff0c;资源&#xff08;如字符串、颜色等&#xff09;通常存储在 res 文件夹中&#xff0c;并通过资源 ID 进行访问。资源 ID 是一个整型值&#xff0c;用于唯一标识资源&#xff0c;若需要将资源转换为整型值&#xff0c;通常是指获取资源 ID 或从资源…