处理训练中的类别不平衡涉及到一些技术,用于解决数据集中某些类别的示例明显少于其他类别的情况。 这种不平衡会导致模型在代表性不足的类别上表现不佳,因为它们倾向于通过偏向多数类别来优先考虑准确性。 目标是确保模型从所有类别中学习有意义的模式,而不仅仅是最频繁的类别。 常见的方法包括修改数据集、调整损失函数以及使用考虑不平衡的专用算法。
一种实用的方法是重采样数据集。 对于欠采样,您可以通过随机删除实例来减少多数类别中的示例数量,直到类别大小平衡。 过采样则相反,通过复制或生成少数类别的合成示例,例如使用 SMOTE(Synthetic Minority Oversampling Technique)。 例如,在欺诈检测数据集中,95% 的交易是合法的,对欺诈案例(5%)进行过采样可以帮助模型识别细微的欺诈模式。 另一种方法是在损失函数中使用类别权重。 PyTorch 或 TensorFlow 等框架允许在训练期间为少数类别分配更高的权重。 例如,如果一个类别拥有 10% 的数据,则其权重可能会设置为 10,从而迫使模型对该类别的错误进行更严厉的惩罚。 这些调整引导模型专注于代表性不足的示例。
高级技术包括集成方法和异常检测。 像 BalancedRandomForest 或 EasyEnsemble 这样的算法创建具有平衡类别分布的数据的多个子集,并将它们的预测组合起来。 对于极端不平衡(例如,1:10,000),将问题视为异常检测——其中少数类别被视为异常值——可能是有效的。 例如,在罕见疾病的医疗诊断中,像 Isolation Forest 或 One-Class SVM 这样的模型可能会识别健康患者的模式并标记偏差。 同样重要的是使用像 precision-recall 曲线、F1-score 或 AUC-ROC 这样的指标,而不是准确率,因为它们可以更好地反映不平衡数据的性能。 在部署之前,测试这些方法的不同组合并使用分层交叉验证进行验证,以确保稳健性。