四、比较检验
有了学习器的性能度量结果,但还需要对结果进行比较,这里面涉及几个重要因素:
1、我们希望比较的是泛化性能,而通过实验评估方法我们获得的只是测试集上的性能,这两者的对比结果可能未必相同;
2、测试集上的性能与测试集本身的选择有很大的关系。
3、很多机器学习算大本身有一定的随机性,即使用相同的参数设置在同一个测试集上多次运行,其结果也会有所不同。
对此,可用假设检验进行验证,下面默认以错误率为性能度量;
泛化错误率为
的学习器在一个样本上犯错的概率是
;测试错误率
意味着在m个测试样本中恰有
*m个被误分类。假定测试样本是从总体分布中独立采样得到,那么泛化错误率为
的学习器将其中
个样本误分类,其余样本全部分类正确的概率是
给定测试错误率,解
可知,
在
是最大。
我们可以用“二项检验”来对
(即泛化错误率不大于
)这也的假设进行检验。则在1-
的概率内所能观测到的最大错误率如下:
此时若测试错误率
小于临界值
,则根据二项检验可得出结论:在
的显著性水平下,假设不能被拒绝,即能以1-
的置信度认为学习器的泛化错误率不大于
很多时候我们通过多次重复留出法或是交叉验证法等进行多次训练/测试,会得到多个测试错误率,此时可用“t检验”。假定得到k个测试错误率,则平均测试错误率和方差为:
考虑到这k个测试错误率可看作泛化错误率
的独立采样,则变量
服从自由度为k-1的t分布。
2、交叉验证t检验
对于两个学习器A和B,若使用K折交叉验证得到的测试错误率分别为
和
,其中
和
是在相同的第i折训练/测试集上得到的结果,可使用成对t检验来进行比较检验;
思想:若两个学习器性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同,即
。
具体操作;
对K折交叉验证产生的K对测试错误率:先对每对结果求差,若性能相同,得差值的均值为零,因此可根据差值来对学习器A和B性能相同这个假设做t检验,计算出差值的均值和方差,在显著度
下,若变量
小于临界值
,则不能拒绝原假设,即认为两个学习器的性能没有显著的差异。
欲进行有效的假设检验,一个重要的前提是测试错误率均为泛化错误率的独立采样,然后通常情况下由于样本量有限,在使用交叉验证等试验估计方法时,不同轮次的训练集会有一定程度的重叠,这使得测试错误率实际上并不独立,会导致高估假设成立的概率,为缓解这个问题,可采用“5*2交叉验证”。
5*2交叉验证:
(即第一次2折交叉验证的结果的平均值),而方差与前面的方差一样,采用全部数据,变量
服从自由度为5的t分布。
McNemar检验:
Friedman检验:在一组数据集上对多个算法进行比较:使用基于算法排序的检验
五、偏差与方差
即泛化误差可分解为偏差、方差和噪声之和;
偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;
方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;
噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差--方差分解说明:泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度共同决定的;