相关文章:
· 机器学习模型的性能度量
性能评价测度是用于评价分类模型“好坏”的一种量度。对于绝大多数了解分类问题的读者来讲,可能接触最多的一种性能评价测度就是分类准确率(Accuracy)。假设有一个具有
m
m
m个样本的数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
m
,
y
m
)
}
D=\{(x_1, y_1), (x_2, y_2), \cdots, (x_m, y_m)\}
D={(x1,y1),(x2,y2),⋯,(xm,ym)},其中
y
i
y_i
yi是示例
x
i
x_i
xi的真实标记,则对于分类模型
f
f
f,其在该数据集上的分类准确率可由下式计算得到:
Accuracy
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
\text{Accuracy}(f;D)=\frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)= y_i)
Accuracy(f;D)=m1i=1∑mI(f(xi)=yi)
其中, I \mathbb{I} I为指示函数,当 I \mathbb{I} I中等式成立时,其取值为1,而当等式不成立时,其取值为0。
从上式可以看出,所谓分类准确率,实际上就是分类模型在所有样本上所预测正确个体的占比统计量。在平衡的分类问题中,采用分类准确率评价模型的质量当然是毫无问题的,但若分类问题是不平衡的,这一测度将难以反映出分类模型的真实质量。不妨假设现有100个样本,其中有99个属于多数类,而另外1个来源于少数类,若存在两个分类模型 f 1 f_1 f1和 f 2 f_2 f2,其中前者将所有样本均判归多数类,即其分类精度为0.99,而后者则可正确预测少数类样本,但同时也误判了10个多数类样本,即其分类精度为0.90。那么,是否能根据分类准确率的大小,直接得出模型 f 1 f_1 f1比 f 2 f_2 f2质量更优的结论呢?显然是不能的,因为前者误判了全部的少数类样本,导致所训练的分类模型可能毫无价值,而后者虽然误判了一部分多数类样本,但正确预测了唯一的少数类样本,从而在不同类样本的分类精度上达到了近似平衡,而这种平衡可能是更有意义的。
既然在类别不平衡问题上,分类准确率不是一种可取的测度,那么,是否有更合适的性能度量指标呢?在此,首先需要为读者展示一张表格,即分类结果的混淆矩阵(Confusion Matrix),如下图所示。
在上图中,TP和TN分别表示原本就是正类/负类,也确实被预测为正类/负类的样本数量;FP及FN则分别表示样本的真实类标为负类/正类,但却被预测为正类/负类的样本数量。显然,TP+TN表示预测正确的样本数,而FP+FN则表示预测错误的样本数,TP+TN+FP+FN表示样本总数。进一步,分类准确率可由这4个变量直接计算得出:
Accuracy
(
f
;
D
)
=
T
P
+
T
N
T
P
+
T
N
+
F
P
+
F
N
\text{Accuracy}(f;D)=\frac{TP+TN}{TP+TN+FP+FN}
Accuracy(f;D)=TP+TN+FP+FNTP+TN
此外,我们也可采用这4个变量计算出其他一些性能测度,如精度/查准率(Precision)、召回率/查全率/真正率(Recall, TPR)及真负率TNR等,这些指标可通过如下各式计算得到:
Precision
=
T
P
T
P
+
F
P
Recall
=
TPR
=
T
P
T
P
+
F
N
TNR
=
T
N
T
N
+
F
P
\text{Precision}=\frac{TP}{TP+FP}\\\quad\\\text{Recall}=\text{TPR}=\frac{TP}{TP+FN}\\\quad\\\text{TNR}=\frac{TN}{TN+FP}
Precision=TP+FPTPRecall=TPR=TP+FNTPTNR=TN+FPTN
其中,TPR与TNR在医学领域中分别被称为敏感性(Sensitivity)与特异性(Specificity)测度。显然,精度/查准率与召回率/查全率是一对矛盾的度量指标。一般而言,当查准率高时,查全率往往较低,而当查全率高时,查准率又往往偏低。当然,最理想状况是二者的性能大致相当。为检测二者的平衡关系,可采用一种称为F-measure的性能评价测度,计算公式如下:
F
1
=
2
×
Precision
×
Recall
Precision
+
Recall
=
2
×
T
P
样例总数
+
T
P
−
T
N
F1=\frac{2\times\text{Precision}\times\text{Recall}}{\text{Precision}+\text{Recall}}=\frac{2\times TP}{\text{样例总数}+TP-TN}
F1=Precision+Recall2×Precision×Recall=样例总数+TP−TN2×TP
另外,我们也注意到真正率TPR及真负率TNR事实上分别表示了正类与负类各自的分类精度,故可采用一种称为G-mean的测度来检测这二者的平衡关系,其计算公式如下:
G-mean
=
T
P
R
×
T
N
R
\text{G-mean}=\sqrt{TPR\times TNR}
G-mean=TPR×TNR
显然,G-mean测度计算了两类样本预测精度的几何均值,若其中一个较大,而另一个较小,则G-mean测度值必然偏小,只有当二者均值较接近时,G-mean测度才可达到峰值。
前面的讨论仅考虑了二分类问题,而未考虑多分类问题。事实上,在多分类问题中,F-measure及G-mean测度只需通过简单转换即可使用。其中,在多分类问题中,F-measure测度被转换为了一个称为F-score的测度,其计算公式如下:
F-score
=
∑
i
=
1
M
F
1
M
\text{F-score}=\frac{\sum_{i=1}^MF1}{M}
F-score=M∑i=1MF1
其中,
M
M
M为类别个数。显然,F-score测度是将多分类问题转化为多个二分类问题,并在每一个二分类问题上分别计算F-measure测度,最后再求其均值而得。而在多分类问题上,G-mean测度也可通过下式计算得到:
G-mean
=
(
∏
i
=
1
M
Accuracy
)
1
M
\text{G-mean}=(\prod_{i=1}^M\text{Accuracy})^{\frac{1}{M}}
G-mean=(i=1∏MAccuracy)M1
显然,在多分类问题上,G-mean测度仍然反映了各类样本分类精度的几何均值。
在类别不平衡学习任务中,F-measure及G-mean是较为常用的两种性能评价测度。那么,是不是就可以说它们是完全没有缺陷的了呢?答案当然是否定的。事实上,Batuwita和Palade在进行生物信息学研究时发现,上述测度并非尽善尽美。他们根据实际需要将不平衡分类问题分成了两大类:第1类是希望尽可能地提升TPR的值,而忽略TNR测度值的大小;第2类则希望在提升TPR值的同时,尽可能不大幅降低TNR测度的值。针对第2类需求,Batuwita和Palade提出了一种修正的G-mean测度:AGm测度,该测度的具体计算公式如下:
AGm
=
{
G-mean
+
T
N
R
×
N
n
1
+
N
n
,
T
P
R
>
0
0
,
T
P
R
=
0
\text{AGm}=\left\{ \begin{aligned} &\frac{\text{G-mean}+TNR\times N_n}{1+N_n} &, TPR>0\\ &0&, TPR=0 \\ \end{aligned} \right.
AGm=⎩⎪⎨⎪⎧1+NnG-mean+TNR×Nn0,TPR>0,TPR=0
其中,
N
n
N_n
Nn表示多数类样本在全部样本中的占比。在类别不平衡学习问题中,另一种常用的性能评价测度是“受控者操纵特征曲线下的面积”(Area Underthe Receiver Pperating Characteristic curve, AUC)。所谓受控者操纵特征曲线(Receiver Operatingcharacteristic Curve, ROC),是根据每个样本的决策输出值进行“排序”而构成的曲线。众所周知,很多分类模型均可对样本产生实值或概率输出,如朴素贝叶斯分类器的后验概率、神经网络的决策输出值、集成分类器的投票比等。通常的做法是对这些输出值按大小关系进行排序,并找到一个对应的截断阈值,小于该阈值的属于一类,大于该阈值的属于另一类。在实际应用中,若截断阈值找得不合理可能会导致分类结果不理想,但它并不会影响到样本的排序关系。实际上,这种排序关系也可用于评价分类模型的性能。具体而言,ROC曲线是由每个样本的真正率TPR及假正率FPR所刻画的,其中假正率的计算公式如下:
F
P
R
=
F
P
T
N
+
F
P
FPR=\frac{FP}{TN+FP}
FPR=TN+FPFP
ROC曲线的纵轴表示真正率,横轴表示假正率,曲线上的点从原点开始按照决策值从小到大排列而成。下图给出了一个ROC曲线的例子。
AUC测度为ROC曲线下的面积,如上图所示的阴影面积,实际上,它是由多个梯形的面积累加而成。对于一个完全随机猜测的分类模型而言,其ROC曲线应为连接原点至右上角顶点的一条直线段,其AUC测度值为0.5。而在样本完全可分状态下,即一类样本的排序均在另一类样本之前或之后,则其ROC曲线应是纵坐标取值为1,且与横轴完全平行的直线段,其AUC测度值为1。通常而言,在同一样本集上,若一个分类模型的AUC测度值越高,则表明该模型的质量越好。
此外,特别需要说明的是,ROC曲线在设计之初仅考虑了二分类问题,对于多分类问题,可以将每类均视作正类刻画一条ROC曲线,取各条ROC曲线的AUC测度均值作为最终的AUC测度值即可,通常将该测度称为MAUC测度。在类别不平衡学习问题中,F-measure, G-mean及AUC是最为常用的三种性能评价测度。