推荐系统三十六式学习笔记:工程篇.效果保证31|推荐系统的测试方法及常用指标介绍

news2024/11/15 16:00:22

目录

  • 为什么要关注指标
  • 推荐系统的测试方法
    • 1.业务规则扫描
    • 2.离线模拟测试
    • 3.在线对比测试
    • 4.用户访谈
  • 常用指标
    • 1.系统有多好?

假设你已经有了自己的推荐系统,这个系统已经上线。

为什么要关注指标

面对推荐系统这样一个有诸多复杂因素联动起作用的系统,要时时刻刻知道它好不好,健不健康,你同样需要掌握一些测试方法及检测指标。

推荐系统的测试方法

我说过你需要有不确定性思维,推荐系统也需要测试,只是它不同于传统的功能测试。传统软件的功能测试,功能的响应是有预期的,点击一个关注按钮,应该有什么响应,是被产品文档明确规定的,也因此在开发功能的时候,可以同步写出测试用例来。反观推荐系统就没那么容易了,你什么都没动,可能两次推荐的结果都有可能不一样。

那么推荐系统要怎么测试呢?与其说推荐系统没有确定性的预期响应,不如说推荐系统的响应维度更高。

因为确定性的功能响应像是一个点,而推荐系统的响应则是高纬空间中的一个区域,而不是一个点。那么是不是推荐系统不需要单元测试了呢?显然也不是。

归纳起来,推荐系统的测试方法有四种:业务规则扫描、离线模拟测试、在线对比测试、用户访谈。

1.业务规则扫描

首先,业务规则扫描本质上就是传统软件的功能测试。确定的业务规则会对应有确定的规则,这些规则就可以翻译成单元测试,像是运行单元测试那样,对推荐系统逐一扫描业务规则。

通常这些业务规则对测试的要求也有软的和硬的两种。前者会对业务规则违反情况做一个基线规定,比如触发几率小于万分之几,在扫描测试时统计触发次数,只要统计触发几率不超过基线,就算合格。

而硬的规则,就是一票否决。例如一些业务黑名单,简直就是高压线,测试时碰不得,碰了就是Bug,就要想办法修正。

除了业务规则,还有一些容易让人忽视的地方,比如绝大多数推荐模型都涉及了数学计算,而数学计算中也有一些潜在的规则不能违反。比如除数不能违0,比如计算机的浮点数精度有限,经过一些指数运算后可能就出现预期之外的结果,还可能一些连续相乘的计算要防止出现0的乘数,类似这些在计算中的潜在业务规则,也需要扫描测试。

2.离线模拟测试

其次,就是在离线模拟测试。这是一种军事演习式的测试。模拟测试当然无法代替真实数据,但是也能暴露一些问题。通常做法是先收集业务数据,也就是根据业务场景特点,构造用户访问推荐接口的参数。

这些参数要尽量还原当时场景,然后拿这些参数数据去实时访问推荐系统,产生推荐结果日志,收集这些结果日志并计算评测指标,就是离线模拟测试。

显然,离线模拟测试是失真的测试,并且测试指标也有限,因为并不能得到用户真实及时的反馈。但是仍然有参考意义。

这些模拟得到的日志可以统称为曝光日志,它可以评测一些非效果类指标,例如推荐覆盖率,推荐失效率,推荐多样性等。关于这些指标具体含义,稍后再讲。那是不是离线模拟测试就是对效果一无所知、无法模拟呢?

也并不是,有一种办法是,利用历史真实日志构造用户访问参数,得到带评测接口的结果日志后,结合对应的真实反馈,可以定性评测效果对比。

比如,可以评测推荐结果的TopK的准确率,或者排序效果AUC。这些模型效果类指标,虽然不能代表最终关注的商业指标,但是两者之间一般存在一定的相关性。通常来说TopK准确率高,或者AUC高于0.5越多,对应的商业化指标就会越好,这是一个基本假设。通常离线模拟评测每一天的模型效果指标,同时计算当天真实的商业指标,可以绘制出两者之间的散点图,从而回归出一个简单的模型,用离线模型效果预估上线后真实商业指标。

3.在线对比测试

第三种测试方法就是真正的实战了,那就是ABtest,即在线对比测试,分流量做真实的评测。这需要一个支持流量正交切分的ABtest框架。ABtest在样本充分的前提下,基本上可以定性新的推荐系统是否比老的推荐系统更加优秀。

4.用户访谈

最后一种测试方法就是用户访谈,或者说用户调查。前面三种测试方法,背后的思想是数据驱动。

然而,数据测量的是系统外在表现,并不反映系统原理,而且数据指标是人设计的,是存在主观性和片面性的,人的认知广度和深度各有不同。

因此,除了要紧紧团结在数据驱动这个核心思想周围,还需要深入用户,对用户做最直接的交流,对用户访谈,更重要的意义不是评测推荐系统,而是评测推荐系统的指标,设计是否合理,是否其高低反映了你先预定的设定。

除此之外,通过前面三种测试方法如果得知系统表现的不好,那么结合直接真实的用户调查和访谈,可以为系统优化找到真实原因。

常用指标

推荐系统有很多指标,有很多率。实际上所有的指标就是在回答两个问题:系统有多好,还能有多好?

这两个问题恰恰就是推荐系统里面一个老大难问题的反映:探索利用问题。

系统有多好?这就是想问问:对数据利用得彻底吗?还能好多久?这个问题就是想问问:能探索出用户心得兴趣吗?这样就能继续开采利用了。也好比在职场中看一个人,除了看他现在的经验和解决问题的能力有多强,还要看他学习能力有多强,毕竟世界是变化的。

下面我分别说说这两类指标有哪些。

1.系统有多好?

检测系统到底有多好,其实,也有两类,一类是深度类,一类是广度类。

把数据看做是一座矿山,推荐系统是一个开采这座矿山的器械,系统有多好这个问题就是在关心开采的好不好,所以其实就看现在开采的深不深,开采的到不到位。广度指标就是指在矿上打满了钻井,而不仅仅盯着一处打井。深度类指标,就是看推荐系统在它的本职工作上做的如何。推荐系统的本职工作就是预测用户和物品之间的连接,预测的方法又有评分预测和行为预测。

因此深度类指标就旨在检测系统在这两个工作上是否做的到位,有针对离线模型的指标,也有在线的指标,下面我分别说一说;

1.评分准确度。通常就是均方根误差RMSE,或者其他误差类指标,反映预测评分效果的好坏。
2.排序。检测推荐系统排序能力非常重要,因为把用户偏爱的物品放在前面是推荐系统的天职。
由于推荐熊输出结果非常个人化,除了用户本人,其他都很难回答哪个好哪个不好,所以通常评价推荐系统排序效果很少采用搜索引擎排序质保,例如MAP,MRR,NDCG.搜索引擎评价搜索结果和查询相关性,具有很强的客观属性,可以他人代替评价,推荐系统评价排序通常采用AUC。
3.分类准确率,这个指标也是针对行为预测的,而行为预测就是分类问题,所以评价准确度就很自然。
在推荐系统中,评价准确度略微特殊,一般评价TopK准确率,与之对应的还有TopK召回率,这里的k和实际推荐系统场景相关,就是实际每次推荐系统需要输出几个结果。

TopK准确度计算方式如下:
如果日志中用户有A、B两个物品有正反馈行为,推荐系统退出一个物品列表,长度为k,这个列表中就与可能包含A、B两个物品中的一个或多个,下面这个表格就说明了TopK准确率和TopK召回率的含义。

在这里插入图片描述
这三个指标,比较直观地反映了推荐系统在预测这件事对数据开采的深度,实际上由于模型不同,还可以有不同的指标,也可以自己设计指标。但这三个指标也属于比较初期的指标,距离最终商业指标还有异地昂的距离。

通常检测推荐系统的商业指标有:点击率,转化率。其实把用户从打开你的应用或者网络开始,到最终完成一个消费,中间要经历数个步骤,也是大家常说的漏斗转化过程。

推荐系统如果在其中某个环节起作用,那么就要衡量那个环节的转化率,这个相比前面三个指标,更加接近真实效果。

除了比列类的商业指标,还要关注绝对量的商业指标,常见的有:社交关系数量,用户停留时长,GMV(成交额),关注绝对数量,除了因为它才是真正商业目标,还有一个原因,是要看推荐系统是否和别的系统之间存在零和博弈情况。

假如推荐系统导流效果提升,搜索引擎导流下降,从整个平台来看,因为整个平台的商业目标并没有那么成绩喜人,也需要警惕。

讲完深度类指标,下面进入广度类指标。
4.覆盖率。这项指标就是看推荐系统在多少用户身上开采成功了,覆盖率有细分为UV覆盖率和PV覆盖率。UV覆盖率计算方法是:
C O V u v = N l > c N u v COV_{uv}=\frac{N_{l>c}}{N_{uv}} COVuv=NuvNl>c

解释一下,首先要定义有效推荐,就是推荐结果长度保证在c个之上,独立访问的用户去重就是UV,有效推荐覆盖的独立去重用户数除以独立用户数就是UV覆盖率。PV覆盖率计算方法类似,唯一区别是计算时分子分母不去重。
C O V p v = N l > c ∗ N p v ∗ COV_{pv}=\frac{N_{l>c}^*}{N_{pv}^*} COVpv=NpvNl>c

5.失效率 。失效率指标衡量推荐不出结果的情况。也分为UV失效率和PV失效率。UV失效率计算方法是:
L O S T u v = N l = 0 N u v LOST_{uv}=\frac{N_{l=0}}{N_{uv}} LOSTuv=NuvNl=0

分子是推荐结果列表长度为0覆盖的独立用户数,分母依然是去重后的独立访问用户数。PV失效率也一样,区别是不去重

L O S T p v = N l = 0 ∗ N p v ∗ LOST_{pv}=\frac{N_{l=0}^*}{N_{pv}^*} LOSTpv=NpvNl=0

6.新颖性

对于用户来说,总是看见相同的内容会让他们审美疲劳,所以对用户来说,推荐的物品要有一定的新颖性。新颖性需要讲粒度,物品粒度。标签粒度,主题粒度,分类粒度等等。每个粒度上 评价用户没见过的物品比例。对于物品级别的新颖性,更多是靠直接过滤保证。

7.更新率
检测结果更新程度。如果推荐列表每天几乎一样,显然不可取,尤其是新闻资讯类,要求每次刷新都不一样,对更新频率要求更高。更新频率可以有很多衡量方式,有一种衡量每个推荐周期和上个周期相比,推荐列表中不同物品的比例。这个周期,可以是每次刷新,也可以是每天。

U P D A T E = △ N d i f f N l a s t UPDATE =\frac{△N_{diff}}{N_{last}} UPDATE=NlastNdiff

总结

推荐系统作为一种AI系统,其测试方法不完全相同于传统软件功能测试。对于推荐系统,也有一定的单元测试,扫描业务规则,对系统做一票否决制,因为这些业务规则定义明确。
除此之外,还要先经历离线模拟,再线上小范围实测,这部分测试就是在践行数据驱动。这部分指标主要在回答系统的两个问题。
1.系统表现有多好?
2.系统还能还多久?
只要系统现在表现好,并且系统生命力强,那么你的推荐系统就是好的推荐系统,这些指标就是在忠实反映这两个侧面的。

但是,光靠数据驱动,又容易走入歧途,还需要常常审视这些指标到底是否真实反映系统状态,所以还需要对用户做调查访谈,深入群众,听取最真实的感受,回来重新看看自己的指标是否合理,是否需要重新设计指标。

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

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

相关文章

C++入门:类和对象(入门篇)

目录 前言 类的定义 1.类定义格式 2.从结构体到类的跨越 3.访问限定符 4.类域 5.类的实例化 类的默认成员函数 1.默认成员函数的定义和学习方向 2.构造函数 3.析构函数 4.拷贝构造函数 5.重载运算符 总结 疑难解答 1.this指针的用法 2.为什么拷贝构造函数的第一个参数必须…

LeetCode 热题 HOT 100 (024/100)【宇宙最简单版】

【哈希表】No. 0128 最长连续序列【中等】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&am…

WPF中RenderTransform,LayoutTransform区别

RenderTransform RenderTransform 是在渲染阶段应用的变换。它不会影响控件的布局,只会影响控件的外观。常用于动画和视觉效果。 • 应用时机:在控件已经完成布局之后。 • 影响范围:仅影响控件的外观,不影响布局。 • 常见用途&…

汇川技术|PLC应用逻辑编程技巧(2)

哈喽,你好啊,我是雷工! 昨天看这块儿内容看到快十二点了,还没看完,今天接着看。 以下为学习笔记。 01 PLC程序实现状态关系 该思路编写程序的要点如下: ①:采用PLC的一个整数型变量作为状态位…

路透社中东门户媒体ZAWYA:自带流量为品牌出海赋能

路透社中东门户媒体ZAWYA:自带流量为品牌出海赋能 随着全球化的不断推进,越来越多的企业开始将目光投向海外市场,寻求更广阔的发展空间。然而,在激烈的市场竞争中,如何让自己的品牌脱颖而出成为一个亟待解决的问题。在这个背景下…

Windows 11系统SQL Server 2016 数据库安装 最新2024教程和使用

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 文件可以关注作者公众号《全栈鍾猿》,发您 安装流程 双击运行 在资源管理器页面如图所示 点击全选-->取消勾选如图所示的3个---》点击下一步 点击下一步 安装完成,如图所示 &a…

USB-HUB电路设计

USB-HUB电路设计 USB-HUB电路是笔者任职电子工程师做的第一块板子,功能为USB3.0的集线器,主芯片采用RTS5411,最多能同时工作四个USB3.0设备。 由于信号有TX.RX,我们很容易将发送端和接收端搞错,毕竟从芯片出来,要经过很多的路径,如USB端子,线材,再到芯片。则芯片出来…

内网渗透—横向移动RDPWinRMWinRSSPN扫描Kerberos攻击

前言 今天仍是横向移动的内容,有些实验能成功,有些实验则各种奇怪的问题导致失败,这都是很常见的。就连小迪在视频中也经常翻车,我们只需要知道原理,以及如何去实现这个攻击行为即可。没必要强求所有的实验都要百分百…

Python3网络爬虫开发实战(8)验证码的识别

文章目录 一、 图片增强:OpenCV1. OpenCV 基础使用2. 滑动验证码缺口识别 二、图片验证码和滑块验证码1. tesserocr2. ddddocr3. 深度学习识别4. 超级鹰打码平台 三、手机验证码的自动化处理 目前,许多网站采取各种各样的措施来反爬虫,其中一…

嵌入式面经篇四——内存管理

文章目录 前言一、内存管理&编程题1、由gcc编译的C语言程序占用的内存分为哪几个部分?2、大小端3、全局变量和局部变量的区别?4、以下程序中,主函数能否成功申请到内存空间?5、请问运行下面的 Test() 函数会有什么样的后果&am…

Anaconda安装jupyter notebook、jupyterlab及体验

Anaconda安装jupyter 1.前言2.创建虚拟环境3.激活虚拟环境4.安装jupyter notebook5.启动6.快捷方式7.jupyterlab插件安装8.报错的处理9.总结1.前言 手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。 说…

87.SAP Transaction SM31 and SM30

目录 1.SM30是什么 2.SM30维护表的前提条件: 3.用途 维护表数据 查看SAP表的配置点 4.SM31和SM30的区别 1.SM30是什么 Transaction code SM30 can be used to display and update table data. The input field on the first screen of SM30 is long enough t…

企业通用报表平台代码审计

1 第三方组件漏洞审计 本项目是基于Maven构建的。对于Maven项目,我们首先从 pom.xml 文件开始审计引入的第三方组件是 否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。 本项目引入的组件以及组件版本整理如下。 组件名称组件版本SpringBoot2.2.4.RELEASEFastjson1.2…

CDP问卷填报手册指南

CDP认证的作用是向消费者和利益相关者提供一个可信的证明,证明该组织正在采取行动,以减少其对气候变化的影响并提高可持续发展。CDP认证是一个独立的评估过程,通过评估组织在应对气候变化和可持续发展方面的表现和策略,评估其对气…

免费下载专利

给大家提供一个可以免费下载专利的地方 链接:https://www.drugfuture.com/cnpat/cn_patent.asp

玩转生产环境全链路压测

一、什么是生产环境全链路压测 生产环境全链路压力测试(Production Environment Full-Link Stress Testing)是一种针对线上系统进行的综合性性能测试方法。这个过程涉及模拟实际用户行为,从用户界面到后端数据库的整个应用链路上施加预定的高…

考拉悠然完成自研国内首台玻璃基Micro LED晶圆量检测设备出货

近日,考拉悠然自主研发的国内首台玻璃基Micro LED晶圆量检测设备正式完成出货,这不仅标志着考拉悠然在Micro LED核心检测技术上的重大突破,也展现了公司在高端制造领域的技术创新能力。 Micro LED显示技术被认为是未来的“终极显示技术”&am…

stm32—GPIO

0. 引入 在单片机产品中,我们常常可以见到三种模块:LCD灯、KEY按键、BEEP蜂鸣器 LED灯: 一个比较常见的LED电路LED0 ---------- 通过控制LED0引脚(电线) 给它一个低电平(低电压),LED灯就会亮 给它一个高电平(高电压),LED灯就会灭 …

Spring——AOP前言(写一个小demo为了好学习AOP)

1.AOP的概念 1.1 AOP简单样例 我们来先通过一个例子来对AOP进行理解,这个例子就是有关Spring的事务的一个样例,有关Spring是怎么实现事务的,这个事务其实本质上就是对于我们代码的一个增强。废话不多说,上程序,请各位…

【Datawhale AI夏令营第四期】魔搭-AIGC方向 Task02笔记 Scepter工具箱, 精读BaseLine代码

【Datawhale AI夏令营第四期】魔搭-AIGC方向 Task02笔记 Task02学习任务: https://linklearner.com/activity/14/10/32 传送门 我们继续看网课,并且在Kimi.AI的帮助下读一下BaseLine示例代码。 网课链接:https://space.bilibili.com/1069874…