更高的测试精度和更低的训练精度

Higher Testing Accuracy and Lower Trainning Accuracy

我对 NLP 的过程相当陌生,我 运行 的情况是我的训练准确率约为 70%,但我的测试准确率为 80%。我有大约 2020 年的 6000 个条目用作训练数据,还有 2021 年第一季度的 300 个完整条目用作测试数据(由于 Q2、Q3、Q4 数据不可用)。每个完整的至少有2-3个段落。

我已经使用具有 10 个拆分和 3 个重复的 RepeatedStratifiedKFold 设置交叉验证,并使用具有 C=.1 和 kernel = linear 的 grideserachCV。设置停用词(我确实对其进行了一些自定义,例如包括前 100 个常用名称、月份,以及一些在我的设置中意义不大的更常用词),将所有内容小写,并使用 Snowball 词干提取器。 测试集的结果混淆矩阵如出现

[[165  34]
[ 27  96]]

F1 分数为 81% 但是在检查我的训练集时 它的均值和标准差为 0.720 (+/-0.036)

我想弄清楚为什么训练集和测试集之间存在 9% 的差异,测试集获得更高的结果,同时不确定我还能做些什么来进一步提高准确性。

我的目标是预测第 2 季度、第 3 季度、第 4 季度的不可用数据,并在可用时最终比较这 3 个数据

我不太熟悉您使用的模型,这里可能漏掉了一些东西,但您的测试集可能无法代表数据。或许2021年的数据有什么东西让它更容易预测。

你可能想尝试像 sklearn 的 train_test_split()shuffle=True 来确保测试集是数据的代表性随机子集,看看你是否通过这种方式在集合之间获得更平衡的性能.

根据您正在执行的具体任务,300 个条目对于 NLP 中的测试集来说确实不算多,因此单独的小测试集大小可能会扭曲测试结果。

在不知道您通常要做什么的情况下,很难就如何总体上改进预测提出建议。我认为这与对词干标记进行某种两次 class class化有关?

你能clarify/give一个条目示例和所需的预测吗?