在不同的训练和测试数据集对上比较两个分类器

机器算法验证 机器学习 假设检验 统计学意义
2022-03-15 17:59:02

在我的问题中,我有 2 个分类器,C1 和 C2。C1 和 C2 都是朴素贝叶斯分类器,但它们之间的区别在于它们使用不同的特征选择方法。两个分类器都在 10,000 个实例(噪声标记)的数据集上进行训练,并在 1,000 个实例(手动标记)的不同数据集上进行测试,两个数据集都是平衡的。

现在,我绘制了两个分类器在越来越多的实例上的准确度,通过目测发现 C2 通常比 C1 具有更好的准确度和召回率。我想知道这种差异是否具有统计学意义,以评估 C2 是否优于 C1。

以前,我使用相同的数据集进行 k-cross 验证,获得了两个分类器准确度的平均值和变化,并计算了特定数量特征的学生 t 检验。但是,现在我有 2 个不同的数据集用于训练和测试。在这种情况下我该如何进行测试?我应该得到所有不同特征量的准确度平均值吗?

提前致谢...

编辑

关于领域,我正在处理情感分析 (SA),将文本数据分为 3 类:正面、负面和中性。关于错误成本,在这个阶段,我假设所有错误成本都是相同的(尽管我知道将负面分类为正面的成本会高于将负面分类为中性的成本)。关于处理 SA 时的“实际显着差异”,我假设 1% 的改进是显着的,因为以前的论文通常会呈现这种改进。我想在对自动标记的数据进行训练并在手动标记的数据上进行测试时测试 C1 和 C2 的准确性。

1个回答

首先,在测试之前,您需要定义几件事:所有分类错误都具有相同的“成本”吗?然后您选择了一个测量参数。我通常为二进制数据选择MCC ,为 k 类别分类选择Cohen's kappa 。接下来,定义在您的领域中显着的最小差异是非常重要的?当我说“显着”时,我的意思不是统计显着(即 p<1e-9),而是实际上显着。大多数情况下,分类准确度提高 0.01% 没有任何意义,如果它具有良好的 p 值。

现在您可以开始比较这些方法了。你在测试什么?是预测器集、模型构建过程还是最终分类器。在前两种情况下,我会使用训练集数据生成许多引导模型,并在来自测试集数据的引导样本上对其进行测试。在最后一种情况下,我将使用最终模型从测试集数据中预测引导样本。如果您有一种可靠的方法来估计数据参数(预测器)中的噪声,您也可以将其添加到训练和测试数据中。最终结果将是测量值的两个直方图,每个分类器一个。您现在可以测试这些直方图的平均值、离散度等。

最后两个注意事项:(1)我不知道在处理分类器时如何考虑模型复杂性。因此,更好的表观性能可能是过度拟合的结果。(2) 拥有两个独立的数据集是一件好事,但正如我从您的问题中了解到的那样,您多次使用这两个数据集,这意味着测试集信息“泄漏”到您的模型中。确保您有另一个验证数据集,当您做出所有决定时,该数据集仅使用一次。

注释后的澄清

在您的笔记中,您说“以前的论文通常会提出这种 [即 1%] 的改进”。我不熟悉这个领域,但是人们在论文中发表了 1% 的改进这一事实并不意味着这种改进很重要 :-)

关于 t 检验,我认为这将是一个不错的选择,前提是数据呈正态分布或转换为正态分布,或者您有足够的数据样本,您很可能会这样做。