农村建设投诉网站首页,怎样提高网站的排名,成功的网络营销事件有哪些,开发一平方赔多少钱原文#xff1a;towardsdatascience.com/normalized-discounted-cumulative-gain-ndcg-the-ultimate-ranking-metric-437b03529f75 推荐系统无处不在。既然你在阅读这篇文章#xff0c;那么 Medium 很有可能在你的动态中推荐了这篇文章。本文将探讨 NDCG – 正规化折现累积增…原文towardsdatascience.com/normalized-discounted-cumulative-gain-ndcg-the-ultimate-ranking-metric-437b03529f75推荐系统无处不在。既然你在阅读这篇文章那么 Medium 很有可能在你的动态中推荐了这篇文章。本文将探讨 NDCG – 正规化折现累积增益这是评估任何推荐系统模型的排序感知指标。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c6f9cae2acb380db1777099e690f1784.png使用 Gemini 生成的图像 AI什么是推荐系统推荐系统帮助用户根据他们的偏好或行为发现相关的项目如产品、个人资料、帖子、视频、广告或信息。这些平台处理数百万个项目显示最相关的项目是提高用户参与度和业务指标的关键。亚马逊、领英、推特、Instagram、Reddit、Spotify、YouTube、Netflix、Medium 和 Quora 等公司在其应用程序中使用推荐系统。这些系统通常是两阶段系统包括检索模型和排名模型。检索模型根据相似性指标从数百万个项目中筛选出最相关的项目并将它们传递给排名模型。排名模型在更细粒度级别对项目进行排序。例如当用户在电子商务应用程序中搜索“蓝色牛仔裤”时检索模型找到类似的项目而基于交互数据例如点击或订单训练的排名模型预测用户参与的可能性。然后根据预测分数按降序显示排序的项目。我们如何评估排名模型为什么是 NDCG准确率、精确率、召回率、F1 分数和 ROC AUC 是流行的机器学习模型评估指标。然而它们是否适合评估排序模型的性能我们感兴趣的是印象的实际输出分数而不是它所属的类别。这些指标将所有预测同等对待并且不考虑项目的排序这在排序任务中是至关重要的。它们以二进制方式衡量相关性这并不充分。排序者需要像NDCG、MRR平均倒数排名或 PrecisionK 这样的指标这些指标可以评估列表中项目的位置和相关性。这些指标更好地反映了系统展示顶级推荐的能力并与业务目标如参与度或转化率相一致这是传统指标所忽视的。我已经多次提到“相关性”了。相关性对于对 NDCG 的直观和数学理解很重要。让我们来理解它。相关性在一个电子商务应用中每个项目的记录印象都有各种交互信号。可能的情况是一个用户点击了项目分享了它将其添加到购物车或者订购了它。例如你获取了一个搜索“蓝色牛仔裤”的用户搜索日志并发现该用户与十个项目进行了交互。他/她点击了展示的第三个项目分享了第四个项目将第八个项目添加到购物车中并最终选择了第七个项目并下了订单。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/36d83466fab155685176bfb9b58a060e.png用户交互日志 | 每种交互类型的相关性分数NDCG 的计算需要你为每种交互类型提供相关性分数。在电子商务中“订单”是最重要的交互。因此我们将其相关性分数设为 4。“添加到购物车”得 3 分而“分享”交互得 2 分。一个“点击”事件分配 1 分。当用户查看项目但没有与之互动时我们将其相关性分数设为 0。请注意将相关性分配给不同的交互是主观的并取决于领域知识。我们将在文章后面讨论这一点。NDCG – 标准化折现累积收益NDCG 是排名质量的衡量标准。它是一个从信息检索中衍生出来的概念。NDCG 的直觉在于衡量排名模型在相关性方面对项目的排序效果重点关注排名靠前的项目对分数的贡献。它强调了两个关键思想职位在排名列表中一个项目出现的位置越高其影响力就越大。用户往往与排名靠前的项目互动更多例如搜索或推荐列表中的前几个结果。排名为 1 的项目比排名为 10 的项目受到的关注要多得多。相关性NDCG 奖励将最相关项目放在列表顶部的模型。它惩罚那些将相关项目排名在列表较低位置的模型因为这些项目不太可能被用户注意到或与之互动。在排名问题中我们计算 NDCGK 来评估排名列表中前K个项目的排名模型质量。NDCGK 衡量模型在排名前 K 位中对最相关项目的排序效果。玩具示例你已经为你的推荐系统训练了两个排名模型Model A 和 Model B。在决定在 A/B 测试中启动哪个模型之前你希望使用 NDCG 指标来评估它们的离线性能。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e9af08a52ff24bec8e1958b5072f26c4.png玩具示例第 1 步 – 模型分数计算首先我们将计算每个项目的模型分数并根据模型分数的降序排列项目。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/17380b6b2b4b9837d2e947d34a09f515.png按 Model A 预测分数降序排列的项目https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b2b7c4673abc9029e7c7457fe8289396.png按模型 B 预测分数降序排列的项目第 2 步 – 累积收益累积收益CG是列表中项目相关度分数的总和。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4f8ea508579cea65aaecb38bc01b8fa9.png累积收益 K如果你正在计算 NDCG10两个列表的 CG10 都将为 12。如果你正在计算 NDCG5模型 A 的 CG5 为 7模型 B 的 CG5 为 10。CG 不考虑项目的位置对所有位置给予相同的权重。接下来是折现累积收益DCG。第 3 步 – 折现累积收益DCG 涉及使用对数折现因子对列表中项目的相关度分数进行加权求和。折现因子根据项目在列表中的位置进行加权。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9d10bc09dec934722842c902e7d9853b.png折现因子以下图表说明了对数折现因子如何赋予顶部位置更高的权重以及权重如何随着位置的增大而平滑降低。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6a89d45a3a215033b201497365ff5937.png对数折现因子与位置图DCGK 是使用以下公式计算的 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7783a21f7ab053e58414443714159154.png折现累积收益 K以下代码片段执行相同的操作 –defget_dcg(rel,k):pos[iforiinrange(1,k1)]discounting_factor[1/np.log(1i)foriinrange(1,k1)]dcgsum([rel[i]*discounting_factor[i]foriinrange(k)])returndcg对于模型 ADCG10 的计算如下 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ea4c6cceca2494aac91a305cc2a57533.png对于模型 ADCG5 的计算如下 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ab7f9c59b7b13f960bfcbd14baf90046.png对于模型 BDCG10 的计算如下 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6a931ac656305666b2843460d6d7e382.png对于模型 BDCG5 的计算如下 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7413c5a20d49698c1f25630b29814da4.png对于模型 A我们得到 DCG10 10.17 和 DCG5 7.96。对于模型 B我们得到 DCG10 10.53 和 DCG5 9.60。对于 K5 和 K10模型 B 的 DCG 比模型 A 好。我们希望通过将模型的 DCG 除以理想排名器获得的 DCG 来归一化模型的 DCG。理想的排名器将项目按相关度分数降序排列。第 4 步 – 理想折现累积收益https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f97fb6c888e3c05f9f7960daa245c0b7.pngIDCGK – 理想 DCGIDCG10 的计算如下 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6bff9957d59d822cdb8db475b447b035.pngIDCG5 的计算如下 –https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/70c9a85bf4c66bb8764f2b436fcb97db.pngIDCG10 等于 11.64IDCG5 等于 11.12。第 5 步 – 归一化折现累积收益https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/57155d2aeae24d177d5bea901e95105b.pngNDCGK – 归一化 DCG通过将 DCG 与理想排名IDCG归一化NDCG 确保了在不同列表或数据集之间比较分数的可比性无论排名列表的长度或相关项目的数量如何都能提供公平的评价。defget_ndcg(rel,k):dcgget_dcg(rel,k)ideal_relsorted(rel,reverseTrue)idcgget_dcg(ideal_rel,k)ndcgdcg/idcgreturnndcg最后我们得到了以下玩具示例的 NDCG 分数——模型 A – NDCG10 0.8737, NDCG5 0.7158模型 B— NDCG10 0.9043, NDCG5 0.8633模型 B 在我们的玩具示例中更好地完成了对项目的排名工作。NDCG5 的大幅差异表明模型 B 在排名前几个结果中最相关的项目方面表现出色。模型 B 的 NDCG5 几乎等于模型 A 的 NDCG10。上述 NDCG 计算代表了一个用户搜索“蓝色牛仔裤”时的单个浏览会话。我们必须在我们的测试数据中考虑多个浏览会话并计算这些会话的平均 NDCG 分数以确保稳健的模型评估。如何选择 K在我们的玩具示例中我们计算了 K5 和 K10 的 NDCGK。K 的选择是主观的取决于领域。在电子商务应用中当用户搜索“蓝色牛仔裤”时他们可能不会滚动到搜索结果的末尾。我们希望确保用户不需要滚动到末尾就能在顶部位置找到他们偏好的商品。计算 K5、10 和 20 等值的 NDCG 是更可取的。在 Instagram 等应用中Reels 部分有无限的内容流最好保持 K20因为用户在一个会话中可能观看 30 个或更少的 reels。在某些应用中对于业务来说可能有一个必须将相关项目排名在前两个位置的模型至关重要。在这种情况下他们将计算 K1 和 2 的 NDCG。MRR 在这里也是一个替代方案。灵活性NDCG 是一个灵活的评估指标。它可以根据推荐系统的需求进行调整。如何设置相关性分数相关性分配在很大程度上取决于推荐系统的目标。相关性分数的分配可以是二元的。在我们的玩具示例中只有“订单”交互是相关的。其他都不是。排名指标如平均倒数排名和平均平均精度只支持二元相关性。NDCG 支持多相关性正如我们所看到的。我们可以制定一种新的策略来分配相关性分数。在我们的玩具示例中我们可以分配指数分数 2⁰-1、2¹-1、2²-1、2³-1 和 2⁴-1分别。这种策略给未查看的交互赋予了指数级增加的重要性增益。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/605aa422d384d085252599e534d48205.png带有指数增益的 DCG对于其他平台例如 Twitter数据科学家可以为“点赞”、“转发”、“分享”和“评论”等互动分配不同的相关性分数。在 Medium 上对于一个主页内容排名模型评估相关性分数可以根据用户在文章上的阅读时间、他们给予的点赞数以及他们是否评论来定义。折扣因子的选择标准的 NDCG 指标使用对数折扣因子来根据项目在列表中的位置分配权重。这种折扣策略对于垂直内容流如 X 上的推文、LinkedIn 上的帖子以及 Medium 上的文章效果良好。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ab2b1153dd7f9c96b2ea14695ccd2c09.pngInstagram 探索页面。图片来源-作者手机截图如果你打开 Instagram 探索部分你会看到一个 5 x 3 的 Instagram 帖子和视频网格。这些帖子被用户点击的可能性相同。在这种情况下第一可见网格中的帖子都可能被分配为位置 1因此权重相等。在第一个网格之后对后续内容流的帖子权重可以逐渐减少。评估指标与真实用户行为更加吻合并能准确反映整个内容流的参与潜力。在线评估NDCG 不仅是一个有用的离线评估指标它在监控生产中的排序模型中也起着至关重要的作用。一旦你的模型部署随着时间的推移跟踪 NDCG 分数可以提供有关推荐系统在实际场景中表现如何的宝贵见解。NDCGK 随时间的下降可能表明用户与模型顶级推荐的互动减少。这种下降可能表明模型已经受到模型/数据漂移的影响是时候重新训练模型了。结论总结来说NDCG 是推荐系统中用于离线和在线评估排序模型的强大且灵活的指标。无论你是在处理电子商务、社交媒体还是内容平台了解如何选择相关性分数、折扣因素和 K 值将有助于使你的模型评估与商业目标保持一致。希望你发现我的文章有见地且有趣。感谢阅读