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

Posted

技术标签:

【中文标题】大型多类 NLP 分类的不平衡数据和样本量【英文标题】:Imbalanced data and sample size for large multi-class NLP classification 【发布时间】:2015-09-09 22:16:46 【问题描述】:

我正在做一个 NLP 项目,我希望使用 MaxEnt 将文本分类到 20 个不同的类别之一。我正在根据手写的管理数据手动创建训练、验证和测试集。

我想确定训练集中的类所需的样本量以及验证/测试集的适当大小。

在现实世界中,20 个结果是不平衡的。但我正在考虑创建一个平衡的训练集来帮助构建模型。

所以我有两个问题:

我应该如何确定训练集中每个类别的合适样本量?

验证/测试集是否应该不平衡以反映模型在面对现实世界数据时可能遇到的情况?

【问题讨论】:

【参考方案1】:

为了确定测试集的样本量,您可以使用 Hoeffding 不等式。

E为正容差值,N为数据集的样本量。

然后我们可以计算霍夫丁不等式,p = 1 - ( 2 * EXP( -2 * ( E^2 ) * N ) )。

E = 0.05 (±5%) 且 N = 750,则 p = 0.9530。这意味着在 95.3% 的情况下,您的(样本内)测试误差不会偏离样本超过 5%。

对于训练集和验证集的样本量,有一个既定的惯例来分割数据,如下所示:50% 用于训练,25% 用于验证和测试。这些集合的最佳大小很大程度上取决于训练集和数据中的噪声量。如需更多信息,请查看“统计学习要素”中的“模型评估和选择”。

关于不平衡数据集的其他问题,请查看此线程:https://stats.stackexchange.com/questions/6254/balanced-sampling-for-network-training

【讨论】:

以上是关于大型多类 NLP 分类的不平衡数据和样本量的主要内容,如果未能解决你的问题,请参考以下文章

处理Auto-Sklearn中多类分类的不平衡数据集的最佳方法

从重采样到数据合成:如何处理机器学习中的不平衡分类问题?

如何在 Scikit-Learn 的随机森林分类器中设置子样本大小?特别是对于不平衡的数据

多类文本分类不平衡,处理类“其他”

在python中平衡的多类分类(过采样)

多类分类中的类不平衡问题