文章目录
一、简介
评价一个搜索引擎,或者说信息回溯的系统的好坏,有许多指标。一般来说,我们会从召回速度和召回功效Effectiveness(准确与否)两个方面来评价。本文将着重基于后者评价一个搜索引擎的好与坏。回溯的准确与否可以是一个True or False的反馈,也可以是一个介于0-1之间相关度的反馈。对于二元反馈,我们可以使用Precision,Recall等指标评价系统功效。对于非二元反馈,我们可以使用NDCG等评价指标。
二、二元检测评估指标
2.1 精确率Precision & 召回率Recall
Precision和Recall是广泛用于统计学的度量值。假设文档集合中的文档在混淆矩阵中可以分为四类:True Positive(被检索且相关的文档),True Negative(未被检索且不相关的文档),False Positive(被检索但不相关的文档),False Negative(未被检索但相关的文档)。
Predict\Actual | F | T |
---|---|---|
F | TN | FN |
T | FP | TP |
那么Precision和Recall可以表示为
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
Precision=\dfrac{TP}{TP+FP}
Precision=TP+FPTP
R
e
c
a
l
l
=
T
P
T
P
+
F
N
Recall=\dfrac{TP}{TP+FN}
Recall=TP+FNTP
除了Precision和Recall,还有Fallout指标,是Recall的反向指标,用于评价不相关的物品有多少被检索。
F
a
l
l
o
u
t
=
F
P
T
N
+
F
P
Fallout=\dfrac{FP}{TN+FP}
Fallout=TN+FPFP
在一般搜索引擎中,返回的相关文档是有数量限制的,这个数量
k
k
k一般可以控制。假设相关文档集合为
R
R
R,对于一个返回
k
k
k个文档的推荐系统来说,我们可以用topK指标衡量。
P
r
e
c
i
s
i
o
n
k
=
∣
r
∈
R
:
r
≤
k
∣
k
Precision_k=\dfrac{|r\in R: r\le k|}{k}
Precisionk=k∣r∈R:r≤k∣
R
e
c
a
l
l
k
=
∣
r
∈
R
∣
∣
R
∣
Recall_k=\dfrac{|r\in R|}{|R|}
Recallk=∣R∣∣r∈R∣
这里特别说一下,在现实搜索引擎中,相关文档集R是很难全部获取的,我们有两种方法进行采样。一种是Sampling,通过在海量文档中提取少部分文档,通过人力筛选出相关的文档;另一种是biased Sampling,在海量文档中使用不同的回溯算法,获取到数个相关文档集合 R 1 , R 2 , … R_1, R_2, \dots R1,R2,…,然后将这些相关文档集合取交集 R 1 ∩ R 2 ∩ … R_1\cap R_2\cap \dots R1∩R2∩…,最后在交集中通过人力筛选出相关的文档。
2.2 PR曲线
一般来说,越高的Precision,其阈值越高,检索到的相关文档占总相关文档数目越少。反之,越低的Precision,其阈值越低,检索到的相关文档占总相关文档数目越多。所以Precision和Recall是一个此消彼长的指标。这里我们可以用k值大小替代阈值的概念(涵盖越少的文档意味着阈值越高),以下图为例,可以直观地观察Recall和Precision值的关系:
在离散系统中,对某一Recall值,难免有Precision值会缺失,所以一般我们会对PR图进行插值。在Recall值为i的Precision如果缺失,一般就会取下一个Recall值对应的Precision值作为插值。譬如上图,Recall为0.5的Precision值缺失,用Recall=0.6的Precision值0.76作为插值。插值后的PR图如下:
2.3 AUC-ROC
ROC全称the Receiver Operating Characteristic曲线,它是关于真阳率(TPR)和伪阳率(FPR)的曲线。TPR跟Recall的定义很像,代表正样本中预测为正的样本比例,FPR是负样本中预测为正的样本比例。TPR和FPR可以用混淆矩阵中的定义来表示
T
P
R
=
T
P
T
P
+
F
N
TPR=\dfrac{TP}{TP+FN}
TPR=TP+FNTP
F
P
R
=
F
P
F
P
+
T
N
FPR=\dfrac{FP}{FP+TN}
FPR=FP+TNFP这两个指标也跟阈值有关,阈值越高,TP在TP+FN中的占比也越低,FP在FP+TN中的占比越低,随着阈值降低,TP的占比和FP的占比会越来越高,最后FN的值会变为0,因为所有的文档集都被索引到了,所以最终TPR和FPR的值都会逼近1。
ROC曲线就是上述关系的曲线,如下图所示:
如果模型的ROC为一条(0,0)到(1,1)的直线,意味着模型对真实类别是0还是1的样本,模型预测为1的概率都是一样的,类似于抛硬币,但我们希望在FPR小的同时,TPR能尽量高,在(0,0)-(1,1)上方的面积恰好能代表这个。所以我们用曲线下面积Area Under Curve来衡量预测模型的优劣。AUC的值=对ROC曲线下方的图形的面积,可以通过积分求得。
2.4 平均精确率AP
精确率和召回率只能衡量检索性能的一个方面,最理想的情况下,Recall和Precision都比较高。如何评价这个整体?可以用PR曲线的面积进行计算,求得Precision的期望均值。公式如下:
A
P
=
∫
0
1
P
(
r
)
d
r
=
∑
k
=
1
k
=
K
P
r
e
c
i
s
i
o
n
k
∗
Δ
R
e
c
a
l
l
k
AP=\int_0^1P(r)dr=\sum_{k=1}^{k=K}Precision_k*\Delta Recall_k
AP=∫01P(r)dr=k=1∑k=KPrecisionk∗ΔRecallk
2.5 MAP
Mean Average Precision, 顾名思义就是对不同查询的AP值取平均。检测一个搜索引擎的性能,常常会用不同的query对它进行测试,每个测试结果都能计算出一个AP值,把所有AP值取平均就是系统的MAP,即 M A P = ∑ q ∈ Q A P ( q ) ∣ Q ∣ MAP=\dfrac{\sum_{q\in Q}AP(q)}{|Q|} MAP=∣Q∣∑q∈QAP(q)
2.5 综合评价指标
精确率和召回率的相互矛盾性,使得我们需要综合地考虑他们,这里提供两个方法,一个是E-measure,一个是F-score
E-measure表示精确率和召回率的加权平均值,其中一个值为0时,E值为1, α \alpha α为Precision值的权重。E值的计算公式为 E = 1 − 1 α / P + ( 1 − α ) / R E=1-\dfrac{1}{\alpha/P+(1-\alpha)/R} E=1−α/P+(1−α)/R1
F-score是Precision和Recall的加权调和平均,
β
\beta
β为参数。
F
β
=
(
1
+
β
2
)
P
R
β
2
(
P
+
R
)
F_\beta=\dfrac{(1+\beta^2)PR}{\beta^2(P+R)}
Fβ=β2(P+R)(1+β2)PR
当
β
=
1
\beta=1
β=1时,就是最常见的F1,即
F
1
=
2
P
R
P
+
R
F_1=\dfrac{2PR}{P+R}
F1=P+R2PR
三、连续值的评估指标
在推荐系统中,相关系数常常不是一个二元检测,而是一个评分检测,即每一个document都有相关程度,相关程度在0-1之间。我们搜索引擎的目标不仅仅是要检索相关的文档,也要将相关文档以相关程度降序呈现给用户。
3.1 NDCG
NDCG全称Normalized Discounted Cumulative Gain,在NDCG中文档相关度可以用多个等级进行打分。我们用DCG表示文档相关度和排名之间的关联程度,拥有相关度高的文档应该具有更高的排名,DCG计算公式为 D C G p = ∑ i = 1 p r e l i l o g 2 ( i + 1 ) DCG_p=\sum_{i=1}^p\dfrac{rel_i}{log_2(i+1)} DCGp=i=1∑plog2(i+1)reli
由于DCG受文档相关度大小的影响,所以我们用Ideal DCG进行正则化,IDCG是对于一个查询语句,DCG能达到的最大值,即
I
D
C
G
p
=
∑
i
=
1
∣
R
E
L
∣
2
r
e
l
i
−
1
l
o
g
2
(
i
+
1
)
IDCG_p=\sum_{i=1}^{|REL|}\dfrac{2^{rel_i}-1}{log_2(i+1)}
IDCGp=i=1∑∣REL∣log2(i+1)2reli−1
归一化后的DCG值,即NDCG值公式如下:
n
D
C
G
p
=
D
C
G
p
I
D
C
G
p
nDCG_p=\dfrac{DCG_p}{IDCG_p}
nDCGp=IDCGpDCGp
下图是一个例子,假设搜索引擎对某个查询返回的前6个文档集和对应的相关度下表所示,则
D
C
G
6
DCG_6
DCG6和
N
D
C
G
6
NDCG_6
NDCG6的计算可以表示为: