具有极小数据集的多类分类

数据挖掘 机器学习 神经网络 深度学习 多类分类 文本分类
2022-03-04 22:59:03

我正在处理包含 216 个标记段落的文本分类任务。标签分布如下:

{0:17、1:15、2:16、3:9、4:10、5:18、6:24、7:9、8:33、9:38、10:27}。

键代表类,值是样本数。

这是我的问题:
Q1。有什么方法可以训练分类器吗?
Q2。如果我们想要一个 11 类的文本分类器,我们需要多少个样本?

2个回答

是的,您可以采用不同的方法。您可以使用深度学习模型,但不应从头开始训练它们。你应该使用迁移学习。由于您的数据集很小,您应该使用已经训练过的深度学习模型。接下来,您应该将最后一层替换为具有与您的类相同数量的神经元的另一层。这个新添加的层的连接首先应该具有随机权重。最后,您将冻结除新添加的图层之外的所有权重。在这种情况下,您的模型将具有很好的学习数据的能力,并且不会过度拟合。您可能希望查看以下链接:

您还可以使用带有软边距的 SVM 来获得良好的泛化性。

关于样品的数量,不能提前说。而且,对于不同的任务,可能会有所不同。顺便说一句,查看您的数据的人很容易发现您的数据集很小。

@Media 给出了很好的答案。我只想在这里详细说明几点。

  1. 为了在文本上使用迁移学习,您可以使用一些令人惊叹的模型,例如RoBERTaBERT等,这些模型可以在huggingface 的转换器库中轻松获得。您可以按如下方式训练它们:

    • 只需使用预先训练的权重初始化模型并冻结它们的权重。
    • 根据您的类更改最后一个分类层,然后使用您的数据集训练分类层。(只需确保您使用正确的学习率来训练分类器。)
  2. 好吧,对于训练神经网络需要多少数据,并没有明确定义的规则。但作为一个好的经验法则,拥有至少 10 倍于类数的数据显然是一个好习惯。所以在你的情况下,每个类至少应该有 100 个数据点。