分类评价指标

一、错误率和精度

这两个评价指标即适用于二分类任务,也适用于多分类任务。

  • 错误率(Error Rate)是分类错误的样本数占样本总数的比例。定义为:
    E(f;D)=1mi=1mI(f(xi)yi) E(f;D) = \frac{1}{m} \sum^m_{i=1}\mathbb{I}(f(x_i)\neq y_i) 其中,I\mathbb{I}为指示函数。
  • 精度(Accuracy)是分类正确的样本数占样本总数的比例。
    注意与查准率(准确率)进行区分。
    定义为:
    acc(f;D)=1mi=1mI(f(xi)=yi)=1E(f;D) acc(f;D) = \frac{1}{m} \sum^m_{i=1}\mathbb{I}(f(x_i) = y_i)\\ =1 - E(f;D)

二、查准率与查全率

在信息检索和Web搜索中经常出现,例如在信息检索中,我们期望会关心“检索出的信息有多少是用户真正关心的”,以及在“检出多少用户关心的信息”。
这两个分别对应查准率与查全率,一个是看检索出来的信息中,检索正确的比例,后者是从所有用户关心的样本中,看检索正确的比例。

对于二分类问题,有经典的混淆矩阵来直观地展示真实类别与分类器预测类别的组合,这些组合包括真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)。我们可以用TP,FP,TN,FN来简称这些组合,并将其放入混淆矩阵中:

真实情况 预测结果
正例 反例
正例 TP FN
反例 FP TN

那么我们就可以利用混淆矩阵来计算查准率和查全率,注意TP+FP+TN+FN=总样本数

查准率(准确率)

P=TPTP+FP P = \frac{TP}{TP+FP} 分母为所有预测为正例的总数。

查全率(召回率)

R=TPTP+FN R = \frac{TP}{TP+FN} 分母为所有正样本个数,可以理解为模型从正样本中召回了多少,这在信息检索中经常使用。

查准率-查全率曲线 (P-R曲线)

在很多情况下,我们可以根据学习器的预测结果对样例进行排序,排在前面的学习器认为“最可能”的样本,排在后面的则是“最不可能”的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率和查准率。

以查准率为纵轴,以查全率为横轴作图,就得到了查准率-查全率曲线,简称为“P-R”曲线。
todo

P-R图直观地显示出学习器在样本总体上的查准率和查全率。在进行比较时,如果一个学习器的曲线完全覆盖住另一个学习器,那么可以断言前者的性能优于后者。但是如果两个学习器的曲线发生了交叉,则难以断言哪个学习器的性能更好。因此,计算P-R曲线的面积可能是一个方法,但是该面积难以估算。

  • 平衡点 (Break-Even Point, BEP),就是这样一个度量。它是“查准率=查全率”时的取值,该取值越高则可以估计学习器越好。
  • F1度量,仅利用平衡点还是过于简化了,更常用的是F1度量:
    F1=2×P×RP+R=2×TPTP+FP×TPTP+FNTPTP+FP+TPTP+FN=2×TPTP+FN+TP+FP=2×TP(TP+FP+TN+FN)+TPTN F1 = \frac{2 \times P \times R}{P+R} = \frac{2 \times \frac{TP}{TP+FP} \times \frac{TP}{TP+FN}}{\frac{TP}{TP+FP}+\frac{TP}{TP+FN}}\\ =\frac{2 \times TP}{TP+FN+TP+FP} = \frac{2 \times TP}{(TP+FP+TN+FN)+TP-TN} F1度量对于查准率和查全率的权重是相同的,但是实际应用中,我们可能期望更加关注某一指标。例如:在推荐系统中,我们期望用户获得更好的体验,推荐给用户的信息都是用户感兴趣的,因此查准率越高越好;而在逃犯信息检索系统中,我们期望找到越多越好的逃犯,因此查全率越高越好。因此,F1度量的更一般形式FβF_{\beta},它是查准率和查全率的加权调和平均,调和平均更重视较小值,它定义为:
    1Fβ=11+β2(1P+β2R)Fβ=(1+β2)×P×R(β2×P)+R \frac{1}{F_{\beta}} = \frac{1}{1+\beta^2}\cdot (\frac{1}{P}+\frac{\beta^2}{R}) \\ F_{\beta} = \frac{(1+\beta^2) \times P \times R}{(\beta^2 \times P)+R}
  • β=1\beta=1时,退化为标准的F1;
  • β>1\beta>1时,查全率有更大的影响;
  • β<1\beta< 1时,查准率有更大的影响。

宏查准率与微查准率

很多时候我们会得到多个二分类混淆矩阵,例如,经过多次训练,多分类任务(每两两类别的组合对应一个混淆矩阵)

  • 宏查准率
    直接在各混淆矩阵上计算出查准率和查全率,在求平均值。得到“宏查准率”、“宏查全率”以及对应的“宏F1”。
  • 微查准率
    相应地,我们可以先求出所有混淆矩阵对应的TP, FP, TN, FN的平均值,在计算出“微查准率”、“微查全率”以及对应的“微F1”。

ROC与AUC

很多情况下,学习器为每个样本计算出一个实值或者预测概率,然后将这个预测值与一个分类阈值(threshold)进行比较,若大于阈值则划分为正类,小于则为反类。实际上,我们可以根据这个预测值进行排序,排序在前的最可能为正类,排序在后的更可能为反类。这样,分类过程就相当于在这个排序中,以某个截断点将样本分为两个部分,前一部分判做正例,后一部分为反例。

具体的,在实际任务中,我们可以自定这个截断点,例如:如果期望查准率更高,可以选择排序中较前的位置作为截断点;若更重视查全率,可以选择排序中较后的位置作为截断点。因此,排序本身的质量好坏,体现了综合考虑学习器在一般情况下泛化性能的好坏。ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具。

ROC曲线

ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。与P-R曲线类似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出真正例率(True Positive Rate TPR)和假正例率(False Positive Rate FPR)。与P-R曲线,以查准率为纵轴以查全率为横轴不同,ROC曲线的纵轴是“真正例率”,横轴是“假正例率”。二者分别定义为:
TPR=TPTP+FNFPR=FPTN+FP TPR = \frac{TP}{TP+FN}\\ FPR = \frac{FP}{TN+FP} TPR的分母为所有正例样本数,FPR的分母为所有反例的样本数,二者的分子都是预测为正例的情况,因此ROC曲线的绘制重点在于分析预测为正例的情况。
[todo](insert roc sample)

ROC曲线的对角线对应于“随机猜测”模型,而点(0,1)则对应于将所有正例排在所有反例之前的“理想模型”。

ROC曲线的绘制

现实任务中的测试样例是有限的,因此只能获得有限个TPR和FPR,坐标对是有限的,就难以绘制平滑的ROC曲线。只能绘制出近似的ROC曲线。

  • 绘制过程
    给定m+m^+个正例和mm^-个反例,根据学习器的预测结果对样例进行排序,然后把分类阈值设为最大,即所有结果均为反例,此时TPR和FPR均为0,在坐标(0,0)处标记一个点。然后依次将分类阈值设为每个样例的预测值,即依次将每个样例划分为正例,设前一个标记点坐标为(x,y),当前若为真正例,则对应标记点的坐标为(x,y+1m+)(x,y+\frac{1}{m^+});当前若为假正例,则对应标记点的坐标为(x+1m)(x+\frac{1}{m^-}),然后用线段连接相邻点。

在进行学习器比较时,与P-R曲线类似,如果一个学习器将另一个学习器的曲线完全包住,则可以断言前者的性能好于后者。类似的,如果出现曲线交叉的情况,我们也可以计算ROC曲线的面积来衡量(P-R曲线可以比较平衡点BEP)。

AUC

AUC(Area Under ROC Curve)的定义为ROC曲线下的面积。

计算方法

  • 估算
    假定ROC曲线的坐标是{(x1,y1),(x2,y2),,(xm,ym)}\{(x_1,y_1),(x_2,y_2),\cdots , (x_m,y_m)\}的点按顺序连接而形成,AUC可估算为:
    AUC=12i=1m1(xi+1xi)(yi+yi+1) AUC = \frac{1}{2}\sum_{i=1}^{m-1} (x_{i+1} - x_i) \cdot (y_i+y_{i+1}) 这里其实就是梯形计算公式。

  • 形式化
    AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。给定m+m^+个正例和mm^-个反例,令D+D^+DD^-分别表示正、反例集合,则排序损失定义为:
    lrank=1m+mx+D+xD(I(f(x+)<f(x))+12I(f(x+)=f(x))) \mathcal{l}_{rank} = \frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-}(\mathbb{I}(f(x^+)< f(x^-))+\frac{1}{2}\mathbb{I}(f(x^+)=f(x^-))) 可以记为,考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”。这里的损失其实是在计算ROC曲线与y轴的面积,那么根据AUC的定义,AUC计算公式为:
    AUC=1lrank AUC = 1 - \mathcal{l}_{rank}

todo
推导过程:
lrank=1m+mx+D+xD(I(f(x+)<f(x))+12I(f(x+)=f(x)))=1m+mx+D+(xDI(f(x+)<f(x))+12xDI(f(x+)=f(x)))=x+D+(1m+1mxDI(f(x+)<f(x))+121m+1mxDI(f(x+)=f(x)))=x+D+(121m+[2mxDI(f(x+)<f(x))+1mxDI(f(x+)=f(x))]) \mathcal{l}_{rank} = \frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-}(\mathbb{I}(f(x^+)< f(x^-))+\frac{1}{2}\mathbb{I}(f(x^+)=f(x^-))) \\ = \frac{1}{m^+m^-}\sum_{x^+\in D^+}(\sum_{x^-\in D^-}\mathbb{I}(f(x^+)< f(x^-))+\frac{1}{2}\cdot \sum_{x^-\in D^-}\mathbb{I}(f(x^+)=f(x^-))) \\ = \sum_{x^+\in D^+}(\frac{1}{m^+}\cdot \frac{1}{m^-}\sum_{x^-\in D^-}\mathbb{I}(f(x^+)< f(x^-))+\frac{1}{2}\cdot \frac{1}{m^+}\cdot \frac{1}{m^-} \sum_{x^-\in D^-}\mathbb{I}(f(x^+)=f(x^-))) \\ = \sum_{x^+\in D^+}( \frac{1}{2}\cdot \frac{1}{m^+}\cdot [\frac{2}{m^-}\sum_{x^-\in D^-}\mathbb{I}(f(x^+)< f(x^-))+ \frac{1}{m^-} \sum_{x^-\in D^-}\mathbb{I}(f(x^+)=f(x^-))]) 上式经过等价变换后也可以看做是求梯形面积,前面累加正例可以理解为,每增加一个真正例就会多一条竖着的线段,后面则是计算梯形面积。
在绘制ROC曲线时,每新增一个假正例时x的坐标就增加一个步长,所以对于梯形较短的底,长度等于1m\frac{1}{m^-}乘以预测值大于f(x+)f(x^+)的假正例个数:
1mxDI(f(x+)<f(x)); \frac{1}{m^-} \cdot \sum_{x^-\in D^-}\mathbb{I}(f(x^+)< f(x^-)); 梯形较长的底,长度等于1m\frac{1}{m^-}乘以预测值大于等于f(x+)f(x^+)的假正例个数,
1m(xDI(f(x+)<f(x))+xDI(f(x+)=f(x))); \frac{1}{m^-} \cdot (\sum_{x^-\in D^-}\mathbb{I}(f(x^+)< f(x^-))+ \sum_{x^-\in D^-}\mathbb{I}(f(x^+) = f(x^-))) ;