当数据集中某些类别的样本数量远少于其他类别时,就会出现类别不平衡,导致模型在代表性不足的群体上表现不佳。第一步是通过类别分布检查等指标来识别问题。例如,在欺诈检测数据集中,99% 是合法交易,1% 是欺诈,一个每次都预测“非欺诈”的模型将达到 99% 的准确率,但无法检测到欺诈。为了解决这个问题,您可以应用重采样技术。对少数类进行过采样(例如,复制欺诈示例)或对多数类进行欠采样(例如,随机删除合法交易)可以平衡数据集。Python 的 imbalanced-learn
库等工具提供了 RandomOverSampler
或 SMOTE
(生成合成少数类样本)等方法。但是,过采样有过度拟合噪声的风险,而欠采样会丢弃潜在有用的数据,因此可以尝试 SMOTE 之后进行轻微欠采样等组合。
另一种方法是在模型训练期间调整类别权重。许多算法(例如逻辑回归或随机森林)允许对错误分类少数类施加更高的惩罚。例如,在 scikit-learn 的 RandomForestClassifier
中设置 class_weight='balanced'
会告诉模型优先考虑少数类的准确性。评估指标也很重要:避免使用准确率,而应使用精确率、召回率、F1-score 或 AUC-ROC。例如,在医疗诊断中(其中假阴性至关重要),优化召回率可确保错过病例的数量更少。您还可以进行阈值调整——将决策边界转移到有利于少数类预测的方向。例如,将罕见疾病分类的概率阈值从 0.5 降低到 0.3 可能会增加真阳性,但会增加误报。
高级技术包括使用专为不平衡设计的集成方法,例如 EasyEnsemble 或 BalancedRandomForest,它们将重采样与 bagging 结合在一起。对于极端不平衡(例如,1:10,000 的比例),异常检测框架(如隔离森林或单类 SVM)可能会将少数类视为异常值。数据增强(例如,小视觉类的图像旋转)或收集更多稀有类别的样本也有帮助。始终使用分层交叉验证进行验证,以确保拆分中少数类的代表性。例如,使用 5 折 CV 拆分具有 5% 少数类样本的数据集可确保每个折叠都保留该 5%。没有通用的解决方案——测试多种策略并使用特定领域的指标来衡量它们的影响。