文本分类中类别不平衡问题的处理一、问题本质类别不平衡指训练集中各类别样本数量差异悬殊例如新闻分类数据分布示例 - 科技类: 12000 条 - 体育类: 8000 条 - 财经类: 3000 条 - 军事类: 500 条 ← 少数类 - 农业类: 120 条 ← 极少数类不平衡带来的核心危害问题表现原因分类器偏向多数类少数类样本被大量误分为多数类分类器优化全局准确率多数类主导损失函数评估指标失真准确率虚高97%但少数类召回率极低多数类全对即可获得高准确率决策阈值不合理默认 0.5 阈值对少数类不友好少数类的后验概率天然偏低不平衡程度度量使用不平衡比率Imbalance Ratio, IRIRNmajorityNminorityIR \frac{N_{majority}}{N_{minority}}IRNminorityNmajorityIR 范围不平衡程度处理优先级1~3轻度通常无需特殊处理3~10中度建议处理10重度必须处理二、处理策略总览类别不平衡处理策略 ├── 数据层面 —— 重采样改变训练分布 │ ├── 过采样Oversampling │ │ ├── 随机复制 │ │ └── SMOTE合成少数类样本 │ └── 欠采样Undersampling │ ├── 随机欠采样 │ └── 聚类欠采样 ├── 算法层面 —— 修改学习策略 │ ├── 类别加权Class Weight │ ├── 阈值调整Threshold Tuning │ └── 集成方法Ensemble │ ├── Balanced Random Forest │ └── EasyEnsemble └── 评估层面 —— 使用不平衡感知指标 ├── F1-Score / Macro-F1 ├── PR-AUC └── 混淆矩阵分析三、数据层面重采样1. 过采样Oversampling随机复制从少数类中随机有放回抽样复制样本直到与多数类数量接近。原始: 军事类 500 条 → 复制至 12000 条优点缺点简单直接过拟合风险高——重复样本使模型记忆而非学习保留全部多数类信息训练时间增加SMOTESynthetic Minority Oversampling Technique核心思想不简单复制而是在少数类样本之间插值合成新样本。算法流程 1. 对每个少数类样本 x_i找到其 k 个最近邻同类 2. 随机选择一个近邻 x_zi 3. 在 x_i 和 x_zi 之间随机插值生成新样本 x_new x_i rand(0,1) × (x_zi - x_i) 4. 重复直到达到目标数量文本分类中的特殊考量文本特征通常是高维稀疏的 TF-IDF 向量标准 SMOTE 在连续空间插值直接应用于稀疏文本向量存在问题问题说明稀疏性破坏两个稀疏向量的线性插值会产生大量非零维度合成样本不再是稀疏文本表示语义不合理词袋模型中插值意味着半个词语义上无意义距离度量失效高维稀疏空间中欧氏距离区分度差文本适配方案SMOTE 变体仅在同类样本共现词之间插值保持稀疏性词级合成基于少数类文档的词分布生成新的文本如模板填充、同义词替换数据增强回译翻译再翻译回来、同义词替换、随机插入/删除词实践建议文本分类中数据增强回译、同义词替换比 SMOTE 更自然有效。2. 欠采样Undersampling随机欠采样从多数类中随机抽取与少数类等量的样本。原始: 科技类 12000 条 → 随机抽取 500 条优点缺点训练速度快丢弃大量多数类信息平衡效果好可能丢失重要的多数类模式聚类欠采样对多数类做 K-Means 聚类从每个簇中选取代表性样本保留多数类的分布多样性。3. 组合采样过采样 欠采样结合将多数类适度欠采样少数类适度过采样达到中间平衡。科技类: 12000 → 欠采样至 6000 军事类: 500 → 过采样至 3000 农业类: 120 → 过采样至 1000核心原则适度平衡即可IR 降至 1:2~1:5完全平衡1:1易导致过拟合。四、算法层面修改学习策略1. 类别加权Class Weight原理在损失函数中给少数类样本更大的权重使分类器更重视少数类的错误。以逻辑回归为例加权交叉熵损失L−∑iwyi[yilogy^i(1−yi)log(1−y^i)]L -\sum_i w_{y_i} \left[ y_i \log \hat{y}_i (1-y_i)\log(1-\hat{y}_i) \right]L−i∑wyi[yilogy^i(1−yi)log(1−y^i)]权重计算sklearn 默认策略wcNK⋅Ncw_c \frac{N}{K \cdot N_c}wcK⋅NcN其中NNN为总样本数KKK为类别数NcN_cNc为类别 c 的样本数。少数类NcN_cNc小权重wcw_cwc大。各分类器的实现分类器参数示例SVMclass_weightbalancedSVC(class_weightbalanced)逻辑回归class_weightbalancedLogisticRegression(class_weightbalanced)朴素贝叶斯class_prior手动设置调整先验概率P(c)P(c)P(c)随机森林class_weightbalancedRandomForestClassifier(class_weightbalanced)优点缺点不改变数据分布无信息损失权重过大可能导致多数类性能下降实现简单一行参数需调参确定最优权重对文本分类效果稳定对极端不平衡IR100效果有限实践建议类别加权是文本分类中性价比最高的不平衡处理方法应作为首选尝试。2. 阈值调整Threshold Tuning原理默认决策阈值为 0.5对少数类不友好。通过调整阈值提升少数类召回率。默认阈值 0.5: 少数类预测概率 0.3 → 判为多数类错误 调整阈值 0.25: 少数类预测概率 0.3 → 判为少数类正确阈值选择方法在验证集上扫描从 0.05 到 0.95步长 0.05选择使 F1 或 Macro-F1 最大的阈值基于代价矩阵若已知误分类代价按最小总代价确定阈值PR 曲线拐点在 Precision-Recall 曲线上找 F1 最大点对应的阈值# sklearn 示例fromsklearn.metricsimportprecision_recall_curve precision,recall,thresholdsprecision_recall_curve(y_val,y_prob)f12*precision*recall/(precisionrecall1e-8)best_thresholdthresholds[f1.argmax()]3. 集成方法EasyEnsemble1. 将多数类随机划分为 N 个子集每个子集大小 少数类样本数 2. 用每个子集 全部少数类训练一个分类器 3. 共得到 N 个基分类器 4. 预测时投票/平均优点缺点充分利用多数类信息训练 N 个分类器计算成本高集成降低方差实现较复杂Balanced Bagging在每轮 Bootstrap 采样时强制平衡各类别比例再训练基分类器集成。五、评估层面不平衡感知指标错误的评估方式❌ 准确率Accuracy 军事类 500 条全错准确率仍 (1200080003000120) / 23620 98.3% 看似很高但军事类召回率 0%正确的评估指标指标公式特点Macro-F11K∑cF1c\frac{1}{K}\sum_c F1_cK1∑cF1c各类 F1 算术平均每个类别等权对少数类敏感Micro-F1全局计算 TP/FP/FN受多数类主导不适合不平衡场景Weighted-F1∑cNcNF1c\sum_c \frac{N_c}{N} F1_c∑cNNcF1c按样本量加权仍偏向多数类PR-AUCPrecision-Recall 曲线下面积对少数类更敏感优于 ROC-AUC混淆矩阵逐类分析直观发现哪些类被误分推荐组合主指标: Macro-F1关注各类均衡表现 辅助分析: 混淆矩阵定位误分模式 少数类专项: Per-class Recall PR-AUCMacro-F1 vs Micro-F1 对比场景: 3 类A:1000, B:200, C:50 Macro-F1 (F1_A F1_B F1_C) / 3 → C 类的 F1 与 A 类同等重要 → 少数类表现差会显著拉低 Macro-F1 Micro-F1 全局 TP / (TP FP) 类计算 → A 类主导C 类几乎无影响 → 不平衡下可能虚高六、综合实践策略推荐处理流程Step 1: 评估不平衡程度 │ 计算 IR判断是否需要处理 ▼ Step 2: 建立正确评估基线 │ 使用 Macro-F1 混淆矩阵不用 Accuracy ▼ Step 3: 算法层面首选 │ class_weightbalanced 阈值调整 │ 成本最低效果通常显著 ▼ Step 4: 数据层面补充 │ 若 Step 3 不足叠加数据增强回译/同义词替换 │ 训练集重采样测试集保持原始分布 ▼ Step 5: 集成方法兜底 │ 极端不平衡IR50时用 EasyEnsemble ▼ Step 6: 组合优化 │ 重采样 类别加权 阈值调整 三者组合 │ 交叉验证确定最优组合关键原则原则说明重采样只在训练集做测试集/验证集必须保持原始分布否则评估失真适度平衡即可IR 降至 1:2~1:5 通常最优完全平衡易过拟合组合策略效果最佳重采样 类别加权 阈值调整 协同效果优于单一方法先评估再处理轻度不平衡IR3可能无需处理过度处理反而有害关注少数类召回率实际业务中少数类漏检代价通常远高于误检代价七、总结文本分类中处理类别不平衡的核心思路是数据层面重采样、算法层面加权与阈值调整、评估层面使用 Macro-F1 等不平衡感知指标。实践上应遵循先建立正确评估基线Macro-F1 混淆矩阵再以类别加权 阈值调整为首选方案必要时叠加数据增强和集成方法重采样仅在训练集进行适度平衡而非完全平衡的综合策略。文本分类的特殊性在于 SMOTE 等传统插值方法对高维稀疏文本特征不友好应优先考虑回译、同义词替换等文本数据增强方式。