一、为什么需要统计假设检验衡量学习器性能
看起来P-R曲线和ROC曲线可以解决学习器的性能评估问题,然而机器学习中性能比较这件事情比想象中复杂得多。原因如下:
(1)我们想比价的是泛化性能,然而通过实验评估方法我们得到的是测试集上的性能
(2)测试集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试集会得到不同的结果,即便用相同大小的测试集,若包含的测试样例不同,测试结果也会有所不同。
(3)机器学习算法本身的随机性,即便用相同的参数在相同的测试集上多次运行同一个模型,得到的模型结果也会不同。
统计假设检验为我们进行学习器性能的比较提供了重要依据。基于假设检验结果我们可推断出,若在测试集上观察到学习器A比学习器B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
二、对泛化错误率进行假设检验的思想
泛化错误率为的学习样本在一个样本上犯错的概率是
;测试错误率
以为着在m个测试样本中恰有
个样本被误分类。举个例子,我们可以用二项检验对“
”这样的假设进行检验。则在
的置信度内能观测到的最大错误率如下式所示:
如果测试错误率小于临界值
,则在
的显著性水平下,假设“
”不能被拒绝。
三、多个测试错误率的统计检验
很多时候我们并非仅做一次留出法估计,通过多次重复留出或者交叉验证法进行多次训练/测试时,我们会得到多个测试错误率。
1、单个学习器的泛化误差检验(t检验)
假定我们得到了k个测试错误率,则可以算出测试误差率的均值
和方差
。考虑到这k个测试错误率可以看作泛化错误率
的独立采样,则检验统计量
服从自由度为的
分布。
2、两个学习器(交叉验证t检验)
对两个学习器A和B,若我们使用k折交叉验证法得到的测试错误率分别为,
,基本思想是如果两个学习器性能相同,则它们使用相同的训练/测试集得到的测试错误率应该相同,即
。从而我们可以用成对t检验。
先对每对测试错误率结果求差,,然后得到差值
,计算出这些差值的均值
和方差
,在显著性水平
下,则检验统计量
3、McNemar检验
对于二分类问题,使用留出法不仅可以估计出学习器A和B的测试错误率,还可获得两学习器分类结果的差别,得到如下列联表
算法B | 算法A | |
正确 | 错误 | |
正确 | ![]() | ![]() |
错误 | ![]() | ![]() |
假设两学习器性能相同,则,即变量
应当服从正态分布。构造检验统计量
服从自由度为1的
分布。
4、Friedman检验和Nemenyi检验
参照西瓜书。