评价一个推荐系统的指标详解!

本文介绍了推荐系统的定义、系统架构及评价方法。推荐系统通过处理用户信息、商品信息和场景信息,建立用户与商品的连接。其架构包括数据处理、模型训练和评估等环节。评价推荐系统时,用户满意度、预测准确率、覆盖率、多样性和新颖性等都是重要指标。此外,还探讨了在线和离线评估的区别以及各种预测和排序相关度量标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:太子长琴,Datawhale成员

本文主要从整体角度介绍推荐系统,先介绍了推荐系统定义与系统架构等背景,然后详细说明如何评价一个推荐系统。

推荐系统简介

推荐系统可以说是机器学习和深度学习应用最广泛的领域,而且预期未来会更加流行和深入。它本质上是为用户和商品或服务之间建立一种连接,帮助用户更高效地享受到服务。

从用户的角度看,用户的个人偏好(兴趣)、历史行为、用户个人属性、用户关系网络等等都可以被称为 “用户信息”;从商品或服务角度看,名称、属性、标签、内容等等都是 “商品信息”;另外,在具体的场景中,用户的选择可能受时间、地点等一系列环境信息影响,这类信息被称为 “场景信息/上下文信息”。

由此,借用王喆老师的描述,可以得出推荐系统要处理的问题形式化定义:对于某个用户 U,在特定场景 C 下,针对商品构建一个函数,预测用户对特定候选商品 I 的效用,并据此对候选商品排序得到推荐列表的问题。定义中的函数在推荐系统中一般被称为 “推荐系统模型”。

推荐系统架构

提到 “系统”,那自然是个有机整体,其中一般会包括多个组成部分。推荐系统从大的层面来看主要包括两个方面:

数据和信息: 用户、场景、商品信息的定义、组成是什么?如何获取信息?如何处理、更新信息?如何传输、存储信息?

模型和算法: 如何选择模型、算法?如何训练?如何更新?如何评估?如何部署推理?

从系统运行的角度看推荐系统,可以参考下面 Netflix 的推荐系统经典架构图:

推荐系统评价方法

推荐系统的评价涉及到多个方面,除了机器学习相关的指标外,还有大量工程、甚至产品和运营方面的指标。

1.用户偏好/满意度

评价系统好坏最直接的方法是让用户投票,选择票数高的。或者也可以通过一些间接指标来衡量,比如购买率、停留时长、转化率等。

使用这种方法有一个注意事项:

该方法假定用户的权重一致,这在实际中很难应用,因为购买多次多个产品的用户显然比只购买过几次产品的用户重要。我们可以给用户分配权重,但如何确定权重并不容易。如果按照一定时间范围内购买金额来衡量,可能存在有着明确品牌偏好的高购买额用户,购买产品时绕过推荐直接定位该产品。相对可操作的方法,可能是首先对用户分组(根据购买额或其他特征),然后对不同分组赋予权重。

一种特例是,偏好系统 A 的用户只是稍微偏好一点点,但偏好 B 的用户非常不喜欢 A。对这种情况,即使偏好 A 的票数高于 B 的,也应该选择 B 而不是 A。

最后,当改进这个系统时,重要的是知道用户为什么偏好某一个。所以将满意度分解成更小的组件有助于系统的改进。

2.预测准确率

即根据推荐模型预测用户偏好的准确性。具体包括:评级准确性、使用准确性和排名准确性。

2.1 评级预测

即预测用户评级(评级高的自然可以推荐)。具体指标包括:

1.均方根误差 RMSE(Root Mean Squared Error):

其中,T 是测试集,u 和 i 分别表示用户和商品 Item,r 表示评级。

2.平均绝对误差 MAE(Mean Absolute Error)

比较RMSE与MAE,RMSE 会不成比例(平方项)地惩罚较大的误差。

在此基础上,还有NRMSE 和 NMAE 是 RMSE 和 MAE 的归一化版本,具体做法是对每一项除以 r_max-r_min;平均 RMSE 和平均 MAE 针对测试集分布不均衡的情况。比如测试集中 Item 的分布不均衡,此时可以分别计算每个 Item 的 RMSE 或 MAE,然后再求所有 Item 的平均值。

3.失真度  d(r', r)

有些时候误差不仅仅取决于幅度,此时可以使用失真度 d(r', r) 来度量。比如有三个等级的某评级系统,123 分别表示 “不喜欢、中立、喜欢”,推荐一个不喜欢的商品还不如不推荐,此时失真度可以这么衡量:d(3,1) = 5, d(2,1) = 3, d(3,2) = 3, d(1,2) = 1, d(2,3) = 1, d(1,3) = 2。意思就是 d(1,3) 比 d(3,1) 误差小,也就是说 “真实值为 3 预测为 1” 要比 “真实值为 1 预测为 3” 好。

2.2 使用预测

这种情况预测的不是用户对具体 Item 的偏好,而是用户可能使用的 Item。此时可以用 PR 来衡量,对应的混淆矩阵计算方法如下:


推荐 未推荐
使用 TP FN
未使用 FP TN

当可以向用户提供的推荐数量是预先确定的时,使用 Precision@N 或 Recall@N,否则使用 P-R 或 ROC 曲线。两者的区别可以参考 Metrics | Yam。

2.3 排序预测

此时关注的是相对顺序,而不是绝对值。有两种方法:一种是定义好一组 Item 的顺序,让系统来预测正确的顺序,然后评估接近程度;另一种是评估系统排序对用户的效用。

Reference Ranking

对第一种方法,我们必须要有一个参考。这个参考可以通过用户的评级来确定;或者通过使用/未使用确定,即,使用过的优于未使用过的,比如跳过播放的曲子和听完的曲子。上面这两种情况,Item 之间是没有区别的,比如两个都是 5 星的电影或都是跳过的曲子,但是我们又需要对它们也进行排序。此时可以使用 Normalized Distance-based Performance Measure(NDPM)来评估。给定参考排序 r_ui 和预测排序 r'_ui,有如下定义:

求和的范围是 1/2 * Nu(Nu - 1),也就是两两 Item 一组,Cu 表示参考排序(Label)中能确定顺序的组数,C+C- 分别表示这些组(即参考排序中能确定顺序的组)预测结果中顺序正确和顺序错误的组数,Cu0 表示参考排序(Label)有序但是预测结果一样(Item 之间无区别)的组数。

最好结果为 0,表示预测到了所有的有序结果;最差结果为 1(不考虑惩罚系数 0.5),表示 Label 中的有序结果要么没预测出来顺序,要么顺序是错的。

有时候,我们明确地知道用户对某些 Item 的真实偏好,此时,如果参考中一组 Item  无序,意味着用户的确不关心它们之间的顺序(比如我们知道用户不喜欢流行音乐,那么跳过的流行音乐之间就应该无序)。因此,预测结果也不应该有序。此时,使用 Spearman ρ 或 Kendall τ 来进行评估。

这里需要注意的是,无序的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值