本文主要介绍一个搜索和推荐中常用的一个评估指标:















(Normalized Discounted Cumulative Gain)直接翻译为归一化折损累计增益,这个指标通常是用来衡量和评价排序的准确性,比如:推荐系统通常为某用户返回一个item列表,假设列表长度为




,这时可以用











评价该排序列表与用户真实交互列表的差距。







的两个思想:

  • 1、高关联度的结果比一般关联度的结果更影响最终的指标得分(高相关性的物比低相关性的物品更有用,低相关性的物品比不相关的物品更有用)

  • 2、有高关联度的结果出现在更靠前的位置的时候,指标会越高(理想情况下,推荐的列表是按照高相关性进行倒排的,即相关性越高的物品排的越靠前越好)

想要搞明白







,需要从Cumulative Gain开始说起。

Cumulative Gain,CG







累计增益)是搜索结果列表中所有文档的分级相关性得分的总和。





只考虑了搜索结果列表中文档的相关性,而没有考虑这些文档在结果列表中的位置因素。给定一个结果列表的排序位置










可定义为:




























其中









表示第




位置上的相关性。

比如用户在某电商平台搜索「手机」,搜索列表的前5条中分别为:苹果手机、小米手机、华为手机、荣耀手机、OPPO手机,而用户倾向于选择的是荣耀,这时候无论荣耀手机排在前5位中的任何一位,对于累计增益来讲都是等价的。但是对于搜索、推荐系统而言,最好的结果是将荣耀手机排在前面。因此也就引出了折损累计增益。

Discounted Cumulative Gain








折损累计增益)提出在搜索结果列表的较低位置上出现相关性较高的文档时,应该对评测得分施加惩罚。惩罚比例与文档的所在位置的对数值相关。给定一个结果列表的排序位置











可定义为:

早前,对数衰减因子的使用,除了衰减比较平滑外,在理论上并没有其他合理的解释。后来,Wang等人在其







对使用对数衰减因子提供了理论解释。作者表明,对于每一对本质上不同的排序函数,







在决定哪一个更好上具有一致性。

当然还有一种比较常用的公式,它能用来增加相关度影响的比重:

后一个公式在工业中被广泛使用,如多数的搜索公司和 Kaggle 等数据科学竞赛平台等。

当相关性得分只有 0 或 1 两个值时,即















,上述两个公式是等价的。

Normalized Discounted Cumulative Gain









归一化折损累计增益)认为搜索结果列表的长度因 Query 而异,仅使用






对不同 Query 性能的比较不具有一致性。因此,对于所选择的




值,每个位置的 CG 应该在 Query 上做规范化。首先对语料库中所有相关文档的相关性排序,再通过位置




生成最大可能的






,也称为理想












。对于一个 Query ,







的计算如下:
































其中







为理想状态下的






,其计算如下:

其中,









 表示语料库中相关性最高的




个文档列表(已按相关性排序)。

可对所有 Query 的







值取平均,以此来获得搜索引擎 Ranking 算法的平均性能。请注意,在一个完美的 Ranking 算法中,




















是相等的,此时的







值为 1.0。此外,







值域为








,它是一个相对值,因此是可 cross-query 比较的。

使用







的主要难点是,当只有部分相关性反馈可用时,无法获取理想的










NDCG计算示例

依旧以上文中提到的用户搜索「手机」返回的五个商品为例。假设其对应的相关性为:

苹果手机:3、小米手机:2、华为手机:4、荣耀手机:5、OPPO手机:1

则对应的的





值为


















而对应的






为:

i rel_i 2^{rel_i}-1 log_2(i+1) (2^{rel_i}-1) / (log_2(i+1))
1 3 7 1 7
2 2 3 1.58 1.89
3 4 15 2 7.5
4 5 31 2.32 13.35
5 1 1 2.58 0.39

接下来看







,计算







首先要计算一下







,假设召回的有6个商品,第6个商品的相关性为 3,那么在理想情况下,按照相关性排序为:5、4、3、3、2、1。

计算











i rel_i 2^{rel_i}-1 log_2(i+1) (2^{rel_i}-1) / (log_2(i+1))
1 5 31 1 31
2 4 15 1.58 9.46
3 3 7 2 3.5
4 3 7 2.32 3.01
5 2 3 2.58 1.16

Python实现NDCG

import numpy as npdef get_dcg(rec_list):log_2 = np.log2(np.arange(2, len(rec_list) + 2))print(log_2)mi = np.power(2, rec_list) - 1print(mi)dcg = np.array(mi / log_2).sum()print(np.array(mi / log_2))print(dcg)return dcgif __name__ == "__main__":rec_list = [3, 2, 4, 5, 1]sort_rec_list = [5, 4, 3, 3, 2]print(rec_list)print(sort_rec_list)dcg = get_dcg(rec_list)idcg = get_dcg(sort_rec_list)print("ndcg = dcg / idcg = ", dcg/idcg)

更多干货请点击:
【免费下载】2021年7月热门报告盘点&下载
大数据驱动的因果建模在滴滴的应用实践联邦学习在腾讯微视广告投放中的实践如何搭建一个好的指标体系?如何打造标准化的数据治理评估体系?2021年中国数据中台研究报告强化学习在招聘推荐冷启动中的应用实践如何利用NLP与知识图谱处理长句理解?【干货】电商知识图谱构建及搜索推荐场景下的应用推荐系统架构与算法流程详解
【实践】微博推荐算法实践与机器学习平台演进.pdf某视频APP推荐详解(万字长文)数据分析从理念到实操白皮书.pdf哔哩哔哩推荐策略分析与思考关注我们

省时查报告

专业、及时、全面的行研报告库

长按并识别关注

NDCG介绍、实现及在推荐系统中的应用实践相关推荐

  1. 【实践】SimSvr在微信推荐系统中的应用实践

    作者:sauronzhang.flashlin.fengshanliu,微信后台开发工程师 1. 背景 在一些推荐系统.图片检索.文章去重等场景中,对基于特征数据进行 k 近邻检索有着广泛的需求: 支 ...

  2. 为什么微信推荐这么快?SimSvr在微信推荐系统中的应用实践

    作者:sauronzhang.flashlin.fengshanliu,微信后台开发工程师 1. 背景 在一些推荐系统.图片检索.文章去重等场景中,对基于特征数据进行 k 近邻检索有着广泛的需求: 支 ...

  3. Embedding 技术在推荐系统中的应用实践

    作者:minwxwang,腾讯 PCG 应用研究员 当前主流的推荐系统中,embedding 无处不在,从一定意义上可以说,把 embedding 做好了,整个推荐系统的一个关键难题就攻克了.因此,本 ...

  4. Angel:深度学习在腾讯广告推荐系统中的实践

    分享嘉宾:郭跃超 腾讯 应用研究员 编辑整理:康德芬 出品平台:DataFunTalk 导读:Angel是腾讯自研的分布式高性能的机器学习平台,支持机器学习.深度学习.图计算以及联邦学习等场景.Ang ...

  5. 清华大学崔鹏:因果推断技术最新的发展趋势及在推荐系统中的应用

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 知识图谱在美团推荐场景中的应用实践 搜索场景下的智能实体推荐 机器学习在B站推荐系统中的应用实践 小红书推荐系统 ...

  6. 【实践】GPU在外卖场景推荐系统精排模型预估中的应用实践

    猜你喜欢0.2022年人才市场洞察及薪酬指南 1.[免费下载]2022年1月份热门报告 2.[实践]小红书推荐中台实践 3.微信视频号实时推荐技术架构分享 4.机器学习在B站推荐系统中的应用实践 5. ...

  7. 自动特征工程在推荐系统中的研究

    在先荐推荐系统学院 | 第1期的分享中,第四范式资深研究员罗远飞针对推荐系统中的高维稀疏数据,介绍了如何在指数级搜索空间中,高效地自动生成特征和选择算法:以及如何结合大规模分布式机器学习系统,在显著降 ...

  8. 【推荐实践】腾讯推荐系统中的深度匹配模型

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年6月热门报告合集从零开始了解推荐系统全貌机器学习在B站推荐系统中的应用实践微信视频号实时推 ...

  9. 「构建企业级推荐系统系列」深度学习在推荐系统中的应用

    点击上方"数据与智能","星标或置顶公众号" 第一时间获取好内容 作者 | gongyouliu 编辑 | auroral-L 2016年DeepMind开发的 ...

最新文章

  1. Spring 是如何解决并发访问的线程安全性问题的
  2. java 中的 viewUtils框架
  3. Android预优化那些事
  4. maven helper的使用
  5. iphone导出通讯录到安卓_科技资讯:iPhone苹果手机换新机如何将旧手机的通讯录导出到新的...
  6. 脚本配置文件(通过一个案例解释下什么叫脚本配置文件)
  7. NOIP2020洛谷P7115:移球游戏(分治)
  8. oracle 10 expdp impdp 导入、导出
  9. 信息学奥赛C++语言:哥德巴赫猜想
  10. kotlin mysql数据库_在kotlin中使用mysql行级锁
  11. React-Router4按需加载
  12. 学习总结——工作中的性能测试完整过程
  13. java1.8 64位,jdk 1.8 64位 下载_jdk 1.8 64位 官方版_魅蓝下载
  14. Python进阶-----类组合的方式完成授权
  15. 基于QT的科学计算器
  16. 开发微信小程序:创建小程序实例
  17. 安全总结(一)--一键彻底关闭Win10自带Windows Defender杀毒软件
  18. 请简述计算机安全的定义 现,2012年12月考试计算机基础第三次作业.doc
  19. WPF 定义自己的控件
  20. python图表并生成html_Python3 pyecharts生成Html文件柱状图及折线图代码实例

热门文章

  1. 一次服务器沦陷为肉鸡后的实战排查过程!
  2. Appium UI自动化的那些梗
  3. 移民找老张解析:美国绿卡与美国公民身份的区别
  4. Elasticsearch DSL语法中queries/filters执行顺序探秘
  5. 【JavaScript】JavaScript之快速入门
  6. Excel数据透视表排序
  7. macmini 387 2k显示器尝试hidpi
  8. c语言break语句作用范围,C语言程序设计中break语句分析
  9. python之break语句练习
  10. scipy.misc.imresize的替换方案