当前位置: 首页 > article >正文

推荐系统常用指标NDCG含义及公式

NDCGNormalized Discounted Cumulative Gain归一化折损累计收益是信息检索和推荐系统中最核心的评价指标之一。在评估基于大语言模型的重排Re-ranking或召回系统时单纯依靠命中率Hit Rate往往不够因为我们需要衡量排在前面的结果是否是最相关的。NDCG 的核心思想建立在两个假设之上高相关性的结果比一般相关性的结果更有价值。排名越靠前的结果被用户看到和点击的概率越大因此其价值权重应该更高。为了彻底搞懂 NDCG我们需要把它拆解为四个步骤CG→\rightarrow→DCG→\rightarrow→IDCG→\rightarrow→NDCG。1. CG (Cumulative Gain) - 累计收益最基础的一步是把推荐列表中前ppp个结果的相关性得分直接相加。CGp∑i1preliCG_p \sum_{i1}^{p} rel_iCGp​i1∑p​reli​ppp: 评估的截断位置例如 NDCG10 中的 10。relirel_ireli​: 列表中第iii个位置物品的真实相关性得分通常是人工标注或从用户反馈中定义的如 0不相关1弱相关2强相关。缺陷CG 没有考虑位置因素。无论最相关的物品是排在第 1 位还是第 10 位算出来的 CG 都是一样的。2. DCG (Discounted Cumulative Gain) - 折损累计收益为了解决位置权重的问题DCG 引入了“折损Discount”机制。排名越靠后折损越严重通常通过对数函数来实现。DCGp∑i1prelilog⁡2(i1)DCG_p \sum_{i1}^{p} \frac{rel_i}{\log_2(i1)}DCGp​i1∑p​log2​(i1)reli​​在一些工业界场景包括像搜索或重排任务中更强调突出强相关物品时通常会采用另一种指数形式的变形DCGp∑i1p2reli−1log⁡2(i1)DCG_p \sum_{i1}^{p} \frac{2^{rel_i} - 1}{\log_2(i1)}DCGp​i1∑p​log2​(i1)2reli​−1​这种变形能够成倍放大高相关性物品的权重从而严惩将极其相关的物品排在后面的策略。3. IDCG (Ideal DCG) - 理想折损累计收益缺陷不同的查询Query或用户交互历史其候选集中的相关物品数量是不同的。比如 Query A 有 10 个相关商品Query B 只有 2 个相关商品。直接对比这两者的 DCG 是不公平的Query A 的 DCG 天生就会更高。为了实现跨 Query 的横向对比我们需要找到这个 Query 下完美的排序状态。IDCG 就是将候选集中的物品按照相关性得分**从大到小降序**重新排列后计算出的完美 DCG 值。IDCGp∑i1∣RELp∣reliideallog⁡2(i1)IDCG_p \sum_{i1}^{|REL_p|} \frac{rel_i^{ideal}}{\log_2(i1)}IDCGp​i1∑∣RELp​∣​log2​(i1)reliideal​​∣RELp∣|REL_p|∣RELp​∣: 表示在理想状态下排在前ppp个位置的最优相关性得分序列。4. NDCG (Normalized DCG) - 归一化折损累计收益最后一步将实际的 DCG 处于理想的 IDCG将指标压缩到[0,1][0, 1][0,1]的区间内。NDCGpDCGpIDCGpNDCG_p \frac{DCG_p}{IDCG_p}NDCGp​IDCGp​DCGp​​NDCG 1意味着推荐模型的排序与完美排序完全一致。NDCG 越接近 0排序效果越差高相关性的物品都被排到了后面。

相关文章:

推荐系统常用指标NDCG含义及公式

NDCG(Normalized Discounted Cumulative Gain,归一化折损累计收益)是信息检索和推荐系统中最核心的评价指标之一。在评估基于大语言模型的重排(Re-ranking)或召回系统时,单纯依靠命中率(Hit Rat…...

启动瓶颈定位实战:Perfetto + Macrobenchmark 一套组合拳

上一篇我们画了一张完整的冷启动全景图,从 Launcher 点击到 Fully Drawn 的七个阶段都拆开看了一遍。理解全景图是前提,但只有全景图是不够的——你知道时间花在了"某个阶段",但具体是哪行代码、哪个初始化拖慢了整个链路&#xff…...

PVE集群“离婚”指南:安全移除节点(pvecm delnode)与故障恢复全记录

PVE集群“离婚”指南:安全移除节点与故障恢复全记录 当PVE集群中的某个节点需要退役时,粗暴地直接关机可能会引发一系列连锁反应。想象一下,你正准备将一台运行了3年的服务器下线更换,却在移除过程中意外触发了集群脑裂——所有虚…...

独立开发一个 App + 小程序,需要花多少钱?

有时候面对甲方的时候,甲方总会说,我就要一个简单的小程序/网站/app 等等 言外之意,就是不想花钱,因为甲方总以为这玩意可简单了,因为他不知道前后端的代码,逻辑和服务器、对象存储的费用,有的…...

ChatGLM3-6B本地部署实测:RTX 4090D单卡支持8并发流式响应

ChatGLM3-6B本地部署实测:RTX 4090D单卡支持8并发流式响应 1. 项目概述 今天给大家分享一个让我眼前一亮的本地AI部署方案——基于ChatGLM3-6B-32k模型的智能对话系统。经过深度重构后,这个系统在RTX 4090D显卡上实现了8并发流式响应,真正做…...

AI 知道我但不主动推荐我:从识别到推荐之间还差哪些关键条件?

如果点名问品牌时 AI 能认出你,换成“预算有限先看哪类供应商”“本地装修先看哪几家公司”时它不带你,这通常不是收录问题,而是推荐层问题。 按刘佬的复盘口径,这类现象最好拆成两步看: AI 有没有认出你。AI 有没有足…...

10兆瓦数据中心年省3000万!液冷的经济账怎么算?

10兆瓦数据中心年省3000万!液冷的经济账怎么算?一个10兆瓦的数据中心,一年电费是多少?答案是——用风冷,要花将近1个亿。但如果换成液冷,这笔钱可以省下2000万到3000万。数据说明:年节省金额的前…...

codex app每次打开重连5次Reconnecting问题解决

原因: 默认是使用websocket协议,在websocket重连等待五次(并且每次的超时时间足足有20s)之后才会切换到可以正常通信的HTTP协议,至于websocket协议为什么不通,可能是代理不支持websocket协议. 方案1: 在.c…...

只需四分钟我会让你变得自信到可怕,从此告别自卑内耗。这不是成功学鸡汤

前沿导读你是否常感觉聚光灯时刻跟着自己,生怕哪里做得不对?你是否因为害怕失败,错过了很多展示的机会?别让误解困住了你。真正的自信,源于清醒的自我认知和主动的行为构建。这篇文章不讲鸡汤,只给你一套可…...

python minikube

## 关于Python和Minikube,一些你可能没细想的细节 最近在容器化和本地开发环境搭建的话题里,Minikube被提到的次数越来越多了。但很多Python开发者第一次接触它时,难免会有些疑惑:这玩意儿和Python开发到底有什么关系?…...

免费获取VMware Workstation Pro 17许可证密钥的终极指南:5000+密钥任你选!

免费获取VMware Workstation Pro 17许可证密钥的终极指南:5000密钥任你选! 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to …...

SQLite数据库C++基础用法

1. 引言 笔者最近在做嵌入式Linux应用项目中需要用到SQLite数据库,因此本期分享一下其基础知识。SQLite 是一个嵌入式、无服务器的轻量级关系型数据库,它以函数库形式直接集成到应用程序中,将整个数据库存储为单个普通文件,无需安…...

Linux系统环境一键检测脚本:快速查看所有已安装的开发工具与版本

作者:尘一不染 | 2026-04-17 ———————————————— 版权声明:本文为CSDN博主「尘一不染」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 在日常的Linux开发或运维工作中,我们…...

llama.cpp部署QWEN3.5-9B和Gemma4-e4b,用Claude Code对比测试

昨天部署了Gemma4:26B和E4B,一是自己显存不够,部署的时候总是爆显存。二是claude code与Gemma4配合有问题,claude爆内存,任务进行不下去。 所以今天我又通过llama.cpp部署了QWEN3.9-9B,并做了些测试。 结论&#xff1a…...

HASH、MAC、HMAC 对比

对比汇总表--**Hash(散列)****MAC(消息认证码)****HMAC(哈希MAC)**全称Hash FunctionMessage Authentication CodeHash-based MAC输入任意长度消息消息 密钥消息 密钥输出固定长度摘要固定长度认证码固定…...

如何在3天内快速上手OpenSPG知识图谱引擎?完整实战指南 [特殊字符]

如何在3天内快速上手OpenSPG知识图谱引擎?完整实战指南 🚀 【免费下载链接】openspg OpenSPG is a Knowledge Graph Engine developed by Ant Group in collaboration with OpenKG, based on the SPG (Semantic-enhanced Programmable Graph) framework.…...

UnSHc深度解析:Shell脚本安全审计与逆向工程的技术实现

UnSHc深度解析:Shell脚本安全审计与逆向工程的技术实现 【免费下载链接】UnSHc UnSHc - How to decrypt SHc *.sh.x encrypted file ? 项目地址: https://gitcode.com/gh_mirrors/un/UnSHc 在Shell脚本安全领域,SHc加密工具因其强大的保护能力而…...

手机银行App模拟器

分享一款银行模拟器,农业银行模拟器,装逼娱乐神器,安卓苹果都支持!功能: 修改余额,自由修改数据,也可以模拟余额冻结和转出失败,功能多多,使用起来也是非常的方便,看图片…...

文件上传1

在日常使用各类网站、APP 的过程中,文件上传是我们每天都会接触的基础功能:更换社交账号头像、发布朋友圈配图、上传学习文档、提交作业文件、上传博客封面图…… 这些场景背后,都是Web 文件上传技术在支撑。一、文件上传核心原理解读在动手写…...

LVGL + SquareLine:嵌入式里「中英两套字串」怎么做(无需完整 i18n 框架)

LVGL + SquareLine:嵌入式里「中英两套字串」怎么做(无需完整 i18n 框架) 适用场景:ESP-IDF + LVGL,界面由 SquareLine Studio 生成;不想维护字符串 ID、gettext、.po 那一套,只希望 中文默认 UI + NVS 记忆语言 + 进屏刷新,英文尽量短以适应小屏。 1. 为什么不搞「正经…...

招聘类 Android 应用开发全栈实践与性能优化

引言 移动互联网时代,招聘平台已成为连接人才与企业的核心桥梁。作为 Android 开发工程师,负责招聘类应用的研发工作,不仅要求扎实的底层技术功底,更需要深刻理解招聘场景下的业务逻辑、用户交互特性以及对性能与稳定性的极致追求。本文将围绕一个招聘类 Android 应用从 0…...

Windows系统安装Node.js教程

Windows系统安装Node.js教程 本文档详细介绍了在Windows系统上安装Node.js的完整步骤,包括下载、安装和验证过程,帮助用户快速搭建Node.js开发环境。 一、Node.js 简介 Node.js 是一个基于 Chrome V8 引擎构建的开源、跨平台 JavaScript 运行时环境,它允许开发者在服务器…...

tinyalsa(0)

先给你一个完整配置 采样率(rate) 48000 声道数(channels) 2(左右声道) 采样格式 16bit(2字节) period_size 480 period_count 4一、先从“声音本…...

数据科学中的Pandas数据框扩展

在数据科学和机器学习的领域中,处理数据结构往往是日常工作的一部分。尤其是当我们需要处理图结构数据时,构建和操作邻接矩阵是常见任务之一。Pandas作为Python中处理数据的强大工具,提供了许多便捷的方法来操作数据框(DataFrame)。本文将探讨如何使用Pandas高效地扩展数据…...

龙虾量化实战法(QClaw)

龙虾量化上手法 如果你只是想快速搭一套能用的量化分析流程,这篇文章就是写给你的。最近市面上这类量化课程真的很多,讲得热闹,卖得也凶,但我个人一直不觉得这东西有多大价值。原因很简单,很多课讲到最后,还…...

关于FLOPs与MACs的说明

关于FLOPs与MACs的说明: 尽管通常被称为"FLOPs",但fvcore的FlopCountAnalysis返回的值实际上代表的是MACs(乘加运算次数)。 正如FlopCountAnalysis的文档字符串(第53行)所述:“我们将…...

算法学习第七天

1. 环形链表 II 总结链表与数组的适用场景差异,提交第一周学习小结 题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,使用整数 pos…...

OpenCore Legacy Patcher终极解决方案:4步完整技术指南让旧Mac焕发新生

OpenCore Legacy Patcher终极解决方案:4步完整技术指南让旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是…...

Unity URP 实战:基于Kajiya-Kay与Marschner的头发着色器深度解析

1. 头发渲染为什么这么难? 第一次尝试做头发渲染的时候,我对着屏幕发呆了整整一天。为什么游戏里的头发看起来总是那么假?这个问题困扰了我很久。后来才发现,头发的光学特性比我们想象中复杂得多 - 每根头发实际上是个微型圆柱体&…...

基于c/c++实现linux/windows跨平台ntp时间戳服务器

目录使用场景c/c源码结果验证windows编译命令linux编译命令服务器输出结果客户端输出结果使用场景 在某些严格要求时间同步很精准的项目中,获取网络ntp时间的时间延时比较大,做滤波处理可能效果也不理想。因此可以搭建一个本地ntp服务器,这样…...