在完成一个模型的训练时,通常我们会离线测评模型的预测效果,下面分别按照分类任务,回归任务以及排序任务对应的评估方法进行一个汇总。
1 分类任务 (Classification)
假设一个model预测的结果如下:
那么怎么评估这个model的效果呢?
首先来看几个基本指标:
- TP ( true positive):预测正确的正样本 (预测正确)
- TN ( true negative) : 预测正确的负样本 (预测正确)
- FP (false positive): 预测错误的正样本 (预测错误)
- FN (false negative): 预测错误的负样本 (预测错误)
那么我们先来看下,对于每个类别,上图的TP (true positive) 是对角线的绿色格子:
对于A类,TN (true negative) 如下蓝色格子区域:
对于A类,FP (false positive) 如下红色格子区域
对于A类,FN (false negative) 如下橙色格子区域
1.1 准确率 (Accuracy)
对上面几个基本的指标计算了解后,我们来看下,什么叫准确率。
准确率就是正确预测的样本除以总样本:
A
c
c
=
c
o
r
r
e
c
t
s
u
m
(
s
a
m
p
l
e
s
)
=
9
+
15
+
24
+
15
80
Acc = \frac{correct}{sum(samples)}=\frac{9+15+24+15}{80}
Acc=sum(samples)correct=809+15+24+15
准确率在各类样本较平衡的时候,对模型效果的衡量较客观,若类别样本很不均衡,则测出来的准确率指标不能衡量少样本的类别预测效果。
1.2 精确率 (Precision)
对于上面的A类计算结果如下:
p
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
=
9
9
+
6
precision= \frac{TP}{TP+FP}=\frac{9}{9+6}
precision=TP+FPTP=9+69
1.3 召回率 (Recall)
对于上面的A类计算结果如下:
r
e
c
a
l
l
=
T
P
T
P
+
F
N
=
9
9
+
1
recall= \frac{TP}{TP+FN}=\frac{9}{9+1}
recall=TP+FNTP=9+19
1.4 F1分值
精确率和召回率整体来说是相互制约的,在实际应用中,如果很在意模型预测的精准度,则需要提高精确率,如果希望尽可能的多召回,则可以提高召回率。而F1分值是精确率和召回率的调和平均数,公式如下:
F 1 = 2 1 r e c a l l + 1 p r e c i s i o n = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F_1 = \frac{2}{\frac{1}{recall}+\frac{1}{precision}} =2*\frac{precision*recall}{precision+recall} F1=recall1+precision12=2∗precision+recallprecision∗recall
从上面公式可以看出,F1分值越高,则recall和precision都相对越高,只要有一个相对较小,比如recall=0.1, precision=1,则F1=0.18, 算出来的F1分值都较低,所以F1分值较好的平衡了精确率和召回率。
1.5 ROC曲线( Receiver Operating Characteristic)
ROC曲线描述了不同阈值下的二分类器的效果,坐标轴的纵轴为预测正确的正样本率,表示为:
T
P
R
(
True Positive Rate
)
=
T
P
T
P
+
F
N
TPR \text { }(\text{True Positive Rate}) = \frac{TP}{TP+FN}
TPR (True Positive Rate)=TP+FNTP
其中横轴为预测错误的负样本率,表示为:
F
P
R
(
False Positive Rate
)
=
F
P
F
P
+
T
N
FPR \text{ }(\text{False Positive Rate}) = \frac{FP}{FP+TN}
FPR (False Positive Rate)=FP+TNFP
从上面两个公式可以看出,理想的分类器应该是TPR越大,FPR越小,最好的是坐标轴的(0,1)点,此时说明分类器全部预测正确。 为什么说ROC曲线对样本不平衡问题不敏感,因为ROC曲线横轴FPR计算的是负样本预测错误的概率,和正样本的多少无关,所以不平衡不影响ROC曲线横轴值的计算。
接下来让我们看看曲线的点都是怎么计算出来的,为什么说会根据阈值threshold变化,如下表所示:
真实样本y标签 | 预测的分值 | 0.0阈值y | 0.2阈值y | 0.5阈值y | 1阈值y |
---|---|---|---|---|---|
1 | 0.8 | 1 | 1 | 1 | 0 |
0 | 0.96 | 1 | 1 | 1 | 0 |
1 | 0.4 | 1 | 1 | 0 | 0 |
1 | 0.1 | 1 | 0 | 0 | 0 |
0 | 0.15 | 1 | 0 | 0 | 0 |
1 | 0.7 | 1 | 1 | 1 | 0 |
从上表中可以看出,会根据阈值的变化,输出不同的label标签,则相应的指标计算都会发生变化,计算TPR和FPR如下:
不同的阈值 | TPR | FPR |
---|---|---|
0.0 | 4 4 + 0 = 1.0 \frac{4}{4+0}=1.0 4+04=1.0 | 2 2 + 0 = 1.0 \frac{2}{2+0}=1.0 2+02=1.0 |
0.2 | 3 3 + 1 = 0.75 \frac{3}{3+1}=0.75 3+13=0.75 | 1 1 + 1 = 0.5 \frac{1}{1+1}=0.5 1+11=0.5 |
0.5 | 2 2 + 2 = 0.5 \frac{2}{2+2}=0.5 2+22=0.5 | 1 1 + 1 = 0.5 \frac{1}{1+1}=0.5 1+11=0.5 |
1 | 0 0 + 4 = 0 \frac{0}{0+4}=0 0+40=0 | 0 0 + 2 = 1 \frac{0}{0+2}=1 0+20=1 |
所以根据不同的阈值,( FPR,TPR)会在坐标轴上的不同的点,(1,0)和(0,1)分别代表了模型在某个特定的阈值情况下,全部预测样本为负样本和全部预测样本为正样本。根据不同阈值得到点描述的图像可能形状如下:
1.6 AUC曲线(Area Under the Curve)
理解了ROC曲线,那么我们来看下,什么是AUC。AUC是ROC曲线构成的面积,如下图所示,红色和蓝色曲线分别代表了两个模型的ROC曲线,根据ROC曲线构成的面积大小,也就是AUC,红线曲线AUC要比蓝色曲线AUC大,指标效果会更好,从图的点的含义也可以理解,相同的横轴坐标,纵坐标取值越大,说明FPR一样,TPR越大,模型当然表现越好。
其中绿色虚线形成的三角形面积就是
1
2
\frac{1}{2}
21,一般随机模型效果差不多AUC可以到达0.5,所以我们评估的模型AUC一般是在0.5~1之间,越大效果越好。
2 回归任务 (Regression)
预测的labe是数值类型,则评估指标一般通过数值差距进行度量,主要通过均方误差(MSE)和绝对误差(MSE)进行度量。
2.1 MAE误差
根据真实label值和模型预测的值进行绝对误差评估,值越小,说明模型预测越精准,MAE的数学表达式如下:
M
A
E
=
1
n
∑
j
=
1
n
∣
y
i
−
y
^
i
∣
MAE=\frac{1}{n}\sum_{j=1}^n\begin{vmatrix} y_i-\hat{y}_i \end{vmatrix}
MAE=n1j=1∑n∣∣yi−y^i∣∣
2.2 MSE误差
均方误差一样也是评估两个数值的差距,数学表达式如下:
M
S
E
=
1
N
∑
i
=
1
N
(
y
i
−
y
^
i
)
2
MSE = \frac{1}{N}\sum_{i=1}^N( y_i-\hat{y}_i)^2
MSE=N1i=1∑N(yi−y^i)2
3 排序任务 (Rank)
在排序任务中,模型对候选集进行打分,得到一个排序结果,再与真实的排序结果进行对比,通过一些指标来衡量排序模型的预测效果。
3.1 Mean Reciprocal Rank (MRR)
对于给定query
q
q
q以及与该query相关的文本
D
=
{
d
1
,
d
2
,
d
3
,
d
4
,
d
5
}
D=\{d_1,d_2,d_3,d_4,d_5\}
D={d1,d2,d3,d4,d5},假设文本与query的相关性程度依次递减已经排好序,若排序模型预测的顺序是
r
a
n
k
=
{
d
2
,
d
3
,
d
1
,
d
5
,
d
4
}
rank=\{d_2,d_3,d_1,d_5,d_4\}
rank={d2,d3,d1,d5,d4},则与该query第一相关的文本
d
1
d_1
d1所在的排序位置记为
r
(
q
)
=
3
r(q)=3
r(q)=3,则对于这个query的MRR指标计算结果为:
MRR
=
1
r
(
q
)
=
1
3
\text{MRR} = \frac{1}{r(q)} =\frac{1}{3}
MRR=r(q)1=31
该指标对应的值越大越好,且取值范围为
[
1
N
,
1
]
[\frac{1}{N},1]
[N1,1],其中
N
N
N表示的是排序的总文本数量。
3.2 Mean Average Precision (MAP)
MAP是排序模型效果评估的另外一个评价指标,首先我们定义在位置 k k k的精确率记为: P @ k P@k P@k,具体计算结果为:
P
@
k
(
q
)
=
#
{
relevant documents in the top k positions
}
k
P@k(q) = \frac{\#\{\text{relevant documents in the top k positions}\}}{k}
P@k(q)=k#{relevant documents in the top k positions}
则平均精确率AP定义如下:
A
P
(
q
)
=
∑
k
=
1
m
P
@
k
(
q
)
⋅
l
k
#
{
relevant documents}
AP(q) = \frac{\sum_{k=1}^m P@k(q) \cdot l_k}{\#\{\text{relevant documents\}}}
AP(q)=#{relevant documents}∑k=1mP@k(q)⋅lk
其中
m
m
m表示的是query
q
q
q对应的所有文本数量,
l
k
l_k
lk取值为{0,1},判断在第
k
k
k个位置上的文本是否与query相关,相关为1,不相关为0。则最后的MAP指标表示所有query的平均AP值:
MAP
=
1
m
∑
i
m
A
P
(
q
i
)
\text{MAP} = \frac{1}{m}\sum_i^m AP(q_i)
MAP=m1i∑mAP(qi)
3.3 Normalized Discounted Cumulative Gain (NDCG)
前面的测量标准主要基于是否相关的0-1 binary决策,而DCG可以对包含多个相关性程度的类别进行测评,同时将位置衰减因子也定义到了计算公式里,假设对于query
q
q
q,排序模型预测的相关性结果从高到低排序后记为
π
\pi
π,则在位置k的DCG指标定义如下:
D
C
G
@
k
(
q
)
=
∑
r
=
1
k
G
(
π
(
r
)
)
η
(
r
)
DCG@k(q) = \sum_{r=1}^kG(\pi(r))\eta(r)
DCG@k(q)=r=1∑kG(π(r))η(r)
其中
π
(
r
)
\pi(r)
π(r)表示的是排序
π
\pi
π整个list在位置为
r
r
r的原始文档相关性等级,
G
(
⋅
)
G(\cdot)
G(⋅)是对文档相关性计算出的新的等级分值,一般计算函数如下:
G
(
π
(
r
)
)
=
2
π
(
r
)
−
1
G(\pi(r)) = 2^{\pi(r)} -1
G(π(r))=2π(r)−1
其中
η
(
r
)
\eta(r)
η(r)表示的是位置衰减因子,通常计算公式如下:
η
(
r
)
=
1
log
2
(
r
+
1
)
\eta(r) = \frac{1}{\log_2(r+1)}
η(r)=log2(r+1)1
所以从DCG公式可以看出,若相关性等级越高的文档排序越靠后,则DCG分值越低,且将位置信息融入到了计算公式里。则归一化的Normalized DCG (NDCG) 指标计算公式如下:
N
D
C
G
@
k
(
q
)
=
1
Z
k
∑
r
=
1
k
G
(
π
(
r
)
)
η
(
r
)
NDCG@k(q) = \frac{1}{Z_k}\sum_{r=1}^kG(\pi(r))\eta(r)
NDCG@k(q)=Zk1r=1∑kG(π(r))η(r)
其中
Z
k
Z_k
Zk是归一化因子,其计算值为DCG@k的最大值,也就是query对应的理想排序list (相关性等级越高,排在越靠前),可以看出NDCG@k(q)的取值范围为[0,1]。
3.4 Rank Correlation (RC)
RC指标是衡量模型预测的一个排序list
π
\pi
π与groudtruth标准排序list
π
l
\pi_l
πl之间的相关性。用带权重的Kendall等级相关系数作为评估准则,评估两个排序list中两两不一样的pairwise排序一致性情况,计算公式定义如下:
R
C
=
∑
u
<
v
w
u
,
v
(
1
+
s
g
n
(
(
π
(
u
)
−
π
(
v
)
)
(
π
l
(
u
)
−
π
l
(
v
)
)
)
)
2
∑
u
<
v
w
u
,
v
RC = \frac{\sum_{u<v}w_{u,v}(1+sgn((\pi(u) - \pi(v))(\pi_l(u) - \pi_l(v))))}{2\sum_{u<v}w_{u,v}}
RC=2∑u<vwu,v∑u<vwu,v(1+sgn((π(u)−π(v))(πl(u)−πl(v))))
其中sgn是符合函数,定义如下:
s
g
n
=
{
1
x
>
0
0
x
=
0
−
1
x
<
0
sgn=\begin{cases} 1\quad x>0 \\ 0 \quad x=0 \\ -1 \quad x<0 \end{cases}
sgn=⎩⎪⎨⎪⎧1x>00x=0−1x<0
从上述公式可以看出,模型预测的排序list中两两pair对相对排序顺序与真实groudtruth中两个pair相对排序顺序一致的pair对越多,则RC计算的分值越大。