样本均衡

方法概述

样本均衡用于处理类别不平衡数据(Imbalanced Data),即数据集中各类别样本数量相差悬殊的情形。在分类建模中,若某一类别样本量过少,模型容易偏向多数类,导致少数类被忽视、整体性能被高估。本工具提供过采样(SMOTE 合成)、欠采样(随机缩减)与 SMOTE-Tomek 组合三种均衡策略,可将各类别样本量调整至相对均衡的水平,适用于二分类及多分类场景。均衡后的数据可作为后续分类建模、统计分析的输入。需要说明的是,样本均衡改变了原始样本的分布与数量,应对处理过程保持记录并在结果中如实描述。操作流程以图形化界面引导,从数据上传、参数设置到结果对比均可直观完成。

计算步骤

1. 数据加载与预处理

  • 文件读取:支持 CSV 和 Excel 格式,文件大小不超过 5MB。
  • 缺失值识别:自动识别常见缺失值占位符(如空字符串、NAnull?nan 等)并转换为 NA
  • 列类型转换:对于字符型列,若其值可转换为数值的比例较高,则自动转为数值列。
  • 空行/空列清理:删除完全为空的行和列。

2. 参数设置

  • 目标列(类别列):指定作为类别均衡依据的列,须包含至少两个类别。
  • 均衡方法:过采样(SMOTE 合成)、欠采样、SMOTE-Tomek 组合。
  • 近邻数 K:SMOTE 合成时用于查找最近邻的邻居数,默认 5,范围 1-20。
  • 随机种子:控制随机过程的复现性,默认 123。

3. 过采样(SMOTE 合成)

过采样将每个少数类别扩充至与最大类别相同的样本量。SMOTE 合成的基本思路:对少数类中的样本点 \(x_i\),在其 \(K\) 个最近邻中随机选取一个邻居 \(x_j\),并按下式生成新样本:

\[ x_{\text{new}} = x_i + \lambda \cdot (x_j - x_i), \quad \lambda \sim U(0, 1) \]

其中 \(\lambda\)\([0,1]\) 区间内均匀分布的随机数。最近邻距离基于各数值列标准化后计算欧氏距离。数值列由基样本与邻居插值得到,字符列沿用基样本取值,目标类别标签保持不变。若可利用的数值信息不足,工具自动退化为按现有少数类样本复制补足。

4. 欠采样(随机缩减)

欠采样将每个多数类别随机抽取至与最小类别相同的样本量。该方法不生成新数据,直接丢弃部分多数类样本,因此计算简单、不引入合成偏差,但可能丢失多数类中的有用信息。当多数类样本明显冗余、需要压缩数据集规模时,欠采样是简洁直接的选项。

5. SMOTE-Tomek 组合

先执行 SMOTE 过采样至各类别均衡,再对结果进行 Tomek 链接清理。Tomek 链接指一对互为最近邻、但分属不同类别的样本对;工具对每个少数类样本,检查其最近邻是否为多数类样本,且该多数类样本的最近邻是否又为该少数类样本,满足条件则判定为 Tomek 链接,并移除其中的多数类样本。清理后类别边界附近的多数类样本被剔除,类间重叠程度下降,有利于减轻后续建模时的边界误判。

6. 结果展示与导出

  • 类别分布对比图:以并排条形图对比均衡前后各类别样本量。
  • 均衡后数据预览:均衡后的完整数据表可在前端逐行预览,合成样本与原始样本一并展示,便于核对。
  • 均衡结果摘要:显示所用方法、操作说明、均衡前后行数与各类别计数。
  • 数据下载:可下载均衡后的数据(CSV 或 Excel 格式)。
  • 报告下载:生成包含方法说明、类别分布表和数据预览的 HTML 报告。

7. AI 智能分析

基于均衡前后的类别分布与操作摘要,调用大语言模型生成专业解读与建模建议(每日限 3 次,需配置 API 密钥)。

案例分析

案例背景:某银行拥有一份信用卡风险评分数据(示例数据),共 200 条记录,逾期与未逾期两类的样本量差异较大。为后续构建风险判别模型,需先对样本进行均衡处理。

原始数据(部分,示例)

客户ID 年龄 月均消费(元) 历史逾期次数 是否逾期
1001 45 4200 1
1002 32 6800 0
1003 28 3500 5
1004 51 2100 2

类别分布(示例)

类别 均衡前样本数 占总样本比例
未逾期 160 80%
逾期 40 20%

处理过程

  1. 上传数据,在”参数设置”中选择目标列”是否逾期”,选择 过采样(SMOTE 合成),近邻数 \(K=5\),随机种子 123。
  2. 点击”开始均衡”后,工具为”逾期”类别合成 120 条新样本,将其扩充至 160 条,与”未逾期”持平;均衡后总样本量变为 320 条。
  3. 类别分布对比图显示均衡后两类别条形高度基本一致;通过均衡后数据预览可逐条核对合成样本取值(数值特征为两样本插值、类别标签为”逾期”)。
  4. 若改用 SMOTE-Tomek 组合,则在步骤 2 之后继续清理类别边界附近互为最近邻的多数类样本(Tomek 链接),并在摘要中给出被清理的样本量。

均衡后类别分布(示例)

类别 均衡后样本数
未逾期 160
逾期 160

结论:在本示例数据中,均衡后的样本类别比例由 4:1 变为 1:1,SMOTE 合成在少数类样本与其近邻之间的连线区域生成新样本,保留了局部特征结构。应强调的是,该结论仅限于本示例数据范围,实际效果需结合具体数据分布验证。

常见问题

Q1: SMOTE 合成会引入偏差吗?
A: 可能。SMOTE 在少数类样本之间的连线上插值,可能放大少数类内部的噪声或生成偏离真实分布的新样本。建议先做异常值处理,并留意生成的极端合成样本。

Q2: 过采样和欠采样如何选择?
A: 两者各有利弊。过采样不丢失原始样本但可能引入合成噪声;欠采样不生成新样本但会丢弃多数类信息。若数据量本身不大,过采样更有利;若多数类中存在明显冗余,欠采样可以降低计算开销。

Q3: 近邻数 K 对结果有什么影响?
A: K 控制合成样本的插值范围。K 较小,新样本更贴近基样本;K 较大,插值对象更分散。建议从默认值 5 开始,根据可视化对比和后续建模效果调整。

Q4: 均衡是否必须把各类别调整为完全相等?
A: 不必须,视目标而定。若希望各类别对模型的影响大致相当,可均衡至相等;若少数类占比本身具有实际含义,则少量增补即可,不宜过度均衡。

Q5: 随机种子有什么用?
A: 均衡过程涉及随机抽样与随机插值,固定随机种子可保证相同输入条件下结果可复现,便于调试和审阅。

Q6: 均衡后的数据可以直接用于建模吗?
A: 可以,但建议先核对合成样本是否合理,并在建模时结合验证集验证模型效果,避免合成样本导致的过拟合;同时应如实记录均衡方法与参数以保证结果可复现。

Q7: 为什么均衡前后样本总数差异很大?
A: 过采样会将所有少数类扩充至最大类样本量,总行数随之增加;欠采样则将多数类缩减至最小类样本量,总行数减少。总行数变化属于方法本身的固有结果,属正常现象。

平台功能

  • 数据输入:支持 CSV、Excel 格式,文件不超过 5MB;自动识别缺失值并智能转换列类型;提供数据模板与算法说明下载。
  • 参数设置:目标类别列选择;过采样(SMOTE)、欠采样、SMOTE-Tomek 组合三种方法;近邻数 K(1-20);随机种子。
  • 多类别支持:不止二分类,支持目标列包含多个类别。
  • 结果展示
    • 原始数据与均衡后数据双预览(缺失值灰色标记)。
    • 类别分布对比图(均衡前后并排条形图,标注数值)。
    • 均衡结果摘要(方法、说明、均衡前后行数与类别分布)。
  • AI 智能分析:基于类别分布变化自动解读均衡方案合理性并给出建模建议(每日限 3 次,需配置 API 密钥)。
  • 结果下载:支持下载均衡后数据(CSV/Excel)和完整的 HTML 报告。

使用建议

  1. 先清洗后均衡:建议先完成缺失值和异常值处理,再执行样本均衡,避免合成样本继承脏数据。
  2. 方法组合使用:若少数类数量过少,可先用 SMOTE 增补,再视需求用 SMOTE-Tomek 清理边界,降低类间重叠。
  3. K 值调节:从默认 K=5 出发,若生成的合成样本不合理(如跨越明显离群点),适当减小 K。
  4. 固定随机种子:为结果可复现,建议固定随机种子,并在报告中记录均衡前后各类样本量。
  5. 验证下游效果:均衡并非目的,应以均衡后数据的建模与检验指标判断是否达到预期。
  6. 如实记录处理:在发表或汇报时注明采用的均衡方法、合成样本量及相关参数。
  7. 关注类间边界:使用 SMOTE-Tomek 组合时留意被清理的边界样本量,若清理过多可能导致信息损失,可适当减少清理或换用过采样。
  8. 多类别注意:若个别类别样本极少,合成样本可能集中围绕少数样本插值而缺乏多样性,可考虑先合并相近类别再均衡。
  9. 资源权衡:当数据量很大且多数类明显冗余时,欠采样可显著降低后续建模的计算成本,是可行的轻量方案。
  10. 敏感性对比:可分别尝试不同的 K 值或方法(过采样/欠采样/组合),对比下游模型表现后再确定最终方案。
  11. 交叉验证验证:均衡应在训练环节进行,避免验证集信息流入训练过程,确保模型评估符合规范。

平台界面

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

样本均衡工具界面

平台界面包含:数据上传区、参数设置区(目标列、均衡方法、K 值、随机种子)、类别分布对比图、原始/均衡后数据双预览、均衡结果摘要及 AI 分析模块

参考文献

  1. 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.
  2. Batista, G. E. A. P. A., Prati, R. C., & Monard, M. C. (2004). A study of the behavior of several methods for balancing machine learning training data. ACM SIGKDD Explorations Newsletter, 6(1), 20-29.
  3. 周志华 (2016). 机器学习. 清华大学出版社.