推荐算法常见的评估指标

推荐算法评估指标比较复杂,可以分为离线和在线两部分。召回、粗排、精排和重排由于定位区别,其评估指标也会有一定区别,下面详细讲解。

1 召回评价体系

召回结果并不是最终推荐结果,其本质是为后续排序层服务的,故核心在于覆盖率,而不需要追求绝对的准确率。因此精排中常用的AUC等指标,不能用来衡量召回效果。常用的召回评价指标有Hit Rate差异率、Top-K召回率平均点击位置等。

Hit Rate在召回中使用十分广泛。它可以衡量用户点击的物品,被包含在召回前N条结果中的概率。计算过程如公式所示,其中Dtest表示测试集,I为指示函数(Indicator function)。

差异率则用来衡量某一通路与其他通路的差异。特别是新增一路召回时,通常需要能带来一些之前没有被召回的新物品,从而提升整体覆盖率。差异率可以表达为,新增物品数量与该通路召回总数的比值。

Top-K召回率可以衡量召回结果对真实候选的覆盖率。其定义为召回前K个结果中目标物品个数,与目标物品总数的比值。计算过程如公式所示,其中di表示第i个召回结果,T为目标物品集合,N为其总数。

还可以通过用户点击的物品,在召回结果中的平均位置,来评估其效果。其他指标还有NDCGMRRMAP等。另外不可忽视的是,人工体验和评估召回结果,仍然是一个推荐工程师必备的素养。最后,离线评估完成后,还需要在线AB测试,从而确认最终效果。\

2 粗排评价体系

粗排评价体系主要分为三部分:召回能力排序能力效率指标。召回能力可以衡量粗排和精排的一致性,防止粗排排名靠前的物品无法在精排阶段透出。可以通过如下方法计算:选取一个物品候选集,同时给粗排和精排打分并排序,二者Top-K物品重合个数,除以总物品个数,即为召回率。

排序能力的评估可以采用AUC和GAUC等指标,与精排基本一致,此处不再赘述。效率指标主要包括QPS( Queries Per Seconds)和RT(Return Time)等。其中QPS通过计算每秒可以承受的请求数,来衡量模型吞吐率。RT通过计算系统返回结果的平均时间,来衡量模型耗时。

3 精排评价体系

精排相对比较纯粹,主要围绕排序能力效率指标。其中排序能力尤为关键,是整个推荐系统个性化能力和分发精准性的核心。离线评估主要以AUC和GAUC等指标为准。在线评估则通过AB测试来实现。

AUC是衡量二分类模型优劣的一种评价指标,表示预测的正例排在负例前面的概率。AUC的详细讲解,可以参见文章 所向披靡的张大刀:万字长文深入浅出AUC。

AUC表示模型将正样本排在负样本前面的概率,取值范围在0.5到1之间,是衡量模型排序能力的核心指标。但在推荐场景有一定不足。离线评估时,对不同用户的不同样本一起计算 。但在线上预测时,模型只需要保证对同一用户,正样本尽量排在负样本前面,而不用关心不同用户之间的样本顺序关系。基于此经常出现离线 上涨,但上线后业务指标并没有上涨的情况。

基于这一问题,GAUC被引入来解决上述问题。其计算过程如下公式所示。

其中i表示第i个用户,n为用户总数。#imperssioni表示第i个用户的曝光数,也就是正负样本总数。AUCi表示该用户的AUC。总结下来,GAUC计算过程为,先对各用户分别计算他们的AUC,然后利用其样本数进行加权平均。GAUC的计算是用户粒度的,可以保证离在线的一致性。

4 重排评价体系

重排是推荐系统最后一层,除了要考虑算法效率外,还需要兼顾用户体验问题。其中多样性是用户体验十分重要的组成部分。其评估包括客观指标和主观体验,可以从如下角度出发:

(1) 业务指标:例如用户次日留存、用户点击率和人均订单等。通过A/B测试一般可以观测它们。

(2) 多样性指标:可以从用户和物品两个角度评估,例如平均每个用户的曝光类目数,或曝光物品同属一个类目的概率等。通常可以从类目、作者和其他标签等多个维度进行数据分析。

(3) 人工体验:抽样进行人工体验,评估多样性。这是最贴近用户的做法,但主观性偏强,不同人的评估标准不容易统一。人工体验评估,千万不可忽略。算法工程师要经常去体验自己的实际业务场景。

(4) ILS指标:用来评估单个用户的多样性程度。在物品展现列表中,任意两个物品属于同一个类目的概率,值越低代表多样性越好。

系列文章,欢迎关注。

谢杨易个人主页

精通推荐算法1:为什么需要推荐系统(系列文章,建议关注)

推荐算法架构1:召回(系列连载,建议关注)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

_198打家劫舍

_198打家劫舍 原题链接:完成情况:解题思路:_198打家劫舍_198打家劫舍_滚动数组_198打家劫舍_滚动优化 参考代码:错误经验吸取 原题链接: _198打家劫舍 https://leetcode.cn/problems/house-robber/submissions/4964…

中国联通助力吴江元荡生态岸线打造5G+自动驾驶生态长廊

吴江,素有“鱼米之乡”“丝绸之府”的美誉,其地理位置优越,地处太湖之滨。近年来,随着长三角生态绿色一体化发展示范区(以下简称“示范区”)的建立,元荡更是声名大噪,成为众多游客心…

GNU Radio简介及流程图搭建

文章目录 前言一、GNU Radio 是什么?二、GNU Radio 安装三、搭建第一个流程图1、创建 GRC 文件2、添加块3、运行流程图 前言 欢迎来到无线通信的世界,初步接触 GNU Radio,对其学习进行一个记录。 一、GNU Radio 是什么? GNU Rad…

Git 在 SSH 协议下使用代理

关于 Git 使用 Proxy , 网上很多教程讲的都是 如何设置 Http 下 Git 使用 Proxy , 但是并没有提到 SSH 下如何使用 Proxy . 即便有些文章讲到了, 也有不少是 Windows 平台下的, Linux 平台下的很少提及, 所以这里就记录一下, 如何在 Ubuntu 中, 使用 Git 在 SSH 协议下应用代理…

el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)

如下图,我们现在全勾中的有表格管理及其下的子级,而半勾中的有工作台和任务管理及其子级 现在点击保存按钮后,需要将勾中的节点id及该节点对应的父节点,祖先节点的id(包含半选中父节点的id)也都一并传给后端,那这个例子里就应该共传入9个id,我们可以直接将getCheckedK…

SpringMVC 拦截器

文章目录 1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序总结 Spring MVC 拦截器是Spring框架中的一种机制,用于在请求到达处理器之前和渲染视图之前拦截请求,并允许开发者在这两个时间点进行自定义的处理逻辑。拦截器与过滤器&#xf…

openlayers [七] 地图控件controls详解

文章目录 controls 简述常见的 controls 控件使用方法fullscreen 全屏mouseposition 鼠标位置控件overviewmap 鹰眼图scaleline 比例尺控件zoomslider 缩放滑块刻度控件 总结 controls 简述 上篇文章我们将了在地图上的交互(interaction),那些都是一些隐性的需要去…

css3轮播图案例

轮播图案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…

SIFT 算法和SURF(Speeded Up Robust Features)算法的全称是什么,分别是什么意思,分别是用来干什么的?

问题描述&#xff1a;SIFT 算法和SURF(Speeded Up Robust Features)算法的全称是什么&#xff0c;分别是什么意思&#xff0c;分别是用来干什么的&#xff1f; 问题解答&#xff1a; SIFT 算法: 全称&#xff1a; 尺度不变特征变换&#xff08;Scale-Invariant Feature Transf…

AIGC笔记--特征线性调制(FiLM)层的实现

目录 1--特征线性调制层的作用 2--特征线性调制层的实现 3--论文实例 1--特征线性调制层的作用 特征线性调制&#xff08;Feature-wise Linear Modulation&#xff0c;FiLM&#xff09;层是一种神经网络模块&#xff0c;它可以用来实现特征的条件调整。FiLM层的主要功能是对…

数据结构——二叉树的遍历与应用

目录 一.前言 二. 二叉树链式结构的实现 2.1 前置说明 2.2 二叉树的遍历 2.2.1 前序、中序以及后序遍历 前序遍历&#xff1a; 中序遍历递归图&#xff1a; 后序遍历&#xff1a; 2.3节点个数 2.4叶子节点个数 2.5第K层的节点个数 2.6 二叉树查找值为x的节点 2.7 …

[M数学] lc2171. 拿出最少数目的魔法豆(数学+前缀和)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;2171. 拿出最少数目的魔法豆 2. 题目解析 比较简单直接的思路吧&#xff0c;会发现最终的转换成的数组&#xff0c;每个元素要么是 0&#xff0c;不参与结果判断&#xff0c;要么大家都一样。想一想这个都一样…

【计算机网络】子网划分(经典基础练习题)

一、某主机IP地址为110.35.2.68&#xff0c;子网掩码为255.255.255.128&#xff0c;求网络地址&#xff1f; 二、有A类网络18.0.0.0的子网掩码为255.128.0.0&#xff0c;请问可以划分为多少个子网&#xff1f; 并写出每个子网的子网号&#xff1f; 三、将C类网119.181.25.0划分…

.NetCore Flurl.Http 4.0.0 以上管理客户端

参考原文地址&#xff1a;Managing Clients - Flurl 管理客户端 Flurl.Http 构建在堆栈之上System.Net.Http。如果您熟悉HttpClient&#xff0c;那么您可能听说过这个建议&#xff1a;不要为每个请求创建一个新客户端&#xff1b;重复使用它们&#xff0c;否则将面临后…

MySQL篇—性能压测工具mysqlslap介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

oracle rac 12.2.0.1CPU使用率100%

oracle rac 12.2.0.1 CPU使用率100% 查看是集群的java进程"oracle.ops.opsctl.OPSCTLDriver config database"占用cpu 根据进程号查找父进程,发现是/oracle/GRID/122/perl/bin/perl /oracle/GRID/122/tfa/gcmproddb01/tfa_home/bin/tfactl.pl rediscover -mode full …

JUnit 5 单元测试框架

依赖安装 <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope> </dependency>…

Docker 安装 MongoDb4

Docker 安装mongoDb 获取mongodb安装参考 获取mongodb 注意&#xff1a; WARNING: MongoDB 5.0 requires a CPU with AVX support, and your current system does not appear to have that! **hub官网&#xff08;需要梯子&#xff09;&#xff1a;**https://hub.docker.com/_…

WAF攻防相关知识点总结1--信息收集中的WAF触发及解决方案

什么是WAF WAF可以通过对Web应用程序的流量进行过滤和监控&#xff0c;识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击&#xff0c;例如SQL注入、跨站点脚本攻击&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09;等&#xff0c;并采取相…

Node.js基础---fs文件系统 读取和写入

什么是nodejs? 脚本语言需要一个解析器才能运行&#xff0c;JavaScript是脚本语言&#xff0c;在不同的位置有不一样的解析器&#xff0c;如写入html的js语言&#xff0c;浏览器是它的解析器角色。而对于需要独立运行的JS&#xff0c;nodejs就是一个解析器。 每一种解析器都是…