3.4 代价敏感错误率与代价曲线

为权衡不同类型错误所造成的不同损失,可为错误赋予"非均等代价"

  • 以二分类任务为例,可根据任务的领域知识设定一个"代价矩阵"(cost matrix).如下表所示,其中,costijcost_{ij}表示将第ii类样本预测为第jj类样本的代价。一般来说,costii=0cost_{ii}=0;若将第0类判别为第一类所造成的损失更大,则cost01>cost10cost_{01}>cost_{10};损失程度相差越大,cost01cost_{01}cost10cost_{10}值的差别越大。一般情况下,重要的是代价比值而非绝对值

二分类代价矩阵

真实类别 预测类别
第0类 第1类
第0类 0 cost01
第1类 cost10 0
  • 之前的一些度量性能那个可看出,大都隐式地假设了均等代价,并没有考虑不同错误会造成不同地后果。在非均等代价下,不再是简单地最小化错误次数,而是希望最小化"总体代价"(total cost).

1. 代价敏感(cost-sensitive)错误率

  • 将表中的第0类作为正类,第1类作为反类,令D+D^+DD^-分别代表样例集DD的正例子集和反例子集,则"代价敏感"错误率为
    E(f;D;cost)=1m(xiD+I(f(xi)yi)×cost01+xiDI(f(xi)yi)×cost10)E(f;D;cost)=\frac {1}{m}(\sum_{x_i\in D^+}\mathbb{I}(f(x_i)\neq y_i)\times cost_{01} + \sum_{x_i\in D^-}\mathbb{I}(f(x_i)\neq y_i)\times cost_{10})
  • 类似的,可基于分布定义代价敏感错误率,给出其他一些性能度量的代价敏感版本
  • 若令costijcost_{ij}中的iji、j取值不限于0、1,则可定义出多分类任务的代价敏感性能度量

2. 代价曲线(cost curve)

  • 可以直接反映出学习器的期望总体代价
  • 代价曲线图的横轴是取值为[0,1]的正例概率代价为:
    P(+)cost=p×cost01p×cost01+(1p)×cost10P(+)cost=\frac {p\times cost_{01}}{p \times cost_{01} + (1-p) \times cost_{10}}
    其中pp是样例为正例的概率;
    纵轴是取值为[0,1]的归一化代价
    costnorm=FNR×p×cost01+FPR×(1p)×cost10p×cost01+(1p)×cost10cost_{norm}=\frac {FNR \times p \times cost_{01}+FPR \times (1-p) \times cost_{10}}{p \times cost_{01}+(1-p) \times cost_{10}}
    其中FPR为假正例率,FNR=1-TPR是假反例率
  • 代价曲线的绘制:
    ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(FPR,TPR),则可计算出相应的FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价

四、比较检验

  • 希望比较的是泛化性能,然而通过实验评估方法获得的是测试集上的性能,两者的对比结果可能未必相同
  • 测试集上的性能与测试集本身的选择有很大关系,且不论使用不同大小的测试集会得到不同的结果,即便使用相同大小的测试集,若包含的测试样例不同,测试结果也会有不同
  • 很多机器学习算法本身有一定的随机性,即便使用相同的参数设置在同一个测试集上多次运行,其结果也会有不同
  • 统计假设检验(hypothesis test)为进行学习器性能比较提供了重要依据。基于假设检验结果可推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。

4.1 假设检验

假设检验中的"假设"是对学习器泛化错误率分布的某种判断或猜想,例如"ϵ=ϵ0\epsilon = \epsilon_0".现实任务中并不知道学习器的泛化错误率,只能获知其测试错误率ϵ^\hat{\epsilon}。泛化错误率与测试错误率未必相同,但直观上,二者接近的可能性应比较大,相差很远的可能性比较小,因此,可根据测试错误率估推出泛化错误率的分布

  • 泛化错误率为ϵ\epsilon的学习器在一个样本上犯错的概率是ϵ\epsilon;测试错误率ϵ^\hat{\epsilon}意味着在mm个测试样本中恰有ϵ^×m\hat{\epsilon} \times m个被误分类。假定测试样本是从样本总体分布中独立采样而得,那么泛化错误率为ϵ\epsilon的学习器将其中mm^\prime个样本误分类、其余样本全部分类正确的概率是:Cmϵ^×mϵϵ^×m(1ϵ)mϵ^×mC^{\hat{\epsilon} \times m}_m\epsilon^{\hat{\epsilon} \times m}(1-\epsilon)^{m-\hat{\epsilon} \times m},给定测试错误率,则解P(ϵ^;ϵ)/ϵ=0\partial P(\hat{\epsilon};\epsilon)/\partial \epsilon = 0可知,P(ϵ^;ϵ)P(\hat{\epsilon};\epsilon)ϵ=ϵ^\epsilon=\hat{\epsilon}时最大,ϵϵ^|\epsilon-\hat{\epsilon}|增大时,P(ϵ^;ϵ)P(\hat{\epsilon};\epsilon)减小,这符合二项(binomial)分布.

  • 可使用"二项检验"(binomial test)对"ϵϵ0\epsilon \leq \epsilon_{0}"的假设进行检验,则在1α1-\alpha的概率内所能观测到的最大错误率为:
    ϵˉ=maxϵ\bar{\epsilon} = max \epsilon  s.t.i=ϵ0×m+1mCmiϵi(1ϵ)mi<αs.t. \sum_{i=\epsilon_{0} \times m + 1}^mC_m^i\epsilon ^i(1-\epsilon)^{m-i}<\alpha
    这里1α1-\alpha反映了结论的"置信度"。此时若测试错误率ϵ^\hat{\epsilon}小于临界值ϵˉ\bar \epsilon,则根据二项检验可得出结论:在α\alpha的显著度下,假设"ϵϵ0\epsilon \leq \epsilon_{0}"不能被拒绝,即能以1α1-\alpha的置信度认为,学习器的泛化错误率不大于ϵ0\epsilon_0;否则该假设可被拒绝,即在α\alpha的显著度下可认为学习器的泛化错误大于ϵ0\epsilon_0

  • 由于很多时候并非仅做一次留出法估计,而是通过多次重复留出法或是交叉验证法等多次训练/测试,这样会得到多个测试错误率,此时可使用"tt检验"(t-test).假定得到了kk格测试错误率,ϵ^1,ϵ^2,,ϵ^k\hat \epsilon_1,\hat \epsilon_2,\ldots,\hat \epsilon_k,则平均错误率μ\mu和方差σ2\sigma^2为:
    μ=1ki=1kϵ^i\mu = \frac{1}{k} \sum_{i=1}^k \hat \epsilon_i
    σ2=1k1i=1k(ϵ^iμ)2\sigma^2=\frac{1}{k-1}\sum_{i=1}^k(\hat\epsilon_i-\mu)^2
    考虑到这kk个测试错误率可看作泛化错误率ϵ0\epsilon_0的独立采样,则变量 τt=k(μϵ0)σ\tau_t=\frac {\sqrt k(\mu-\epsilon_0)}{\sigma} 服从自由度为k1k-1tt分布。
    对假设"μ=ϵ0\mu = \epsilon_0",计算出当测试错误率均值为ϵ0\epsilon_0时,在1α1-\alpha概率内能观测到的最大错误率,即临界值。这里考虑的是双边检验(two-tailed)假设,所以范围为[,tα2][-\infty,t_{-\frac {\alpha}{2}}][tα2,][t_{\frac {\alpha}{2}},\infty].若平均错误率μ\muϵ\epsilon之差μϵ0|\mu-\epsilon_0|位于临界值范围[tα2,tα2][t_{-\frac {\alpha}{2}},t_{\frac {\alpha}{2}}]内,则不能拒绝假设"μϵ0\mu-\epsilon_0",则可认为泛化错误率为ϵ0\epsilon_0,置信度为1α1-\alpha;否则可拒绝该假设,即在该显著度下可认为泛化错误率与ϵ0\epsilon_0有显著不同。

4.2 交叉验证t检验

  • 对不同的学习器的性能进行比较
  • 基本思想:若两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同
  • 对于两个学习器A和B,若使用k折交叉验证法得到的测试错误率分别为ϵ1A,ϵ2A,,ϵkA\epsilon_1^A,\epsilon_2^A,\ldots,\epsilon_k^Aϵ1B,ϵ2B,,ϵkB\epsilon_1^B,\epsilon_2^B,\ldots,\epsilon_k^B,其中ϵiA\epsilon_i^AϵiB\epsilon_i^B是在相同的第ii折训练/测试集得到的结果,则可用kk折交叉验证"成对t检验"(paired t-test)来进行比较检验。

  • 具体来说,对于kk折交叉验证产生的kk对测试错误率:先对每对结果求差,Δi=ϵiAϵiB\Delta_i= \epsilon_i^A-\epsilon_i^B;若两个学习器性能相同,则差值均值应为零。因此,可根据差值Δ1,Δ2,,Δk\Delta_1,\Delta_2,\ldots,\Delta_k来对"学习器A与学习器B性能相同"这个假设做tt检验,计算出差值的均值μ\mu和方差σ2\sigma^2,在显著度α\alpha下,若变量τt=kμσ\tau_t=|\frac {\sqrt k\mu}{\sigma}|小于临界值tα2,k1t_{\frac {\alpha}{2},k-1},则假设不能被拒绝,即认为两个学习器的性能没有显著差别;否则可认为两个学习器的性能有显著差别,且平均错误率较小的那个学习器性能较优。这里tα2,k1t_{\frac {\alpha}{2},k-1}是自由度为k1k-1tt分布上尾部累积分布为α2\frac {\alpha}{2}的临界值。

  • 欲进行有效的假设检验,一个重要前提是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。为缓解这一问题,可采用"5×\times2交叉验证"法
  • 5×\times2交叉验证是做5次2折交叉验证,在每次2折交叉验证之前随机将数据打乱,使得5次交叉验证中的数据划分不重复。对两个学习器A和学习器B,第ii次2折交叉验证将产生两对测试错误率,对它们分别求差,得到第1折上的差值Δi1\Delta_i^1和第2折上的差值Δi2\Delta_i^2.为缓解测试错误率的非独立性,仅计算第1次2折交叉验证的两个结果的平均值μ=0.5(Δ11+Δ12)\mu=0.5(\Delta_1^1+\Delta_1^2),但对每次2折实验的结果都计算出其方差σi2=(Δi1Δi1+Δi22)2+(Δi2Δi1+Δi22)2\sigma_i^2=(\Delta_i^1-\frac{\Delta_i^1+\Delta_i^2}{2})^2+(\Delta_i^2-\frac{\Delta_i^1+\Delta_i^2}{2})^2.变量τt=μ0.2i=15σi2\tau_t=\frac {\mu}{\sqrt{0.2\sum_{i=1}^5\sigma_i^2}}服从自由度为5的tt分布,其双边检验的临界值tα2,5t_{\frac{\alpha}{2},5}α\alpha=0.05为2.5706,当α\alpha=0.1为2.0150

4.3 McNemar检验(卡方检验)

  • 对于二分类问题,使用留出法不仅可估计出学习器A和B的测试错误率,还可获得两学习器分类结果的差别,即两者都正确、都错误、一个正确另一个错误的样本数,如“列联表”所示:

两学习器分类差别列联表

算法B 算法A
正确 错误
正确 e00 e01
错误 e10 e11
  • 若做的假设是两学习器性能相同,则应有e01=e10e_{01}=e_{10},那么变量e01e10|e_{01}-e_{10}|应当服从正态分布。McNemar检验考虑变量τχ2=(e01e101)2e01+e10\tau_{\chi^2}=\frac{(|e_{01}-e_{10}|-1)^2}{e_{01}+e_{10}}服从自由度为1的χ2\chi^2分布,即标准正态分布变量的平方。给定显著度α\alpha,当以上变量值小于临界值χα2\chi_\alpha^2时,不能拒绝假设,即认为两学习器的性能没有显著差别;否则拒绝假设,认为两者性能有显著差别,且平均错误率较小的那个学习器性能较优。自由度为1的χ2\chi^2检验的临界值当α=0.05\alpha=0.05时为3.8415,α=0.1\alpha=0.1时为2.7055