对于传统推荐策略, 我们在验证其效果的时候, 一般会采用以下流程验证其实验效果:
- offline 的评测: 思路基本和传统机器学习的思路类似, 例如在推荐算法中我们直接使用AUC,F2等评估模型效果一样, 线下使用测试数据就能知道算法的初步效果。
- 用户调研实验: 该方式需要人的参与, 例如招一批人, 不告诉他们新老算法的界面或是使用的算法, 然后看用户的行为, 之后使用他们的最终交互, 或是选择判定算法/交互方案的优略。
- 线上实验: 最真实的尝尽, 例如小流量进行A/B test
具体关于评测后续会用专门的文章介绍,此处略去。 此处仅考虑一种特定的评估:关键词推荐系统的相关性评估。
因为baidu 关键词推荐系统是关键词的推荐,所以在很大程度上, 该推荐系统和传统的IR系统有着非常紧密的联系, 评估标准也较为相像。
对于一次推荐,用户进入百度关键词推荐系统交互界面: 关键词推荐系统会主动向用户push推荐的关键词,同时用户可以输入种子query进行查询:
如果将种子query看成是搜索引擎上的query,返回的关键词看成doc, 则问题就转换为搜索引擎的结果评估问题, 一种常用的方式为:NDCG(Normalized Discount Cummulative Gain)
CG
要介绍NDCG,我们首先介绍CG(Cummulative Gain), 其思想比较简单, 就是将相关性的分值累加后, 作为某个query/ 请求结果的分值。
reli 为处于位置i的推荐结果与query的相关性, p代表我们要考察前p个结果。
DCG
CG的一个缺点是CG没有考虑结果处于不同位置对结果的影响,例如我们总是希望相关性高的结果应排在前面,相关性低的结果排在靠前的位置会严重影响用户体验, 所以需要在CG的基础上引入位置影响因素,即DCG(Discounted Cummulative Gain)
即相同的相关性rel,排在对整次检索结果的正向影响,相较于放在后边更大。
NDCG
DCG仍然有其局限之处,即不同的query之间,很难进行横向的评估。例如, 我们评估百度关键词推荐系统, 或是搜索引擎的时候,都不可能仅使用一个query及相应结果进行评估, 一般都是是使用一批query及结果进行评估。 不同的query的评估分数就需要进行归一化。 也即NDCG。
例如我们定义:
其中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)
用于衡量排序在各固定位置的平均准确度, 首先定义
其中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
定义所有query的平均AP即为MAP
Mean Reciprocal Rank(MRR)
Mean Reciprocal Rank(MRR): 如首次出现相关文档的位置为r1,则定义MRR为1/r1。MRR的定义最简单,但只考虑了首次出现相关的文档,没有考虑更多整体的效果,所以我们在项目中没有用。
参考文献:
百度关键词系统评估
http://en.wikipedia.org/wiki/NDCG
可关注微博: 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/