三、性能度量
在预测任务中,给定样例集 D={(x1,y1),(x2,y2),...(xm,ym)},其中yi是xi的真实标记。要评估学习器f的性能,就是要把学习器预测结果f(x)与真实标记y进行比较。
回归任务常用的性能度量是均方误差。(缺公式,大意是每个样例的预测结果减去真实标记的平方和的平均值)
更一般的均方误差描述:(缺公式,,大意是每个样例的预测结果减去真实标记的平方和 乘以 概率 的积分。
1.错误率与精度
分类任务中最常用的两种性能度量。适用于二分类、多分类。
错误率是分类错误的样本数占样本总数的比例。
精度则是分类正确的样本数占样本总数的比例。
考虑到每个样本的出现概率,可推广为积分表示(类似均方误差的一般表示)。
2.查准率、查全率与F1
混淆矩阵:TP(真正例):实际为正例,预测为正例;FP(假正例):实际为反例,预测为正例。
FN(假反例):实际为正例,预测为反例;TN(真反例):实际为反例,预测为反例。
注意:真假表示预测是否正确。正例、反例都是看预测结果。
查准率P(准确率):真正例数 和 预测正例数 的 比例
查全率R(召回率):真正例数 和 实际正例数 的 比例
P-R曲线(如何做出来的??)。
若一个学习器的P-R曲线被另一个学习器的P-R曲线包住,则可断言后者性能优于前者。也可比较曲线下面积。
平衡点BEP 是P=R时的取值。
F1度量:2*P*R/(P+R)
Fβ度量:F1的度量的一般形式。(1+β)² *P*R /(β²*P+R)可表达对P、R不同偏好。
若有多组混淆矩阵,可以先求出多组P、R,然后再取均值,得到2个宏查准率,宏查全率。基于宏查准率、宏查全率求出宏F1.
若先求混淆矩阵的均值,再求P、R、F1,称为微查准率,微查全率,微F1.
3.ROC与AUC
ROC曲线的纵轴是真正例率(TPR,预测对正例比例),横轴是假正例率(FPR,预测错的反例比例)。
一般判断两个学习器的优劣,是通过ROC曲线下的面积,即AUC。
损失为ROC曲线之上的面积。
4.代价敏感错误率与代价曲线
四、比较检验二分类代价矩阵:costij表示将第i类样本预测为第j类样本的代价。一般说来,costii=0;若将第0类判别为第1类所造成的损失更大,则cost01> cost10;
代价曲线:??
期望总体代价:缺图??
规范化:是将不同变化范围的值映射到相同的固定范围中。常见的是[0,1],此时亦称归一化。
通过实验评估方法我们获得的是测试集上的性能,但我们希望比较的是泛化性能,两者并不相同。
测试集上的性能与测试集选择有很大关系。
很多学习算法本身有一定的随机性,同一测试集多次运行,其结果也不同。
基于统计假设检验结果我们可以推断出,若在测试集上学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
本节默认以错误率为性能度量。
1.假设检验
可根据测试错误率推出泛化错误率的分布。两者符合二项分布。我们可使用二项检验来对假设“泛化错误率 小于等于 某值” 进行检验。在α的显著度下可认为学习器的泛化错误率大于某值。
若我们通过多次重复留出法或交叉验证法等进行多次训练/测试,会得到多个测试错误率,此时可使用t检验。
上面介绍的两种方法都是对单个学习器泛化性能的假设进行检验。
2.交叉验证t检验
对学习器A和B,若我们使用k折交叉验证法得到两组测试错误率,则可使用k折交叉验证“成对t检验”来进行比较检验。 具体来说,对k折交叉验证产生的k对测试错误率:先对每对结果求差,若两个学习器性能相同,则差值均值应为零。因此,可根据差值来对“学习器A与B性能相同”这个假设做t检验,计算出均值、方差,在显著度α下,若变量2.31小于临界值,则假设不能被拒绝,即两个学习器性能没有显著差异。否则可认为两者有显著差别,平均错误率小的学习器性能较优。
要进行有效的假设检验,一个重要的前提就是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉验证等试验估计方法时,不同轮次的训练集会有一定重叠,会导致测试错误率并不独立,导致过高估计假设成立的概率。此时,可采用“5*2交叉验证”法。
3.McNemar检验
对二分类问题,使用留出法可以获得两个学习器一个正确另一个错误的样本数(e01 、e10)。假设两个学习器性能相同,则有e01 = e10,那么变量|e01 -e10|服从正态分布。McNemar检验考虑变量2.33服从自由度为1的x2分布,即标准正态分布变量的平方(卡方分布)。
4.Friedman检验 与 Nemenyi 后续检验
交叉验证t检验和McNemar检验都是在一个数据集上比较两个算法的性能。而在很多时候,我们会在一组数据集上对多个算法进行比较,当有多个算法参与比较时,一个做法是两两比较;另一种做法更为直接,即使用基于算法排序的Friedman检验。
原始Friedman检验过于保守,现在通常使用变量2.35。服从F分布。
若“所有算法的性能相同”这个假设被拒绝,则说明算法性能显著不同。则需进行“后续检验”来进一步区分各算法。常用的有Nemenyi后续检验。
5.偏差与方差
偏差-方差分解 是解释学习算法泛化性能的一种重要工具。
泛化误差可分解为偏差、方差与噪声之和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动导致的学习性能的变化,即刻画了数据扰动所造成的影响。噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
一般来说,偏差和方差是有冲突的,称为偏差-方差窘境。