使用NDCG评估关键词推荐系统的相关性

使用NDCG评估关键词推荐系统的相关性

对于传统推荐策略, 我们在验证其效果的时候, 一般会采用以下流程验证其实验效果:

  1. offline 的评测: 思路基本和传统机器学习的思路类似, 例如在推荐算法中我们直接使用AUC,F2等评估模型效果一样, 线下使用测试数据就能知道算法的初步效果。
  2. 用户调研实验: 该方式需要人的参与, 例如招一批人, 不告诉他们新老算法的界面或是使用的算法, 然后看用户的行为, 之后使用他们的最终交互, 或是选择判定算法/交互方案的优略。
  3. 线上实验: 最真实的尝尽, 例如小流量进行A/B test

具体关于评测后续会用专门的文章介绍,此处略去。 此处仅考虑一种特定的评估:关键词推荐系统的相关性评估

因为baidu 关键词推荐系统是关键词的推荐,所以在很大程度上, 该推荐系统和传统的IR系统有着非常紧密的联系, 评估标准也较为相像。

对于一次推荐,用户进入百度关键词推荐系统交互界面: 关键词推荐系统会主动向用户push推荐的关键词,同时用户可以输入种子query进行查询:

百度关键词推荐页面

 

如果将种子query看成是搜索引擎上的query,返回的关键词看成doc, 则问题就转换为搜索引擎的结果评估问题, 一种常用的方式为:NDCG(Normalized Discount Cummulative Gain)

CG

要介绍NDCG,我们首先介绍CG(Cummulative Gain), 其思想比较简单, 就是将相关性的分值累加后, 作为某个query/ 请求结果的分值。

 \mathrm{CG_{p}} = \sum_{i=1}^{p} rel_{i}

reli 为处于位置i的推荐结果与query的相关性, p代表我们要考察前p个结果。

DCG

CG的一个缺点是CG没有考虑结果处于不同位置对结果的影响,例如我们总是希望相关性高的结果应排在前面,相关性低的结果排在靠前的位置会严重影响用户体验, 所以需要在CG的基础上引入位置影响因素,即DCG(Discounted Cummulative Gain)

 \mathrm{DCG_{p}} = rel_{1} + \sum_{i=2}^{p} \frac{rel_{i}}{\log_{2}(i)}

即相同的相关性rel,排在对整次检索结果的正向影响,相较于放在后边更大。

NDCG

DCG仍然有其局限之处,即不同的query之间,很难进行横向的评估。例如, 我们评估百度关键词推荐系统, 或是搜索引擎的时候,都不可能仅使用一个query及相应结果进行评估, 一般都是是使用一批query及结果进行评估。 不同的query的评估分数就需要进行归一化。 也即NDCG。

例如我们定义:

 \mathrm{nDCG_{p}} = \frac{DCG_{p}}{IDCG_{p}}

其中DCG的定义如上, IDCG为特定query返回的最好结果, 即假设返回结果按照相关性排序, 最相关的结果放在最前面, 此序列的DCG为IDCG。因DCG的值介于 (0,IDCG],故NDCG的值介于(0,1]

具体操作方式

在具体操作中, 可以事先确定query和结果的相关系分级, 例如可以使用 0,1分别表示相关或不相关, 或是这是0~5分别表示严重不相关到非常相关。 相当于确定了rel值的范围。

之后对于每一个query的返回结果给定rel值,然后使用DCG的计算公式计计算出返回结果的DCG值。

使用根据sort后的rel值得序列计算IDCG值, 即可计算NDCG

当然, 对于排序问题,还有其他一些评估标准, 包括MAP,MRR,RC。

 

Mean Average Precision(MAP)

用于衡量排序在各固定位置的平均准确度, 首先定义

P@K

其中k为当前固定位置, Pie为排序队列, l为相关性label队列(l(t)表示位置t的文档的相关性指标)。例如固定k为2, l(1)=1, l(2)=0,则表示第一个文档相关而第二个文档不相关, 则此时P@k(Pie,l) = (1 + 0 )/ 2 = 1/2

Average Precision(AP)

其中m1为位置所有标记为1的document数量, m为和当前query关联的document数量。 AP相当于对每个位置计算P@k;之所以分母为m1,是因为仅当所有位置的P@k为1, 即所有位置及之前的文档均为相关时, AP才会为1

AP

定义所有query的平均AP即为MAP

 Mean Reciprocal Rank(MRR)

Mean Reciprocal Rank(MRR): 如首次出现相关文档的位置为r1,则定义MRR为1/r1。MRR的定义最简单,但只考虑了首次出现相关的文档,没有考虑更多整体的效果,所以我们在项目中没有用。

参考文献:

百度关键词系统评估

http://en.wikipedia.org/wiki/NDCG

用于评估GBRank的python代码

可关注微博: weibo.com/dustinsea

也可直接访问: http://semocean.com

百度关键词工具介绍参见:http://support.baidu.com/product/fc/4.html?castk=11820ss78c2e1602bd140

转载地址:http://semocean.com/%e6%8e%a8%e8%8d%90%e7%b3%bb%e7%bb%9f%e7%bb%8f%e5%85%b8%e8%ae%ba%e6%96%87%e6%96%87%e7%8c%ae%e5%8f%8a%e4%b8%9a%e7%95%8c%e5%ba%94%e7%94%a8/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值