数据采样
方法概述
数据采样是从数据集中抽取子集或调整类别分布的操作,用于样本规模缩减、代表性子集获取以及类别不平衡问题的处理。本工具提供简单随机采样、系统采样(等距采样)、分层采样三种按比例抽样方法,以及过采样(合成少数类样本)与欠采样(缩减多数类样本)两种不平衡数据处理方法。通过设置随机种子可保证结果可复现。适用于实验设计抽样、大数据集降采样以及分类建模前的样本均衡等场景。
本工具提供以下核心能力:
- 支持简单随机采样,按比例从全表无放回地随机抽取。
- 支持系统(等距)采样,按固定步长均匀抽取样本。
- 支持分层采样,按分层列占比在各层内抽取并保持结构。
- 支持过采样,以近邻插值方式合成少数类样本(近邻数可调)。
- 支持欠采样,随机缩减多数类至与少数类持平。
- 支持设置随机种子,保证采样结果可复现。
- 提供原始数据与采样后数据的双预览及类别分布统计。
- 集成 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 | 否 |
| … | … | … | … |
处理过程:
- 数据加载:上传 CSV 文件。
- 选择方法:过采样(合成少数类)。
- 目标列:违约。
- 近邻数 K:5,随机种子:123。
- 执行采样:将「违约=是」扩充至与「违约=否」持平。
采样后目标列分布(示例):
| 违约 | 原始样本量 | 采样后样本量 |
|---|---|---|
| 是 | 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 报告。
使用建议
- 明确目标:抽样子集用于分析,选择随机/系统/分层采样;准备建模数据且类别不平衡,选择过采样或欠采样。
- 保持可复现:记录并固定随机种子,便于他人复现与结果审计。
- 优先尝试分层采样:当数据存在明显类别或分组结构时,分层采样能让子集结构与总体更接近。
- 欠采样结合大样本:数据量大且不希望引入合成样本时,欠采样更稳妥;少数类样本稀少时优先过采样。
- 核对均衡效果:采样后查看目标列分布,确认两类样本量达到预期,避免过采样过度或欠采样丢失关键信息。
- AI 分析辅助:配置 API 密钥后,可用 AI 分析评估采样方案对后续建模的影响。
平台界面

平台界面包含:数据上传区、采样方法选择区(随机/系统/分层/过采样/欠采样)、比例与随机种子及分层列/目标列参数设置、原始/采样后数据双预览、采样摘要与类别分布统计、AI 分析模块与结果下载区
参考文献
- Cochran, W. G. (1977). Sampling Techniques (3rd ed.). John Wiley & Sons.
- 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.