ARTICLE
不平衡数据集
不平衡数据集 (Imbalanced Dataset) 不平衡数据集是指在分类问题中,各类别样本数量存在显著差异的数据集。多数类(又称负类)样本量远大于少数类(又称正类)样本量,比例可能达到 10:1、100:1 甚至 1000:1。这种现象在现实应用中极为普遍:信用卡欺诈交易占比通常不足 0.1\%,罕见病发病率仅为万分之一,工业设备故障数据在正常运行数据
不平衡数据集 (Imbalanced Dataset)
不平衡数据集是指在分类问题中,各类别样本数量存在显著差异的数据集。多数类(又称负类)样本量远大于少数类(又称正类)样本量,比例可能达到 10:1、100:1 甚至 1000:1。这种现象在现实应用中极为普遍:信用卡欺诈交易占比通常不足 0.1\%,罕见病发病率仅为万分之一,工业设备故障数据在正常运行数据中几乎微不足道。当类别分布严重倾斜时,标准机器学习算法会产生"多数类偏好"——模型倾向于将所有样本预测为多数类,从而在总体准确率上看似优异,但对少数类的识别能力几乎为零,而这恰恰是实际问题最关心的部分。
核心挑战
传统分类算法(如逻辑回归、决策树、支持向量机)的设计目标通常是最大化总体准确率。在不平衡场景下,这一目标函数天然地牺牲了少数类。以 99:1 的失衡比例为例,一个将所有样本都判为多数类的"懒模型"即可获得 99\% 的准确率,但它在少数类上的召回率为 0,完全没有实际价值。
更深层的问题在于,少数类样本在特征空间中的密度远低于多数类,使得算法难以学习到有效的决策边界。多数类占据的统计信息淹没了少数类的信号,导致分类面被"推"向少数类一侧,造成大量的假阴性错误。此外,少数类样本可能本身存在异质性——即少数类内部的样本分布模式并不一致,进一步加大了学习的难度。
评价指标的转变
在不平衡场景下,准确率是一个具有误导性的指标。必须转向能够反映少数类识别能力的评估体系:
- 精确率 (Precision):预测为正类的样本中真正为正类的比例,衡量预测的可靠性。
- 召回率 (Recall):真正的正类样本中被正确识别的比例,衡量对少数类的覆盖能力。
- F1 分数:精确率和召回率的调和平均值,是综合二者的标准指标。当两者差异过大时,F1 分数偏向较低者,迫使模型在二者间取得平衡。
- AUC-ROC:绘制不同阈值下真正类率与假正类率的关系曲线,计算曲线下面积。AUC 不受分类阈值影响,能反映模型对正负类的整体排序能力,在不平衡场景下比准确率稳健得多。
- PR 曲线 (Precision-Recall Curve):当正类比例极低时,PR 曲线比 ROC 曲线更能灵敏地反映模型性能的变化,因为 ROC 曲线中的假正类率会被大量负类样本稀释。
处理方法
不平衡数据集的处理策略可分为数据层面、算法层面和集成方法三大类。
数据层面方法
随机欠采样从多数类中随机剔除样本,使两类数量相等。方法简单,但会丢弃大量可能有信息价值的数据,导致多数类的信息损失,降低模型对多数类的判别能力。
随机过采样复制少数类样本以增加其数量。虽然不损失信息,但复制样本会导致模型对少数类过拟合,无法泛化到未见过的少数类样本。
SMOTE 在少数类样本的特征空间中进行插值,生成合成样本而非简单复制。对每个少数类样本,在其 k 近邻中随机选择一个邻居,在二者连线上随机取点作为新样本。后续改进包括 Borderline-SMOTE(关注边界区域)、ADASYN(自适应生成数量)和 K-Means SMOTE(先聚类再合成)等。
算法层面方法
代价敏感学习为不同类别赋予不同的误分类代价。在损失函数中,对少数类的误分类赋予更高的权重,迫使算法优先关注少数类样本。逻辑回归、支持向量机和神经网络均可通过加权的方式实现代价敏感。
阈值调整标准分类器默认以 0.5 为决策阈值,但在不平衡场景下这一阈值并不最优。可以通过验证集搜索最优阈值,或基于代价函数动态调整阈值,使模型在精确率和召回率之间达到理想平衡。
单类分类当少数类样本极度稀少时,可以将问题转化为异常检测——仅使用多数类样本训练模型,然后将偏离多数类分布的样本视为异常,常用方法包括 One-Class SVM 和孤立森林。
集成方法
SMOTEBoost 将 SMOTE 与 AdaBoost 结合,在每一轮 boosting 迭代中,先对少数类进行 SMOTE 过采样,然后训练弱分类器,使后续的弱分类器逐步聚焦于少数类。
EasyEnsemble 对多数类进行多次独立欠采样,每次得到一个平衡子集并训练一个分类器,最终集成所有子分类器的预测结果,保留了多数类的全部信息。
BalanceCascade 在 EasyEnsemble 的基础上引入时序淘汰机制,将已被正确分类的多数类样本从后续子采样中移除,逐步剔除冗余样本。
深度学习场景
深度神经网络在不平衡数据集上的常用应对策略包括:
- 类别加权交叉熵:在损失函数中为少数类赋予更高的权重,是最直接的改进方法。
- Focal Loss:在交叉熵基础上引入调制因子 ,使模型更关注难以分类的样本(通常是少数类),在极端不平衡的目标检测任务中表现优异。
- 数据增强:对少数类样本进行有意义的变换以增加多样性。对于图像数据,可采用旋转、裁剪、色彩抖动等方式;对于文本数据,可采用回译、同义词替换等方法。
局限性
不平衡数据集的处理方法并非万能。欠采样会丢失信息,过采样可能引入噪声,代价敏感学习需要准确设定成本比例——这在实践中往往难以精确量化。当少数类样本过少(如少于 5 个)时,任何方法的效果都极为有限。此外,数据层面的处理方法若在训练集上使用后,验证和测试时通常不再应用,但需要注意不要在交叉验证中造成数据泄露——采样应发生在每一折的训练集内部,而非整体数据集上。最根本的解决思路在于收集更多数据,特别是高质量的少数类样本。