数据采样

方法概述

数据采样是从数据集中抽取子集或调整类别分布的操作,用于样本规模缩减、代表性子集获取以及类别不平衡问题的处理。本工具提供简单随机采样系统采样(等距采样)分层采样三种按比例抽样方法,以及过采样(合成少数类样本)与欠采样(缩减多数类样本)两种不平衡数据处理方法。通过设置随机种子可保证结果可复现。适用于实验设计抽样、大数据集降采样以及分类建模前的样本均衡等场景。

本工具提供以下核心能力:

  • 支持简单随机采样,按比例从全表无放回地随机抽取。
  • 支持系统(等距)采样,按固定步长均匀抽取样本。
  • 支持分层采样,按分层列占比在各层内抽取并保持结构。
  • 支持过采样,以近邻插值方式合成少数类样本(近邻数可调)。
  • 支持欠采样,随机缩减多数类至与少数类持平。
  • 支持设置随机种子,保证采样结果可复现。
  • 提供原始数据与采样后数据的双预览及类别分布统计。
  • 集成 AI 智能分析,评估采样结果对后续建模的影响。
  • 可下载采样后数据(CSV/Excel)与分析报告(HTML)。

计算步骤

1. 数据加载与预处理

  • 文件读取:支持 CSV 和 Excel 格式,文件大小不超过 5MB。
  • 缺失值识别:自动将常见缺失符号转换为缺失标记 NA
  • 列类型智能转换:字符型列中超过 80% 的值可转为数值时自动转为数值列。
  • 空行/空列清理:删除完全为空的行和列。

2. 简单随机采样

按照给定比例从数据集中无放回地随机抽取样本。设总行数为 \(n\),采样比例为 \(r\),则样本量: \[ n_s = \max\left(1, \;\text{round}(n \cdot r)\right) \] 每行被抽中的概率相同,适合数据整体同质、无需保持结构的场景。

3. 系统(等距)采样

按等距步长抽取样本。间距为 \(h = n / n_s\),在第一个间距内随机确定起点 \(s\),第 \(k\) 个样本的序号为: \[ i_k = \text{round}\!\left(s + (k-1) \cdot h\right), \quad k = 1, 2, \ldots, n_s \] 保留满足 \(i_k \le n\) 的序号,形成近似等间距覆盖全表的样本,适合按顺序排列的数据。

4. 分层采样

按指定分层列的类别占比分配样本量并在各层内随机抽取。设第 \(j\) 层总体数为 \(N_j\),总样本量为 \(n_s\),则第 \(j\) 层样本量: \[ n_j = \max\left(1, \;\min\left(\text{round}\!\left(n_s \cdot \frac{N_j}{n}\right),\; N_j\right)\right) \] 各层样本按比例抽取,可保持分层变量在样本中的分布结构。

5. 过采样(处理少数类)

针对目标类别列,将少数类样本扩充至与多数类持平的规模。设少数类与多数类样本量分别为 \(n_{\min}\)\(n_{\text{maj}}\),需合成 \(n_{\text{new}} = n_{\text{maj}} - n_{\min}\) 条新样本。工具采用近邻插值方式合成:对数值列,取少数类样本 \(x_{\text{base}}\) 与其最近邻样本 \(x_{\text{neigh}}\),取随机系数 \(\lambda \sim U(0,1)\),生成: \[ x_{\text{new}} = x_{\text{base}} + \lambda \cdot (x_{\text{neigh}} - x_{\text{base}}) \] 近邻数 \(K\) 可在参数中调节(默认 5)。字符列沿用基准样本取值。若数据无数值列,则通过复制少数类样本进行扩充。

6. 欠采样(处理多数类)

从多数类中随机抽取与少数类持平的样本量 \(n_{\min}\),与全部少数类样本共同构成均衡的数据集,常用于样本规模较大且希望纳入全部少数类样本的场景。

7. 结果摘要

自动生成采样方法、处理说明、原始行数、采样后行数,并输出过采样/欠采样后目标类别列的分布,或分层采样后分层列的分布,便于核对均衡效果。

8. AI 智能分析

基于采样方法、处理说明及采样前后行数等信息,调用大语言模型评估采样结果并给出后续分析建议。

9. 结果导出

  • 下载采样后的数据(CSV 或 Excel 格式)。
  • 下载包含采样摘要与采样后数据前 10 行预览的 HTML 报告。

案例分析

案例背景:某风控数据集包含 1000 条申请记录,其中「违约=是」的样本仅 80 条、「违约=否」920 条,类别严重不平衡。为便于分类建模,先用过采样把违约样本扩充至与不违约样本持平。

原始数据(示例)

客户ID 收入(元/月) 信用分 违约
C001 8500 720
C002 12000 780
C003 6000 640
C004 15000 810

处理过程

  1. 数据加载:上传 CSV 文件。
  2. 选择方法:过采样(合成少数类)。
  3. 目标列:违约。
  4. 近邻数 K:5,随机种子:123。
  5. 执行采样:将「违约=是」扩充至与「违约=否」持平。

采样后目标列分布(示例)

违约 原始样本量 采样后样本量
80 920
920 920

结论:在本示例数据范围内,过采样将少数类「违约=是」由 80 条扩充至 920 条,两类样本量持平,类别分布趋于均衡;合成样本的数值列由少数类原始样本就近插值生成。

常见问题

Q1: 五种采样方法分别适用什么场景?
A: 随机采样适合整体抽样;系统采样适合按顺序排列的数据;分层采样适合需保持类别/组别分布的结构化抽样;过采样与欠采样专门处理类别不平衡。

Q2: 随机种子有什么作用?
A: 设置固定随机种子后,同一数据与参数下重复执行可得到一致的采样结果,便于结果复现与对比。

Q3: 过采样与欠采样哪个更好?
A: 因人而异。过采样保留全部样本,但引入了合成样本;欠采样减少样本量,可能丢弃部分多数类信息。小样本数据一般宜用过采样,大样本数据可考虑欠采样。

Q4: 过采样生成的合成样本可靠吗?
A: 合成样本在少数类原始样本之间按近邻插值生成,取值位于原始样本范围内,可增加少数类多样性;但合成样本并非真实观测,评估时应结合业务理解使用。

Q5: 分层采样需要满足什么条件?
A: 需要指定有效的分层列(类别变量),工具将按各层占总体比例分配样本量,并保证不超过该层总样本量。

平台功能

  • 数据输入:支持 CSV、Excel 格式(不超过 5MB),自动识别缺失值并转换数值列。
  • 抽样方法:简单随机采样、系统(等距)采样、分层采样(按比例抽样,可设比例与随机种子)。
  • 不平衡处理:过采样(SMOTE 风格合成少数类,近邻数 K 可调)与欠采样(随机缩减多数类)。
  • 参数控制:采样比例(0.05-1)、随机种子、分层列/目标列选择、近邻数 K。
  • 结果展示
    • 原始数据与采样后数据双预览。
    • 采样摘要(方法、说明、前后行数)及目标列/分层列分布统计。
  • AI 智能分析:评估采样效果并提供后续分析建议(每日限 3 次,需配置 API 密钥)。
  • 报告下载:支持下载采样后数据(CSV/Excel)及含摘要与预览的 HTML 报告。

使用建议

  1. 明确目标:抽样子集用于分析,选择随机/系统/分层采样;准备建模数据且类别不平衡,选择过采样或欠采样。
  2. 保持可复现:记录并固定随机种子,便于他人复现与结果审计。
  3. 优先尝试分层采样:当数据存在明显类别或分组结构时,分层采样能让子集结构与总体更接近。
  4. 欠采样结合大样本:数据量大且不希望引入合成样本时,欠采样更稳妥;少数类样本稀少时优先过采样。
  5. 核对均衡效果:采样后查看目标列分布,确认两类样本量达到预期,避免过采样过度或欠采样丢失关键信息。
  6. AI 分析辅助:配置 API 密钥后,可用 AI 分析评估采样方案对后续建模的影响。

平台界面

官方地址:https://superr.online

数据采样工具界面

平台界面包含:数据上传区、采样方法选择区(随机/系统/分层/过采样/欠采样)、比例与随机种子及分层列/目标列参数设置、原始/采样后数据双预览、采样摘要与类别分布统计、AI 分析模块与结果下载区

参考文献

  1. Cochran, W. G. (1977). Sampling Techniques (3rd ed.). John Wiley & Sons.
  2. Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: Synthetic Minority Over-sampling Technique. Journal of Artificial Intelligence Research, 16, 321-357.