推荐搜索之指标体系

这章来介绍一下如何评估你搜索以后的结果好坏呢?从而定义算法优化的方向。对于比较粗糙的评估方法如下。

P=检索出相关文档数检索所有文档数R=检出相关文档数数据库中相关文档数P=\frac{检索出相关文档数}{检索所有文档数} \\ -- \\ R=\frac{检出相关文档数}{数据库中相关文档数}

看着形式是不是很熟悉,就是经常看到的准确率和召回率。
下面形式化的表达出来。

a表示被检索出的与查询相关的 文献数量;
b表示被检索出的与查询无关的文献数量;
c表示与查询相 关,但是没有被检索出的文献数量

P=aa+bR=aa+cE=ba+bQ=ca+cP=\frac{a}{a+b} \\ R=\frac{a}{a+c} \\ E=\frac{b}{a+b} \\ Q=\frac{c}{a+c} \\

P是准确率,Q是召回率,E是误检率,Q是漏检率。

靠前文档评估

不知道你发现了没有,通过上面的评估我们是能够得到一个粗糙的评估,但是对于排序来讲,顺序十分重要,如果在数量上虽然占优,但是排序都是靠后的,那么这个质量也是不过关的,所以一般会采用下面的方式评估。

MRR

MRR(Mean Reciprocal Rank)是指多个查询的排名的均值,是国际上通用的对搜索结果进行评价的指标。假设有两次查询,第一次查询的第一个相关文档的排序是2,第二次查询的第一个相关文档的排序是5,那个根据这两次查询对搜索结果进行评价,计算方法是: 1/2(1/2+1/5)=0.35。

MRR=1Qi=1Q1rankiMRR=\frac{1}{Q} \sum_{i=1}^{Q}\frac{1}{rank_{i}}

rankirank_{i}表示第i个查询的第一个正确答案的排名,Q表示查询的次数。

DGG

对于网络搜索评价来说,DCG(Normalized Discounted Cumulative Gain)是较为常用的方法。
这种方法基于两个假设:

  1. 高相关性的文档比边缘相关的文档更重要;
  2. 一个相关文档的排序越靠后,对用户的价值就越低,因为它们很少被用户查看。

在介绍DCG之前,先描述一下CG(Cumulative Gain),其表示前p个位置累计得到的增益,relirel_{i}表示第i个文档的相关度等级,比如2表示非常相关,1 表示相关,0表示无关。

DGp=i=1PreliDG_{p}=\sum_{i=1}^{P} rel_{i}

通过观察DGpDG_{p}的计算过程能够看出其实这个方法对于排序的顺序仍然不敏感,所以比较直观的方法就是加上惩罚因子

DCGp=i=1Prelilog2i+1DCG_{p}=\sum_{i=1}^{P} \frac{rel_{i}}{log_{2}^{i+1}}

还有一种表达形式是

DCGp=i=1P2reli1log2i+1DCG_{p}=\sum_{i=1}^{P} \frac{2^{rel_{i}}-1}{log_{2}^{i+1}}

由于每个查询语句所能检索到的结果文档集合长度不一,p值会对 DCG的计算有较大的影响,因此不能对不同查询语句的DCG求平均,需要进行归一化处理。而nDCG是一个相对比值,这里使用DCG除以IDCG进行归一化处理。

IDCGp=i=1rel2reli1log2i+1IDCG_{p}=\sum_{i=1}^{rel} \frac{2^{rel_{i}}-1}{log_{2}^{i+1}}

其中,|rel|表示结果按照相关度从大到小排序,取前p个结果, 即按照最优的方式对结果进行排序。

进一步的评估指标为

NDCG=DGGIDCGNDCG=\frac{DGG}{IDCG}

RMSE和R方

RMSE和MAE原来已经讲了很多啦,就不再多说啦。MAE是看平均偏差,而RMSE对相差比较大的比较敏感,也就是说RMSE是对模型靠谱程度衡量。

R2=1(yyr)2(yrym)2R^{2}=1-\frac{\sum(y-y_{r})^{2}}{\sum (y_{r}-y_{m})^{2}}

y是预测值,yry_{r}是真实值,ymy_{m}则是均值.R2其实是用 平方误差/平方差。这样做的好处在于R2可以简单直接地评价预测值与

真实值的耦合程度,即R2=0时,模型与真实结果几乎不拟合;R2=1时,
模型与真实结果几乎全拟合。同时,R2还解决了RMES和MAE中样本波动的问题。

MAP和MRR

MAP(Mean Average Precision,平均正确率),其中AP的计算方法

AP=k=1n(P(k)×rel(k))NrelAP=\frac{\sum_{k=1}^{n}(P(k) \times rel(k))}{N_{rel}}

k为检索结果队列中的排序位置;P(k)为前k个结果的准确率$$\frac{N_{rel}}{N}$$,N表示总文档数量;rel(k)表示与位置k的文档是否相关,相关为1,不相关为0;NrelN_{rel}表示相关文档数量。

MAP即对将多个查询对应的AP求平均。MAP是反映系统在全部相关 文档上性能的单值指标。系统检索出来的相关文档越靠前,MAP就可能 越高。

MAP=q=1QAP(q)QMAP=\frac{\sum_{q=1}^{Q}AP(q)}{Q}

Q为查询的数量。
MRR(Mean Reciprocal Rank,平均倒数排名)是依据排序的准确 度,对查询请求响应的结果进行评估。

推荐系统中AUC

这里在给出一个例子说明在推荐系统中AUC的指标是如何计算的。

样本编号 真实分类 预测值
A 1 0.4
B 1 0.8
C 0 0.2
D 0 0.4
E 0 0.5

以真值A、B为例。
以A为正样本形成的正负样本对为(A, C), (A, D), (A, E),指示函数值分别为1,0.5,0;
以B为正样本形成的正负样本对为(B, C), (B, D), (B, E),指示函数值分别为1,1,1。

当A为正例,且预测得分大于C的负例,那么积一分,相等记0.5分,错误记0分。

AUC=1+0.5+0+1+1+12×3=34AUC=\frac{1+0.5+0+1+1+1}{2 \times 3}=\frac{3}{4}

这种方法就把模型的整体准确性记录下来啦。

GAUC

AUC反映整体样本间的排序能力,表示正样本得分比负样本得分高的概率,对样本不区分用户地计算整体样本的AUC。
GAUC实现了用户级别的AUC计算,在单个用户AUC的基础上,按照点击次数或展示次数进行加权平均,消除了用户偏差对模型的影响,更准确的描述了模型的表现效果:

GAUC=i=1nwi×AUCii=1nwiGAUC=\frac{\sum_{i=1}^{n} w_{i} \times AUC_{i}}{\sum_{i=1}^{n} w_{i}}

其中权重w既可以是展示次数(impression)也可以是点击次数(clicks)。n是用户数量。

举个很简单的例子,假如有两个用户,分别是甲和乙,一共有5个样本,其中+表示正样本,-表示负样本,我们把5个样本按照模型A预测的score从小到大排序,得到 甲-,甲+,乙-,甲+,乙+. 那么实际的auc应该是 (1+2+2)/(32)=0.833, 那假如有另一个模型B,把这5个样本根据score从小到大排序后,得到 甲-,甲+,甲+,乙-,乙+, 那么该模型预测的auc是(1+1+2)/(32)=0.667.

那么根据auc的表现来看,模型A的表现优于模型B,但是从实际情况来看,对于用户甲,模型B把其所有的负样本的打分都比正样本低,故,对于用户甲,模型B的auc是1, 同理对于用户乙,模型B的auc也应该是1,同样,对于用户甲和乙,模型A的auc也是1,所以从实际情况来看,模型B的效果和模型A应该是一样好的,这和实际的auc的结果矛盾。所以能够看出来单纯看AUC是不能看清楚对于用户级别的模型优劣的。

多样性评估

推荐系统的评估除了关注普通的准确召回以外还关心结果的多样性,也就是对用户探索,这类评估的方法是计算所有推荐结果的相似度,相似度较低表示多样性的指标较好。

总而言之

通过这样的介绍,你应该已经了解了对于排序算法的评估方法,在你的工作中遇到对非单一结果的问题是不是就能马上使用上呢?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×