如何提高 f1 在不平衡数据集上的结果

数据挖掘 机器学习 阶级失衡 情绪分析 文本分类
2022-03-05 01:47:12

我有一个数据集,其中这些是数据的分布:

Neutral.  15000
Negative  3000
positive  2000

我最感兴趣的是提高负面类别的表现。我想说中立和积极对我来说并不重要。我正在使用Bert 模型

到目前为止我已经尝试过:

  1. 欠采样数据:负类结果较差
  2. 使用不同的方法来增强数据NLPaug结果不仅没有改善,反而下降了4%
  3. 班级重量。给负类更多的权重,但不影响结果,在某些情况下下降
  4. 我试图改变 batch_size epoch 等......它只有 0.5% 的改进

现在我的问题是,这可能是什么问题?(我需要检查我的数据集吗?)

还有什么我可以尝试改进我的模型?,这是我到目前为止的一般结果

Negative 65
positive 72
neutral  90

这是我的混淆矩阵:

               Pred_negative Pred_neutral Pred_positive
True_negative   138            101           3
True_neutral    53             1408          24
True_positive   2              25            69

我需要将负面类别至少提高 5%。

1个回答

一些想法:

  • 评价方法不清楚,特别是显示的评价分数是多少,是f1分数吗?
  • 为什么需要提高“至少 5%”?你知道另一个系统在相同数据上的结果吗?如果不是这样,那么瞄准特定的性能值就没有任何意义:性能很大程度上取决于数据,例如,您的系统可能已经使用此数据集达到了最大性能。你至少应该有一个基线系统来比较,例如一个基本的朴素贝叶斯分类器。
  • 您可以尝试的一件事是删除中性类别,这可能有助于模型专注于负面和正面之间的差异,而不是尝试正确分类中性类别。