2.3 性能度量
对学习器的泛化性能进行评估, 不仅需要有效可行的实验估计方法, 还需要有模型泛化能力的评价标准, 这就是性能度量(performance measure). 性能度量反映了任务需求, 在对比不同模型的能力时, 使用不同的性能度量往往会导致不同的评判结果; 这意味着模型的 “好坏” 是相对的, 什么样的模型是好的, 不仅取决于算法, 还决定于任务需求.
回归任务最常用的性能度量是 “均方误差” (mean squared error)
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
.
E(f;D)=\frac1m\sum^m_{i=1}(f(x_i)-y_i)^2.
E(f;D)=m1i=1∑m(f(xi)−yi)2.
(其中
y
i
y_i
yi是示例
x
i
x_i
xi的真实标记,
f
(
x
)
f(x)
f(x)是学习器预测结果).
更一般的, 对于数据分布
D
D
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅), 均方误差可描述为
E
(
f
;
D
)
=
∫
x
~
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
.
E(f;D)=\int_{x\widetilde{~~~}D}(f(x)-y)^2p(x)dx.
E(f;D)=∫x
D(f(x)−y)2p(x)dx.
2.3.1 错误率与精度
对于样例集
D
D
D, 分类错误率定义为
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
.
E(f;D)=\frac1m\sum^m_{i=1}\Bbb I(f(x_i)\not=y_i).
E(f;D)=m1i=1∑mI(f(xi)=yi).
精度则定义为
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
acc(f;D)=\frac1m\sum^m_{i=1}\Bbb I(f(x_i)=y_i)
acc(f;D)=m1i=1∑mI(f(xi)=yi)
=
1
−
E
(
f
;
D
)
.
=1-E(f;D).
=1−E(f;D).
对于数据分布
D
D
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅), 错误率与精度可分别描述为
E
(
f
;
D
)
=
∫
x
~
D
I
(
f
(
x
)
≠
y
)
p
(
x
)
d
x
,
E(f;D)=\int_{x\widetilde{~~~}D}\Bbb I(f(x)\not=y)p(x)dx,
E(f;D)=∫x
DI(f(x)=y)p(x)dx,
a
c
c
(
f
;
D
)
=
∫
x
~
D
I
(
f
(
x
)
=
y
)
p
(
x
)
d
x
acc(f;D)=\int_{x\widetilde{~~~}D}\Bbb I(f(x)=y)p(x)dx
acc(f;D)=∫x
DI(f(x)=y)p(x)dx
=
1
−
E
(
f
;
D
)
.
=1-E(f;D).
=1−E(f;D).
2.3.2 查准率、查全率与F1
在信息检索中, 我们经常会关心 “检索出的信息中有多少比例是用户感兴趣的” “用户感兴趣的信息中有多少被检索出来了”. “查准率”(precision) 与 “查全率”(recall) 是更为适用于此类需求的性能度量.
对于二分类问题, 可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative) 四种情形, 令
T
P
、
F
P
、
T
N
、
F
N
TP、FP、TN、FN
TP、FP、TN、FN分别表示对应的样例数, 则显然有
T
P
+
F
P
+
T
N
+
F
N
=
TP+FP+TN+FN=
TP+FP+TN+FN=样例总数. 分类结果的 “混淆矩阵”(confusion matrix)如表所示.
查准率
P
P
P与查全率
R
R
R分别定义为
P
=
T
P
T
P
+
F
P
,
P=\frac{TP}{TP+FP},
P=TP+FPTP,
R
=
T
P
T
P
+
F
N
.
R=\frac{TP}{TP+FN}.
R=TP+FNTP.
查准率和查全率是一对矛盾的度量. 一般来说, 查准率高时, 查全率往往偏低; 而查全率高时, 查准率往往偏低. 通常只有在一些简单任务中, 才可能使查全率和查准率都很高.
根据学习器的预测结果对样例进行排序, 按此顺序逐个把样本作为正例进行预测, 则每次可以计算出当前的查全率、查准率. 以查准率为纵轴、查全率为横轴作图, 就得到查准率-查全率曲线, 简称 “P-R曲线”, 显示该曲线的图称为 “P-R图”.
P-R 图直观地显示出学习器在样本总体上的查全率、查准率. 在进行比较时, 若一个学习器的 P-R 曲线被另一个学习器的曲线完全 “包住”, 则可断言后者的性能优于前者; 如果两个学习器的 P-R 曲线发生了交叉, 一个比较合理的判据是比较 P-R 曲线下的面积的大小, 它在一定程度上表征了学习器在查准率和查全率上取得相对 “双高” 的比例. 而面积这个值不容易估算, 因此人们设计了一些综合考虑查准率、查全率的性能度量, 如 “平衡点”.
“平衡点”(Break-Event Point, 简称BEP) 是 “查准率=查全率” 时的取值, 例如图2.3中学习器 C 的 BEP 是 0.64, 而基于 BEP 的比较, 可认为学习器 A 由于 B.
但 BEP 还是过于简化了些, 更常用的是
F
1
F1
F1度量:
F
1
=
2
×
P
×
R
P
+
R
=
2
×
T
P
样
例
总
数
+
T
P
−
T
N
.
F1=\frac{2\times P\times R}{P+R}=\frac{2\times TP}{样例总数+TP-TN}.
F1=P+R2×P×R=样例总数+TP−TN2×TP.
F
1
F1
F1是基于查准率与查全率的调和平均(harmonic mean)定义的:
1
F
1
=
1
2
⋅
(
1
P
+
1
R
)
.
\frac1{F1}=\frac12\cdot(\frac1P+\frac1R).
F11=21⋅(P1+R1).
在一些应用中, 对查准率和查全率的重视程度有所不同. 有时查准率更重要, 有时查全率更重要.
F
1
F1
F1度量的一般形式–
F
β
F_\beta
Fβ, 能让我们表达出对查准率/查全率的不同偏好, 它定义为
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
,
F_\beta=\frac{(1+\beta^2)\times P\times R}{(\beta^2\times P)+R},
Fβ=(β2×P)+R(1+β2)×P×R,
其中
β
>
0
\beta>0
β>0度量了查全率对查准率的相对重要性.
β
=
1
\beta=1
β=1时退化为标准的
F
1
F1
F1;
β
>
1
\beta>1
β>1时查全率有更大影响;
β
<
1
\beta<1
β<1时查准率有更大影响.
F
β
F_\beta
Fβ则是加权调和平均:
1
F
β
=
1
1
+
β
2
⋅
(
1
P
+
β
2
R
)
.
\frac1{F_\beta}=\frac1{1+\beta^2}\cdot(\frac1P+\frac{\beta^2}R).
Fβ1=1+β21⋅(P1+Rβ2).
很多时候我们有多个二分类混淆矩阵, 我们希望在
n
n
n个二分类混淆矩阵上综合考察查准率和查全率. 一种直接的做法是先在各混淆矩阵上分别计算出查准率和查全率, 再计算平均值, 这样就得到 “宏查准率”(macro-P)、“宏查全率”(macro-R), 以及相应的 “宏
F
1
F1
F1”(macro-
F
1
F1
F1):
m
a
c
r
o
−
P
=
1
n
∑
i
=
1
n
P
i
macro{-}P=\frac1n\sum^n_{i=1}P_i
macro−P=n1i=1∑nPi
m
a
c
r
o
−
R
=
1
n
∑
i
=
1
n
R
i
macro{-}R=\frac1n\sum^n_{i=1}R_i
macro−R=n1i=1∑nRi
m
a
c
r
o
−
F
1
=
2
×
m
a
c
r
o
−
P
×
m
a
c
r
o
−
R
m
a
c
r
o
−
P
+
m
a
c
r
o
−
R
.
macro{-}F1=\frac{2\times macro{-}P\times macro{-}R}{macro{-}P+macro{-}R}.
macro−F1=macro−P+macro−R2×macro−P×macro−R.
亦可先将混淆矩阵的对应元素进行平均, 得到
T
P
、
F
P
、
T
N
、
F
N
TP、FP、TN、FN
TP、FP、TN、FN的平均值, 分别记为
T
P
‾
、
F
P
‾
、
T
N
‾
、
F
N
‾
\overline{TP}、\overline{FP}、\overline{TN}、\overline{FN}
TP、FP、TN、FN, 在基于这些平均值计算出 “微查准率”(micro-P)、“微查全率”(micro-R) 和 “微
F
1
F1
F1”(micro-
F
1
F1
F1):
m
i
c
r
o
−
P
=
T
P
‾
T
P
‾
+
F
P
‾
,
micro{-}P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}},
micro−P=TP+FPTP,
m
i
c
r
o
−
R
=
T
P
‾
T
P
‾
+
F
N
‾
,
micro{-}R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}},
micro−R=TP+FNTP,
m
i
c
r
o
−
F
1
=
2
×
m
i
c
r
o
−
P
×
m
i
c
r
o
−
R
m
i
c
r
o
−
P
+
m
i
c
r
o
−
R
micro{-}F1=\frac{2\times micro{-}P\times micro{-}R}{micro{-}P+micro{-}R}
micro−F1=micro−P+micro−R2×micro−P×micro−R
2.3.3 ROC 与 AUC
很多学习器是为测试样本产生一个实值或概率预测, 然后将这个预测值与一个分类阈值(threshold) 进行比较, 若大于阈值则分为正类, 否则为反类. 这个实值或概率预测结果的好坏, 直接决定了学习器的泛化能力. 实际上, 我们可将测试样本进行排序, 在这个排序中以某个 “截断点”(cut point) 将样本分为两部分, 前一部分判作正例, 后一部分则判作反例.
在不同的应用任务中可根据任务需求来采用不同的截断点, 如更重视 “查准率”, 则可选择排序中靠前的位置进行截断; 若更重视 “查全率”, 则可选择靠后的位置进行截断.
ROC 全称是 “受试者工作特征”(Receiver Operating Characteristic) 曲线. 与2.3.2节中介绍的 P-R曲线相似, 根据学习器的预测结果对样例进行排序, 按此顺序逐个把样本作为正例进行预测, 每次计算出两个重要量的值, 分别以它们为横、纵坐标作图就得到了 “ROC曲线”. 与 P-R曲线使用查准率、查全率为纵、横轴不同, ROC曲线的纵轴是 “真正例率”(True Positive Rate, 简称TPR), 横轴是 “假正比例”(False Positive Rate, 简称FPR), 基于表2.1中的符号, 两者分别定义为
T
P
R
=
T
P
T
P
+
F
N
TPR=\frac{TP}{TP+FN}
TPR=TP+FNTP
F
P
R
=
F
P
T
N
+
F
P
FPR=\frac{FP}{TN+FP}
FPR=TN+FPFP
显示 ROC 曲线的图称为 “ROC图”. 对角线对应于 “随机猜测” 模型, 而点(0,1)则对应于将所有正例排在所有反例之前的 “理想模型”.
现实任务中通常仅能获得有限个(真正例率, 假正例率)坐标对, 只能绘制出图2.4(b)所示的近似 ROC 曲线.
绘图过程: 给定
m
+
m^+
m+个正例和
m
−
m^-
m−个反例, 根据学习器预测结果对样例进行排序, 然后把分类阈值设为最大, 即把所有样例均预测为反例, 此时真正例率和假正例率均为0, 在坐标
(
0
,
0
)
(0,0)
(0,0)处标记一个点. 然后, 将分类阈值依次设为每个样例的预测值, 即依次将每个样例划分为正例. 设前一个标记点坐标为
(
x
,
y
)
(x, y)
(x,y), 当前若为真正例, 则对应标记点的坐标为
(
x
+
1
m
−
,
y
)
(x+\frac1{m^-}, y)
(x+m−1,y), 然后用线段连接相邻点即得.
进行学习器的比较时, 与 P-R 图相似, 若一个学习器的 ROC 曲线被另一个学习器的曲线完全 “包住”, 则可断言后者的性能优于前者; 若两个学习器的 ROC 曲线发生交叉, 较为合理的判据是比较 ROC 曲线下的面积, 即 AUC(Area Under ROC Curve).
AUC 可估算为
A
U
C
=
1
2
∑
i
=
1
m
−
1
(
x
i
+
1
−
x
i
)
⋅
(
y
i
+
y
i
+
1
)
.
AUC=\frac12\sum^{m-1}_{i=1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1}).
AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1).
形式化地看, AUC 考虑的是样本预测的排序质量, 因此它与排序误差有紧密联系. 给定
m
+
m^+
m+个正例和
m
−
m^-
m−个反例, 令
D
+
D^+
D+和
D
−
D^-
D−分别表示正、反例集合, 则排序 “损失”(loss)定义为
l
r
a
n
k
=
1
m
+
m
−
∑
x
+
∈
D
+
∑
x
−
∈
D
−
(
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
f
(
x
+
)
=
f
(
x
−
)
)
)
,
\Bbb l_{rank}=\frac1{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D-}\left(\Bbb I(f(x^+)<f(x^-))+\frac12\Bbb I(f(x^+)=f(x^-))\right),
lrank=m+m−1x+∈D+∑x−∈D−∑(I(f(x+)<f(x−))+21I(f(x+)=f(x−))),
即考虑每一对正、反例, 若正例的预测值小于反例, 则记一个 “罚分”, 若相等, 则记
0.5
0.5
0.5个 “罚分”. 容易看出,
l
r
a
n
k
\Bbb l_{rank}
lrank对应的是 ROC 曲线之上的面积: 若一个正例在 ROC 曲线上对应标记点的坐标为
(
x
,
y
)
(x,y)
(x,y), 则
x
x
x恰是排序在其之前的反例所占的比例, 即假正例率. 因此有
A
U
C
=
1
−
l
r
a
n
k
.
AUC=1-\Bbb l_{rank}.
AUC=1−lrank.
2.3.4 代价敏感错误率与代价曲线
为权衡不同类型错误所造成的不同损失, 可为错误赋予 “非均等代价”(unequal cost).
以二分类任务为例, 我们可根据任务的领域知识设定一个 “代价矩阵”(cost matrix), 如表所示, 其中
c
o
s
t
i
j
cost_{ij}
costij表示将第
i
i
i类样本预测为第
j
j
j类样本的代价. 一般来说,
c
o
s
t
i
i
=
0
cost_{ii}=0
costii=0.
在非均等代价下, 我们所希望的不再是简单地最小化错误次数, 而是希望最小化 “总体代价”(total cost). 若将表中的第
0
0
0类作为正类、第
1
1
1类作为反类, 令
D
+
D^+
D+与
D
−
D^-
D−分别代表样例集
D
D
D的正例子集和反例子集, 则 “代价敏感”(cost-sensitive) 错误率为
E
(
f
;
D
;
c
o
s
t
)
=
1
m
(
∑
x
i
∈
D
+
I
(
f
(
x
i
)
≠
y
i
)
×
c
o
s
t
01
+
∑
x
i
∈
D
−
I
(
f
(
x
i
)
≠
y
i
)
×
c
o
s
t
10
)
.
E(f;D;cost)=\frac1m\left(\sum_{x_i\in D^+}\Bbb I(f(x_i)\not=y_i)\times cost_{01}+\sum_{x_i\in D^-}\Bbb I(f(x_i)\not=y_i)\times cost_{10}\right).
E(f;D;cost)=m1(xi∈D+∑I(f(xi)=yi)×cost01+xi∈D−∑I(f(xi)=yi)×cost10).
在非均等代价下, ROC 曲线不能直接反映出学习器的期望总体代价, 而 “代价曲线”(cost curve) 则可达到该目的.代价曲线图的横轴是取值为
[
0
,
1
]
[0,1]
[0,1]的正例概率代价
P
(
+
)
c
o
s
t
=
p
×
c
o
s
t
01
p
×
c
o
s
t
01
+
(
1
−
p
)
×
c
o
s
t
10
,
P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}},
P(+)cost=p×cost01+(1−p)×cost10p×cost01,
其中
p
p
p是样例为正例的概率; 纵轴是取值为
[
0
,
1
]
[0,1]
[0,1]的归一化代价
c
o
s
t
n
o
r
m
=
F
N
R
×
p
×
c
o
s
t
01
+
F
P
R
×
(
1
−
p
)
×
c
o
s
t
10
p
×
c
o
s
t
01
+
(
1
−
p
)
×
c
o
s
t
10
,
cost_{norm}=\frac{FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}},
costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10,
其中
F
P
R
FPR
FPR是假正例率,
F
N
R
=
1
−
T
P
R
FNR=1-TPR
FNR=1−TPR是假反例率.
代价曲线的绘制:
R
O
C
ROC
ROC曲线上每一个点对应了代价平面上的一条线段, 设
R
O
C
ROC
ROC曲线上点的坐标为
(
T
P
R
,
F
P
R
)
(TPR,FPR)
(TPR,FPR), 则可相应计算出
F
N
R
FNR
FNR, 然后在代价平面上绘制一条从
(
0
,
F
P
R
)
(0,FPR)
(0,FPR)到
(
1
,
F
N
R
)
(1,FNR)
(1,FNR)的线段, 线段下的面积即表示了该条件下的期望总体代价; 如此将
R
O
C
ROC
ROC曲线上的每个点转化为代价平面上的一条线段, 然后取所有线段的下界, 围成的面积即为在所有条件下学习器的期望总体代价, 如图所示: