跳到主内容
快讯直播
AI智模界
AI 词典

SMOTE:在少数类样本之间插值造数据

SMOTE(Synthetic Minority Over-sampling Technique,合成少数类过采样技术)是一招专门对付类别不平衡(class imbalance)的数据增广方法:它不复制已有的少数类样本,而是在两个少数类样本之间“插值”,凭空造出新的合成样本。

它具体怎么造样本

假设你在训练一个欺诈识别模型,10000 笔交易里只有 50 笔是欺诈。模型见多了“正常”,就会懒得分“异常”。

SMOTE 的做法分四步:

1. 对每一个少数类样本 x,在少数类内部找它的 k 个最近邻(k 常取 5);

2. 从这 k 个邻居里随机挑一个 x';

3. 在 x 和 x' 的连线上随机取一个点:x_new = x + λ(x' − x),λ 是 0 到 1 之间的随机数;

4. 重复到少数类数量达到你想要的比例。

打个比方:少数类样本像地图上几家分散的便利店。想让“店铺”变多,直接复制就是同一个地址挂两块招牌——数量涨了,信息一点没多。SMOTE 的做法是沿着两家现有门店之间的路新开一家,把覆盖的空隙填上一点。

和相邻概念的区别

方法做法主要问题
随机过采样复制少数类样本重复点导致过拟合,决策边界过窄
随机欠采样丢掉部分多数类样本浪费数据,丢掉有用模式
SMOTE在少数类之间插值合成点可能落进多数类区域,变成噪声
类别权重/阈值调整不改数据,改损失权重或判定阈值不改变数据分布,但对高维和稀疏场景也管用

什么时候好用,什么时候会翻车

适合的场景:少数类样本本身有一定数量、分布大致成团、特征以数值型为主、维度不太高。

容易翻车的情况:少数类里混有噪声或离群点,邻居本身就是异常点,插值出来还是噪声;少数类分成几个相距很远的子簇,跨簇插值会造出“四不像”;特征大多是类别型时,欧氏距离没什么意义,得用能处理类别特征的变体;维度很高时,最近邻本身就不可靠。

围绕它还有一批改进版,思路基本是“只在不那么危险的区域插值”或“按难度自适应地决定插多少”,按需查官方文档和论文即可。

给从业者的三条提醒

1. 只在训练集上做。先用原始数据切好训练/验证/测试,再对训练集做 SMOTE。对验证集或测试集做,就是数据泄漏,指标会很好看,上线就崩。

2. 别只看准确率。不平衡场景下准确率会骗人,看召回率、PR-AUC 这类指标更实在。

3. 先试代价敏感学习。调整类别权重、移动判定阈值往往更省事,SMOTE 是常被提起的一招,但不必是第一招。

一句话收尾:SMOTE 用“插值”换来了更多样的少数类样本,代价是可能引入噪声——它是一把好用的工具,不是不平衡问题的万能钥匙。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。