将 2 个分类器与无限训练数据进行比较

机器算法验证 机器学习 分类 数据集 无监督学习
2022-03-29 09:53:47

我想比较 2 个文本分类器 C1 和 C2,它们可以使用“无限”嘈杂的训练数据集进行训练,这意味着您可以使用尽可能多的数据进行训练,这些数据非常嘈杂。我正在考虑以下两个选项。哪一个会更好?

1)设置一个数据大小区间0-z,z是一个非常大的数字。确定 C1 获得最大准确度的数据集大小 x(例如使用学习曲线)。然后用这样的数据集大小 x 训练 C2。

2)确定C1停止学习的数据集大小y(例如学习曲线的非常小的斜率)。然后用这样的数据集大小 y 训练 C2。

请注意,我不是在询问比较分类器的方法,而是在询问如何确定应该比较 2 个分类器的训练数据集大小。

编辑: 下面是一个分类器的学习曲线。X 轴是训练数据集大小,Y 轴是准确率。为了比较两个分类器,我应该选择找到最高准确度的大小(红色),还是准确度保持(或多或少)稳定的大小(绿色)?

在此处输入图像描述

Edit2:@cbeleites @Dikran Marsupial 很抱歉缺少信息:

  • 我的问题有 3 个课程。
  • 上述学习曲线是通过增加训练数据集大小生成的,从 1,000 个示例/类(总共 3,000 个)到 140,000 个示例/类(总共 420,000 个);对于每个增加步骤,将添加 1,000 个新示例/类(总共 3,000 个),并且每次迭代都使用相同的测试数据集测试训练模型,该测试数据集由 350 个示例/类(总共 1,050 个示例)组成
  • 训练数据集样本自动标注,测试样本手动标注
2个回答

我是否正确理解您想要衡量 C1 是比 C2 更快/更慢的学习者?

有了无限的训练数据,我会明确地构建(测量)学习曲线。这使您可以讨论您提出的两个问题。

正如 Dikran 已经暗示的那样,学习曲线确实具有方差和偏差成分:在较小数据上的训练给出了系统性较差的模型,但在使用较小数据训练的不同模型之间也存在较大的方差。ntrain我还会在讨论中讨论哪个分类器更好。

确保您使用足够大的测试样本量进行测试:计数比例(例如分类器准确性)会受到高方差的影响,这可能会弄乱您的结论。由于您拥有无限的数据源,因此您处于非常舒适的境地,实际上可以测量学习曲线,而不会对其产生太多额外的测试错误。

我刚收到一篇论文,总结了关于分类模型的样本量规划的一些想法和发现。DOI 还没有起作用,但无论如何这里是 arXiv 接受的手稿

当然,计算时间现在是您的考虑因素。对此的一些想法

  • 您愿意花多少计算机时间取决于您需要比较的内容。

  • 如果只是为了找到一个实际可行的设置,我也会务实地做出决定。

  • 如果这是一个科学问题,我会引用我的老主管“计算机时间不是科学论证”。这意味着通过妥协您可以得出的结论来节省几天甚至几周的服务器时间并不是一个好主意*。
    更重要的是,因为有更好的计算并不一定需要更多的时间:无论是在训练样本大小的精细网格还是粗略网格上进行计算,或者是否您可以通过 1000 次迭代或仅通过 10 次迭代来测量方差。这意味着您可以按照允许非常快速地对结果进行“预览”的顺序进行计算,然后您可以绘制结果,最后拉入细粒度的数字。

(*) 我可能会补充一点,我来自一个实验领域,在那里您很容易花费数月或数年的时间来收集样本,并进行数周或数月的测量,而这些测量与在服务器上运行的模拟方式不同,也不是。


关于引导/交叉验证的更新

当然可以使用(迭代/重复)交叉验证或自举测试来测量学习曲线。如果您处于小样本量的情况下,使用重采样方案而不是适当的独立测试集是明智的,即您没有足够的独立样本来训练一个好的分类器并正确测量其性能。根据问题,这里不是这种情况。

数据驱动的模型优化

更一般的一点:从学习曲线中选择一个“工作点”(即此处的训练样本大小)是一个数据驱动的决策。这意味着您需要使用另一个独立的测试集对“最终”模型(使用该样本大小进行训练)进行另一次独立验证。但是,如果您用于测量学习曲线的测试数据是独立的并且具有巨大(非常大)的样本量,那么您过度拟合该测试集的风险很小。即,如果您发现最终测试数据的性能下降,则表明测试样本量太小而无法确定学习曲线或数据分析设置存在问题(数据不独立,训练数据泄漏到测试数据中)。


更新 2:有限的测试样本量
是一个真正的问题。比较许多分类器(每个ntrain您评估最终会导致一个分类器!)从统计学的角度来看,这是一个多重测试问题。这意味着,通过相同的测试集判断“撇去”测试的方差不确定性。这会导致过拟合。
(这只是表达 Dikran 评论的摘樱桃的危险的另一种方式)

如果您希望能够说明最终选择的模型的准确性,您确实需要为最终评估保留一个独立的测试集。
虽然很难过拟合包含数百万个实例的测试集,但过拟合到每个类 350 个样本要容易得多。

因此,我在上面链接的论文可能比我最初想象的更让您感兴趣:它还展示了如何计算您需要多少测试样本来显示,例如一个分类器(具有固定超参数)相对于另一个分类器的优越性。由于您可以使用相同的测试集测试所有模型,因此您可能很幸运,通过在此处进行配对测试,您可以在一定程度上减少所需的测试样本量。对于 2 个分类器的配对比较,McNemar 测试将是一个关键字。

如果您有无限的训练数据,那么最佳训练集大小取决于计算考虑,而不是统计考虑。从统计的角度来看,有许多基于通用近似的分类器,因此如果您在无限数据集上进行训练,您将得到一个接近贝叶斯错误并且无法做得更好的分类器。

如果分类器执行得更差,训练集的大小会增加,那将是一个相当令人担忧的迹象。如果你对训练数据的多个随机样本进行平均,它仍然会这样做,我会怀疑实现有问题。