【问题标题】:Text classification - is it overfitting? How can I prove?文本分类 - 是否过拟合?我怎么证明?
【发布时间】:2020-11-08 11:32:33
【问题描述】:

我有一个多分类问题,我的数据涉及字母序列。它是一个带标签的数据(使用标签编码器将字符串标签编码为数字)。同一类可能有部分字符串。可能字符串匹配,但有些可能只是略有不同。

我正在使用 k-mer 和 countvectoriser 准备我的数据(适合训练数据以及转换后的训练和测试数据)。结合 kmer 大小和 ngram 大小,维度(特征大小)在 8000+ 到 35000+ 之间变化。我认为模型训练时没有测试信息泄露。

我在训练数据上拟合了不同的算法并进行了测试以查看概括性。测试分数(准确率、f1 分数、准确率和召回率)非常高(超过 99%)。即使这是测试,您是否认为模型可能由于高维(维数诅咒)而过度拟合?我知道如果训练分数很高并且泛化能力很差,那么它会过度拟合,但这里的测试分数非常高。这不是模型,因为不同的算法给出了相似的结果,它肯定是关于数据的。

如果我应用 PCA 来获得 10 个涵盖 99% 方差的组件,那么测试的测试分数也很高。如果我使用 selectkfeatures 仅选择大约 10 个最佳特征,那么分数就会下降。

真的在寻找您对我如何证明这不是过度拟合的想法吗?我是否应该始终使用如此高的尺寸来减小特征尺寸(通过选择或 pca)?谢谢。

问候, 维杰

【问题讨论】:

  • 请注意,所有课程的数据都非常平衡,我为训练和测试做了 70 - 30 次拆分。
  • 您想向谁“证明”这一点?另外,数据集是否比特征数量大得多(例如 > x100 倍)?
  • 嗨,Pac0,对我来说,我的分数是过度拟合的情况,我真的想得到关于它的意见。总数据样本约为 80k,但根据 kmer ngram 配置,特征大小在 8k 到 35k 之间变化。

标签: python machine-learning artificial-intelligence text-classification multilabel-classification


【解决方案1】:

如果你的测试分数很高,那么以下是可能性

  1. 测试和训练数据重叠:如果您有重复的记录,并且将一个落入训练中而另一个落入测试中,则可能会发生这种情况

  2. 数据泄漏:如果类标签信息在特征中以某种方式编码。这很容易验证:即使使用基本模型,训练分数也几乎 100%。查看此资源以了解什么是 data leak

  3. 你确实成功地建立了一个好的模型

我建议先检查以上两种可能性,然后尝试 K-fold 交叉验证。

【讨论】:

  • 嗨 Muhhiga,1) 没有重叠,但所有类的许多测试记录确实与训练数据中存在的内容完全匹配。你说这种情况可以称为重叠吗? 2) 训练和测试都接近 100%,不确定如何在特征中编码(标签和数据完全分开),以及如何找到该特征,因为特征尺寸太大。可能是前 10 大特征的最高频率?
  • 你不能在测试和训练中拥有相同的记录,那么拥有测试集就没有意义了。应隐藏测试数据以进行训练,因此如果您说完全匹配的记录在测试和训练中都是错误的(第 1 点)。
  • 3) 来自不同算法的模型并没有什么特别之处,我相信是数据体现了这些分数。但不要认为有任何泄漏。训练和测试数据上的 kfold 分层分割和交叉验证分数也超过 99%,并非所有测试样本都与训练样本匹配,但许多相似。你认为我应该删除它们吗?
  • 这个答案很有帮助。这个“模型太大”是一个容易掉入的陷阱(糟糕的“测试”数据会给模型带来错误的信心),并且您清楚地解释了可能发生的事情。谢谢。
猜你喜欢
  • 2018-08-22
  • 2014-02-08
  • 2020-02-01
  • 2020-10-05
  • 1970-01-01
  • 2014-01-07
  • 2021-12-07
  • 1970-01-01
相关资源
最近更新 更多