交叉验证或引导来评估分类性能?

机器算法验证 机器学习 分类 预测模型 交叉验证 引导程序
2022-01-16 04:42:11

评估分类器在特定数据集上的性能并将其与其他分类器进行比较的最合适的抽样方法是什么?交叉验证似乎是标准做法,但我读过 .632 bootstrap 等方法是更好的选择。

作为后续行动:性能指标的选择是否会影响答案(如果我使用 AUC 而不是准确性)?

我的最终目标是能够有信心地说,对于特定数据集,一种机器学习方法优于另一种机器学习方法。

3个回答

应用交叉验证和自举方法的通常方式的一个重要区别是,大多数人只应用一次交叉验证(即每个案例只测试一次),而自举验证需要大量执行重复/迭代。在这种情况下,由于模型不稳定性,交叉验证会受到更高的方差。然而,这可以通过使用例如迭代/重复的折交叉验证来避免。如果这样做了,至少对于我一直在使用的光谱数据集,两种重采样方案的总误差在实践中似乎是相同的。k

不鼓励留一法交叉验证,因为不可能减少模型不稳定性类型的方差,并且存在一些分类器和问题,它表现出巨大的悲观偏差。

只要混入的重采样误差不会过于乐观,.632 bootstrap 就可以完成合理的工作。(例如,对于我使用的数据,具有很多变量的非常宽的矩阵,它不能很好地工作,因为模型容易出现严重的过度拟合)。这也意味着我会避免使用 .632 引导程序来比较不同复杂度的模型。使用 .632+ 引导程序我没有经验:如果发生过度拟合并且被正确检测到,它将等于原始的引导程序外估计,因此我坚持对我的数据使用普通的 oob 或迭代/重复交叉验证。

文学:

  • Kohavi, R.: A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection Artificial Intelligence Proceedings 14th International Joint Conference, 20 -- 25. August 1995, Montréal, Québec, Canada, 1995, 1137 - 1145.
    (经典)

Dougherty 和 Braga-Neto 有许多关于该主题的出版物,例如

指标的选择:

我的最终目标是能够有信心地说,对于特定数据集,一种机器学习方法优于另一种机器学习方法。

  • 使用配对测试来评估它。为了比较比例,请查看 McNemar 的测试。

  • 这个问题的答案将受到度量选择的影响。由于回归类型的误差测量没有用阈值切割决策的“硬化”步骤,它们通常比分类对应的方差更小。准确度等指标基本上是比例,需要大量的测试用例来确定一个分类器相对于另一个分类器的优越性。

Fleiss:“比率和比例的统计方法”给出了非配对比例比较的示例(和表格)。为了让您对“巨大样本量”的含义有一个印象,请查看我对其他问题的回答中的图像。像 McNemar 这样的配对测试需要更少的测试用例,但 IIRC 仍然是非配对测试所需样本量的一半(?)。

  • 要表征分类器的性能(硬化),通常需要至少两个值的工作曲线,例如 ROC(敏感性与特异性)等。
    我很少使用整体准确度或 AUC,因为我的应用程序通常有限制,例如灵敏度比特异性更重要,或者应该满足这些测量的某些界限。如果您选择“单数”求和特性,请确保您正在查看的模型的工作点实际上在合理范围内。

  • 对于根据参考标签总结几个类的性能的准确性和其他性能度量,请确保您考虑到您将在应用程序中遇到的类的相对频率 - 这不一定与您的训练或测试数据。

  • 教务长,F.等人。: 在 1998 年第十五届机器学习国际会议论文集中比较归纳算法的准确性估计案例


编辑:比较多个分类器

我一直在考虑这个问题,但还没有找到解决方案(我也没有遇到任何有解决方案的人)。

这是我到目前为止所得到的:

目前,我决定“优化是万恶之源”,并采取了一种截然不同的方法:
我尽可能多地根据手头问题的专家知识来决定。这实际上可以缩小范围,这样我就可以经常避免模型比较。当我必须比较模型时,我会尝试非常开放和清晰地提醒人们性能估计的不确定性,特别是多重模型比较是 AFAIK 仍然是一个未解决的问题。


编辑2:配对测试

模型中,你可以在两个不同的模型之间进行比较(这是一种大规模的多重比较情况),我不知道如何正确地做到这一点。然而,配对n12(n2n)测试的意义只是指所有模型都使用完全相同的测试用例进行测试的事实,一方面您可以将案例分为“简单”和“困难”案例,所有模型都得出正确的(或错误)预测。它们无助于区分模型。另一方面,有些“有趣”的案例被一些人正确预测,但其他模型却没有。只有这些“有趣”的案例才需要考虑判断优劣,“容易”和“困难”的案例都无济于事。(这就是我理解 McNemar 测试背后的想法的方式)。

模型之间的大规模多重比较,我想一个问题是,除非您非常幸运,否则您比较的模型越多,您能够从进一步考虑中排除的案例就越少:即使所有模型在它们的模型正确(或总是错误)预测的可能性越来越小。nn

您需要修改 bootstrap (.632, .632+) 只是因为原始研究使用了不连续的不正确评分规则(正确分类的比例)。对于其他准确度分数,普通的乐观自举往往可以正常工作。有关更多信息,请参阅http://biostat.mc.vanderbilt.edu/RmS#Studies_of_Methods_Used_in_the_T

不正确的评分规则会误导您选择特征及其权重。换句话说,所有可能出错的事情都会出错。

来自“应用预测建模”,Khun。约翰逊第 78 页

“没有一种重采样方法比另一种更好;应该在考虑多个因素的情况下做出选择。如果样本量小,我们建议使用重复的 10 倍交叉验证,原因有几个;偏差和方差属性都很好,并且给定样本量大,计算成本不大。如果目标是在模型之间进行选择,而不是获得最佳性能指标,则可以使用其中一种自举程序,因为它们具有非常低的方差。对于大样本量,重采样方法之间的差异变得不那么明显,并且计算效率提高了性能。” 页。78

此外,考虑到两个相似结果的选择,通常首选更可解释的模型。例如(来自同一文本),使用 10 倍 CV,SVM 分类器的准确率估计为 75%,重采样结果在 66% 到 82% 之间。相同的参数用于逻辑回归分类器,准确率为 74.9%,重采样范围相同。可能首选更简单的逻辑回归模型,因为它更容易解释结果。