周志华机器学习(西瓜书)读书笔记之模型评估与选择(三)
2.4 比较检验
- 问题:
- 希望比较的是泛化技能,实验评估方法得到的是测试集上的性能’
- 测试集上的性能与测试集本身的选择有很大关系。大小、包含测试样例的不同,都会影响测试结果。
- 很多学习算法有一定随机性
- 采用统计假设检验
2.4.1 假设检验
- 学习器泛化错误率为
,测试错误率为
,在包含m个样本的测试集上,泛化错误率为
的学习器被测得测试错误率为
的概率为:
,符合二项分布,P在
=
时最大,二者距离变大时P减小。置信度为
单侧置信上限:
- 很多时候我们通过多次重复留出法或是交叉验证法进行多次训练\测试,得到多个测试错误率,可采用t检验,这与浙大版教材中的介绍完全一致,不赘述。
2.4.2 交叉验证 t 检验
-
- 假设检验的具体步骤与浙大版教材中的介绍完全一致,不赘述。
- 值得一提的是,检验有效的前提是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率.为缓解这一问题,可采用"5 x 2 交叉验证"法
-
2.4.3 McNemar检验
- 应用:二分类问题
-
- 待检验的假设:两学习器性能相同,则有
,从而
服从正态分布。McNemar考虑检验
,服从自由度为1的卡方分布。其中-1是由于
通常很小,需要考虑连续性校正(详见https://www.zhihu.com/question/47835037/answer/209486418)
2.4.4 Friedman 检验 与 Nemenyi 后续检验
- 当有多个算法参与比较时,一种做法是在每个数据集上分别列出两两比较的结果,而在两两比较时可使用前述方法;另一种方法更为直接,即使用基于算法排序的Friedman 检验.
- 步骤:
- 给测试性能赋值:假定我们用Dl' D2 、D3 和D4 四个数据集对算法A 、B 、C 进行比较.首先,使用留出法或交叉验证法得到每个算法在每个数据集仁的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1 , 2, ...,若算法的测试性能相同,则平分序值.
- 使用Friedman 检验来判断这些算法是否性能都相同.若相同,则它们的平均序值应当相同. 假定我们在N个数据集上比较k个算法,令ri表示第 i个算法的平均序值,为简化讨论,暂不考虑平分序值的情况,则ri服从正态分布,其均值和方差分别为(k+ 1)/2 和(k2 - 1)/12.统计量
在k和N都较大时,服从自由度为k - 1的卡方分布。
- “ 原始Friedman检验“ 过于保守,现在通常使用变量
服从自由度为k-1 和(k - l)(N - 1) 的F 分布。或许保守就在于没有考虑到数据集数目的影响吧。
- 上述检验比较可以直观地用Friedman 检验图显示。例如根据表2.5 的序值结果可绘制出图2.8 ,图中纵轴显示各个算法,横轴是平均序值.对每个算法用一个圆点显示其平均序值,以圆点为中心的横线段表示临界值域的大小.然后就可从图中观察,若两个算法的横线段有交叠,则说明这两个算法没有显著差别,否则即说明有显著差别.
2.5 偏差与方差
- 偏差-方差分解过程与浙大版概率论与数理统计教材方差和回归分析一章基本一致,此处只给结果:
- 泛化误差可分解为偏差、方差与噪声之和:
- 偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;
- 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;
- 噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度.
- 一般来说,偏差与方差是有冲突的,这称为偏差一方差窘境(bias-variance dilemma).