3.4 代价敏感错误率与代价曲线
为权衡不同类型错误所造成的不同损失,可为错误赋予"非均等代价"
- 以二分类任务为例,可根据任务的领域知识设定一个"代价矩阵"(cost matrix).如下表所示,其中,costij表示将第i类样本预测为第j类样本的代价。一般来说,costii=0;若将第0类判别为第一类所造成的损失更大,则cost01>cost10;损失程度相差越大,cost01与cost10值的差别越大。一般情况下,重要的是代价比值而非绝对值
二分类代价矩阵
真实类别 |
预测类别 |
第0类 |
第1类 |
第0类 |
0 |
cost01 |
第1类 |
cost10 |
0 |
- 之前的一些度量性能那个可看出,大都隐式地假设了均等代价,并没有考虑不同错误会造成不同地后果。在非均等代价下,不再是简单地最小化错误次数,而是希望最小化"总体代价"(total cost).
1. 代价敏感(cost-sensitive)错误率
- 将表中的第0类作为正类,第1类作为反类,令D+与D−分别代表样例集D的正例子集和反例子集,则"代价敏感"错误率为
E(f;D;cost)=m1(∑xi∈D+I(f(xi)=yi)×cost01+∑xi∈D−I(f(xi)=yi)×cost10)
- 类似的,可基于分布定义代价敏感错误率,给出其他一些性能度量的代价敏感版本
- 若令costij中的i、j取值不限于0、1,则可定义出多分类任务的代价敏感性能度量
2. 代价曲线(cost curve)
- 可以直接反映出学习器的期望总体代价
- 代价曲线图的横轴是取值为[0,1]的正例概率代价为:
P(+)cost=p×cost01+(1−p)×cost10p×cost01
其中p是样例为正例的概率;
纵轴是取值为[0,1]的归一化代价
costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10
其中FPR为假正例率,FNR=1-TPR是假反例率
- 代价曲线的绘制:
ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(FPR,TPR),则可计算出相应的FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价
四、比较检验
- 希望比较的是泛化性能,然而通过实验评估方法获得的是测试集上的性能,两者的对比结果可能未必相同
- 测试集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试集会得到不同的结果,即便使用相同大小的测试集,若包含的测试样例不同,测试结果也会有不同
- 很多机器学习算法本身有一定的随机性,即便使用相同的参数设置在同一个测试集上多次运行,其结果也会有不同
- 统计假设检验(hypothesis test)为进行学习器性能比较提供了重要依据。基于假设检验结果可推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
4.1 假设检验
假设检验中的"假设"是对学习器泛化错误率分布的某种判断或猜想,例如"ϵ=ϵ0".现实任务中并不知道学习器的泛化错误率,只能获知其测试错误率ϵ^。泛化错误率与测试错误率未必相同,但直观上,二者接近的可能性应比较大,相差很远的可能性比较小,因此,可根据测试错误率估推出泛化错误率的分布
-
泛化错误率为ϵ的学习器在一个样本上犯错的概率是ϵ;测试错误率ϵ^意味着在m个测试样本中恰有ϵ^×m个被误分类。假定测试样本是从样本总体分布中独立采样而得,那么泛化错误率为ϵ的学习器将其中m′个样本误分类、其余样本全部分类正确的概率是:Cmϵ^×mϵϵ^×m(1−ϵ)m−ϵ^×m,给定测试错误率,则解∂P(ϵ^;ϵ)/∂ϵ=0可知,P(ϵ^;ϵ)在ϵ=ϵ^时最大,∣ϵ−ϵ^∣增大时,P(ϵ^;ϵ)减小,这符合二项(binomial)分布.
-
可使用"二项检验"(binomial test)对"ϵ≤ϵ0"的假设进行检验,则在1−α的概率内所能观测到的最大错误率为:
ϵˉ=maxϵ s.t.∑i=ϵ0×m+1mCmiϵi(1−ϵ)m−i<α
这里1−α反映了结论的"置信度"。此时若测试错误率ϵ^小于临界值ϵˉ,则根据二项检验可得出结论:在α的显著度下,假设"ϵ≤ϵ0"不能被拒绝,即能以1−α的置信度认为,学习器的泛化错误率不大于ϵ0;否则该假设可被拒绝,即在α的显著度下可认为学习器的泛化错误大于ϵ0。
-
由于很多时候并非仅做一次留出法估计,而是通过多次重复留出法或是交叉验证法等多次训练/测试,这样会得到多个测试错误率,此时可使用"t检验"(t-test).假定得到了k格测试错误率,ϵ^1,ϵ^2,…,ϵ^k,则平均错误率μ和方差σ2为:
μ=k1∑i=1kϵ^i
σ2=k−11∑i=1k(ϵ^i−μ)2
考虑到这k个测试错误率可看作泛化错误率ϵ0的独立采样,则变量
τt=σk(μ−ϵ0)
服从自由度为k−1的t分布。
对假设"μ=ϵ0",计算出当测试错误率均值为ϵ0时,在1−α概率内能观测到的最大错误率,即临界值。这里考虑的是双边检验(two-tailed)假设,所以范围为[−∞,t−2α]和[t2α,∞].若平均错误率μ与ϵ之差∣μ−ϵ0∣位于临界值范围[t−2α,t2α]内,则不能拒绝假设"μ−ϵ0",则可认为泛化错误率为ϵ0,置信度为1−α;否则可拒绝该假设,即在该显著度下可认为泛化错误率与ϵ0有显著不同。
4.2 交叉验证t检验
- 对不同的学习器的性能进行比较
- 基本思想:若两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同
-
对于两个学习器A和B,若使用k折交叉验证法得到的测试错误率分别为ϵ1A,ϵ2A,…,ϵkA和ϵ1B,ϵ2B,…,ϵkB,其中ϵiA和ϵiB是在相同的第i折训练/测试集得到的结果,则可用k折交叉验证"成对t检验"(paired t-test)来进行比较检验。
-
具体来说,对于k折交叉验证产生的k对测试错误率:先对每对结果求差,Δi=ϵiA−ϵiB;若两个学习器性能相同,则差值均值应为零。因此,可根据差值Δ1,Δ2,…,Δk来对"学习器A与学习器B性能相同"这个假设做t检验,计算出差值的均值μ和方差σ2,在显著度α下,若变量τt=∣σkμ∣小于临界值t2α,k−1,则假设不能被拒绝,即认为两个学习器的性能没有显著差别;否则可认为两个学习器的性能有显著差别,且平均错误率较小的那个学习器性能较优。这里t2α,k−1是自由度为k−1的t分布上尾部累积分布为2α的临界值。
- 欲进行有效的假设检验,一个重要前提是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。为缓解这一问题,可采用"5×2交叉验证"法
- 5×2交叉验证是做5次2折交叉验证,在每次2折交叉验证之前随机将数据打乱,使得5次交叉验证中的数据划分不重复。对两个学习器A和学习器B,第i次2折交叉验证将产生两对测试错误率,对它们分别求差,得到第1折上的差值Δi1和第2折上的差值Δi2.为缓解测试错误率的非独立性,仅计算第1次2折交叉验证的两个结果的平均值μ=0.5(Δ11+Δ12),但对每次2折实验的结果都计算出其方差σi2=(Δi1−2Δi1+Δi2)2+(Δi2−2Δi1+Δi2)2.变量τt=0.2∑i=15σi2μ服从自由度为5的t分布,其双边检验的临界值t2α,5当α=0.05为2.5706,当α=0.1为2.0150
4.3 McNemar检验(卡方检验)
- 对于二分类问题,使用留出法不仅可估计出学习器A和B的测试错误率,还可获得两学习器分类结果的差别,即两者都正确、都错误、一个正确另一个错误的样本数,如“列联表”所示:
两学习器分类差别列联表
算法B |
算法A |
正确 |
错误 |
正确 |
e00 |
e01 |
错误 |
e10 |
e11 |
- 若做的假设是两学习器性能相同,则应有e01=e10,那么变量∣e01−e10∣应当服从正态分布。McNemar检验考虑变量τχ2=e01+e10(∣e01−e10∣−1)2服从自由度为1的χ2分布,即标准正态分布变量的平方。给定显著度α,当以上变量值小于临界值χα2时,不能拒绝假设,即认为两学习器的性能没有显著差别;否则拒绝假设,认为两者性能有显著差别,且平均错误率较小的那个学习器性能较优。自由度为1的χ2检验的临界值当α=0.05时为3.8415,α=0.1时为2.7055