趋近智
在许多实际的文本分类情境中,你可能会遇到类别分布很不均匀的数据集。设想构建一个垃圾邮件过滤器:多数邮件可能是合法的(非垃圾邮件),而只有很少一部分是垃圾邮件。类似地,医疗文件分类可能涉及大量常规报告,而极少部分指向罕见病症。这些情形导致不平衡数据集,其中一个或多个类别(少数类别)与其它类别(多数类别)相比,样本数量明显偏少。
为什么这种不平衡是个问题呢?标准的机器学习算法,通常旨在优化整体准确率,往往会对多数类别产生偏向。一个模型可能仅仅通过总是预测多数类别就能达到高准确率,从而实际上忽略了少数类别。当少数类别是你最感兴趣识别的(例如,欺诈交易、紧急支持工单、罕见疾病指标)时,这个问题尤其突出。此外,如评估指标部分所述,整体准确率在不平衡数据集上可能是一个误导性指标。一个分类器正确识别95%的邮件可能听起来不错,但如果只有5%是垃圾邮件,那么一个将所有邮件标记为非垃圾邮件的模型仍然能达到95%的准确率,但对于垃圾邮件检测来说却完全没用。
第一步是辨别你是否在处理一个不平衡数据集。这通常很简单:查看训练数据中目标标签的频率分布。你可以使用简单的计数或直方图、条形图等可视化方式来查看比例。
垃圾邮件检测数据集中典型的非平衡分布。
如果你发现显著的偏斜,即一个类别明显多于其他类别(例如,比例为10:1、100:1或更高),你需要考虑应对方案,以减轻对分类器性能的潜在负面影响,特别是针对少数类别的召回率和F1分数等指标。高整体准确率可能掩盖了你最关注的类别的极低召回率。
有几种技术可以帮助处理文本分类中不平衡数据集带来的难题。这些方法通常分为数据层面的方法(修改数据集)和算法层面的方法(修改学习算法)。
重采样是指调整训练数据中的类别分布,以创建一个更平衡的数据集供模型学习。进行重采样只应在训练数据上,绝不能在验证集或测试集上进行,以确保评估的公正性。
少数类别过采样: 这涉及增加少数类别实例的数量。
imbalanced-learn等库提供了SMOTE及其变体的实现。多数类别欠采样: 这涉及减少多数类别实例的数量。
结合过采样和欠采样: 有时,结合多种方法效果最佳。例如,你可能对少数类别进行适度水平的SMOTE,并对多数类别进行一些随机欠采样,以达到平衡状态,而不会过度扭曲原始数据特征。
除了修改数据,你还可以调整学习算法,使其更关注少数类别。这被称为成本敏感学习。核心想法是,对少数类别上发生的错误赋予比多数类别上发生的错误更高的误分类成本。
训练时,算法会尝试最小化总成本,从而有效促使其更细致地学习少数类别中的模式。许多分类算法,包括逻辑回归、支持向量机和基于树的方法,都提供了处理类别权重的参数。例如,在scikit-learn中,你通常可以将class_weight参数设置为'balanced'。此模式会自动调整权重,使其与输入数据中的类别频率成反比:
其中 是类别 的权重, 是样本总数, 是类别数量, 是类别 中的样本数量。
如前所述,准确率对于不平衡问题往往不足。仅仅依赖它可能导致你部署一个在原定任务上表现不佳的模型。相反,应侧重于那些能更好反映不同类别(特别是少数类别)性能的指标:
将重采样技术整合到模型训练流程中时,尤其在使用交叉验证时,绝对需要在交叉验证循环的每个折叠内部应用重采样步骤,并且只使用该折叠的训练部分。如果在交叉验证数据分割之前应用重采样,会导致数据泄露,即验证折叠中的信息影响训练过程,从而导致过于乐观和不切实际的性能评估。
在交叉验证循环中应用重采样的正确流程。重采样仅应用于每个折叠的训练部分。
选择最佳方法通常需要进行实验。没有一种方法是普遍优越的。过采样、欠采样或成本敏感学习的有效性取决于特定的数据集、不平衡程度、所选的分类算法以及你优先考虑的评估指标。首先识别不平衡情况,选择合适的指标,然后尝试一种或多种技术,使用交叉验证等验证方案仔细评估对少数类别性能的影响。处理数据不平衡通常是构建实际有用的文本分类器的必要一步。
这部分内容有帮助吗?
imbalanced-learn 库的官方文档,详细介绍了SMOTE、欠采样技术和管道集成等多种重采样方法。class_weight参数和相关评估指标。© 2026 ApX Machine Learning用心打造