如何在多类文本分类问题中平衡数据?

Posted

技术标签:

【中文标题】如何在多类文本分类问题中平衡数据?【英文标题】:How to balance data in a multi class text classification problem? 【发布时间】:2019-06-11 11:01:12 【问题描述】:

我有一个包含 29 个输出类的多类文本分类问题。这是训练数据集中 29 个类的记录分布。

我想知道我应该如何使用上采样来平衡我的数据?对于上采样,我应该将所有类上采样到 1337 行吗?

【问题讨论】:

Imbalanced Dataset for Multi Label Classification的可能重复 我会尝试使用 SMOTE,我会为每个类创建 100 个人工样本。看看它是如何工作的。 【参考方案1】:

上采样(或过采样)可能会产生更平衡的数据集,但由于少数类示例的重复(Kotsiantis et al.),它也鼓励过拟合

正如user2974951 所提到的,SMOTE 是一种基于现有数据生成样本的方法,从而降低了上述过拟合少数类的风险(Chawla et al. 显示使用 SMOTE 与偏差调整相比有显着改进)。

或者,您可以尝试选择一种不太容易受到基于不平衡的偏差影响的学习算法(例如,SVM 可以很好地处理不平衡数据Sun et al.)。

如果这不可能,Liu et al. 提出的基于术语的加权 或Mark.F 提到的类似加权方法可以帮助提高使用不平衡数据集进行训练时的预测准确性。 p>

祝你好运!

【讨论】:

【参考方案2】:

您不必对数据大小进行上采样。您可以使用加权损失函数来平衡模型的激励,以正确分类所有类别(相同的影响)。

例如,样本量最少的类(“CONVEYOR SAFETY”)的损失为L*1337/45,样本量最多的类的损失为L*1337/1337=L

【讨论】:

以上是关于如何在多类文本分类问题中平衡数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多类预测中得到未知类?

CNN模型在多类分类上过拟合

大型多类 NLP 分类的不平衡数据和样本量

使用 OpenCV 在多类分类中获取 SVM 分类分数

使用深度学习防止在多类分类中过度拟合特定类

多类分类问题中的不平衡 - 四个目标级别