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

标签 machine-learning nlp classification sample maxent

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

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

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

所以我有两个问题:

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

验证/测试集是否应该不平衡,以反射(reflect)模型在面对现实世界数据时可能遇到的条件?

最佳答案

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

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

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

E = 0.05 (±5%) 且 N = 750,则 p = 0.9530。这意味着您的(样本内)测试误差与样本外的偏差不会超过 5%,确定性为 95.3%。

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

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

关于machine-learning - 大型多类 NLP 分类的数据和样本量不平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31014235/

相关文章:

python - 使用 scikit-learn 了解分类报告中的 UndefinedMetricWarning?

java - 在 Android 应用程序中使用谷歌翻译

r - 如何正确使用K近邻?

python - 在 Python 中计算数组并​​赋值

python - 让 shogun ML 库与 python 一起工作

android - 是否可以在 Android 中运行 python libsvm?

nlp - Google Colab 上传词嵌入

python - Tensorflow 卷积网络错误 : Invalid argument: logits and labels must be same size: logits_size=[512, 4] labels_size=[128,4]

machine-learning - 如果不涉及 "unsupervised learning",算法是否可以归类为 "learning"?

python - scikit 的 MLPClassifier(和其他分类器)的训练分数低