插入符号::confusionMatrix 中 McNemar 测试的重要性

机器算法验证 r 分类 mcnemar 测试
2022-03-28 08:40:26

有许多指标可以评估预测模型的性能。其中许多对我来说似乎相对简单(例如准确性、Kappa、AUC-ROC 等),但我不确定 McNemar 测试。 有人可以帮助我理解 McNemar 检验在预测模型列联表上的解释吗? 这是应用并从 R 函数返回的 P 值caret::confusionMatrix我读到的关于 McNemar 的所有内容都谈到了“治疗”前后的比较。在这种情况下,我将比较预测类与已知测试类。我是否正确地将显着的 McNemar 测试解释为测试类和预测类之间的类比例不同?

第二个但更普遍的后续问题是,这个因素应该如何解释预测模型的性能?例如,如下面的第一个示例所示,在某些情况下,75% 的准确率可能被认为很好,但预测类别的比例可能不同(假设我对重要的 McNemar 测试的理解是准确的)。如何处理这种情况?

最后,如果课程更多或涉及更多,这种解释会改变吗?例如 3x3 或更大的列联矩阵。

提供一些从此处反映的可重现示例

#significant p-value
mat <- matrix(c(661,36,246,207), nrow=2)

caret::confusionMatrix(as.table(mat))
> caret::confusionMatrix(as.table(mat))
Confusion Matrix and Statistics

    A   B
A 661 246
B  36 207

               Accuracy : 0.7548          
                 95% CI : (0.7289, 0.7794)
    No Information Rate : 0.6061          
    P-Value [Acc > NIR] : < 2.2e-16       

                  Kappa : 0.4411          
 Mcnemar's Test P-Value : < 2.2e-16    
... truncated

# non-significant p-value
mat <- matrix(c(663,46,34,407), nrow=2)

caret::confusionMatrix(as.table(mat))
Confusion Matrix and Statistics

    A   B
A 663  34
B  46 407

               Accuracy : 0.9304          
                 95% CI : (0.9142, 0.9445)
    No Information Rate : 0.6165          
    P-Value [Acc > NIR] : <2e-16          

                  Kappa : 0.8536          
 Mcnemar's Test P-Value : 0.2188     
... truncated
3个回答

解释分类器的 McNemar 检验

McNemar 的检验捕获了两种模型所犯的错误。具体来说,混淆矩阵中的 No/Yes 和 Yes/No(在您的情况下为 A/B 和 B/A)单元格。该测试检查这两个单元格中的计数是否存在显着差异。就这些。

如果这些单元格的计数相似,则表明两个模型的错误比例几乎相同,只是在测试集的不同实例上。在这种情况下,检验结果将不显着,并且不会拒绝原假设。

无法拒绝空假设:分类器在测试集上的错误比例相似。

拒绝空假设:分类器在测试集上的错误比例不同。

更多信息可以在这里找到:

https://machinelearningmastery.com/mcnemars-test-for-machine-learning/

McNemar 的检验是专门的成对比例检验。Pre-post 是一种定义配对的结构,但两个独立的二分变量的横截面测量也是数据中允许的配对结构,病例对照数据的准纵向性质是适合该测试的另一种配对结构。

原假设或多或少是一个变量的比例在另一个变量的两个值之间相等。一个显着的检验结果意味着你拒绝了这个零假设,并确定你的两个变量是相关的(即知道一个关于一个的东西,给你另一个关于另一个的信息),因此一个变量的比例会根据值而变化的另一个变量。

直率的准确性不考虑由于偶然性而导致的准确性,这取决于每组中比例的大小。

McNemar 的测试只能应用于 2x2 表,因此不能应用于 3x3。但是,有 Cochran 的Q检验,它类似于 McNemar 检验对二元数据的重复测量场景的推广——也就是说,它类似于二元测量的重复测量 ANOVA——(对于 2x2 的 Cochran Q给出的结果与对于 McNemar 的测试......警告:注意连续性校正)。

这是一个有趣的问题,根据上下文有不同的答案。我同意你之前回答的内容,所以在这里我将更多地关注上下文。

在互联网上寻找 McNemar 的测试解释时,您感到困惑是正常的。主要原因是该测试(遗传学)的历史渊源,以及它在医学和社会科学领域的普遍使用,使其在机器学习的背景下难以解释。在这里,我解释一下我到目前为止所学到的东西。

首先,重要的是要知道在机器学习的上下文中有两种不同的场景。第一个是您正在评估模型与参考数据(测试数据或可能的训练数据)的质量。第二种情况是当您比较两个分类模型(算法)时。

在第一种情况下,您通常会寻找检验的 p 值大于 0.05。也就是说,不要拒绝假设两个类别标签的错误分类案例比例同质的原假设。在上面的混淆矩阵中,这些比例是根据单元格 AB 和 BA 计算的。此处的重要值表明您的算法对一个标签的分类错误多于另一个标签。

在第二种情况下,您可能会寻找相反的情况。也就是说,检验的 p 值小于 0.05。这将表明分类器具有不同的错误率。这是证据,您可以将其与其他指标(例如单个模型的准确性)结合使用,以得出一个比另一个更好的结论。

关于第二个问题,您可能已经看到 caret 包提供的准确性与 McNemar 的测试无关。这是因为准确度测量来自混淆矩阵(单元 AA 和 BB)的其他信息。最后,关于第三个问题,我同意 Alexis 的建议。

总而言之:McNemar 在理论上所说的边际同质性是在第一种情况下,两个类别标签的错误分类率的同质性。在第二种情况下,它是指分类器错误率的同质性。

我希望这些想法能让你更好地理解插入符号提供的结果。