第6章 推荐系统评测 — 通俗讲解

第6章 推荐系统评测 --- 通俗讲解

对应教材:刘宏志《推荐系统》第6章(PDF:推荐算法-带书签版0403.pdf,目录见 toc.json

前置章节:第2--5章各类推荐算法;评测是检验算法「好不好」的标尺

延伸阅读:Jannach 等第7章 Evaluating recommender systems;Herlocker et al. (2004) 指标综述


章节目录速览

标题 PDF 页
6.1 评测视角 103
6.2 实验方法 104
6.2.1 在线实验 104
6.2.2 用户调查 105
6.2.3 离线实验 106
6.3 评分预测评价指标 107
6.3.1 MAE 和 MSE 107
6.3.2 RMSE、NMAE 和 NRMSE 108
6.4 Top-N 推荐评价指标 109
6.4.1 分类准确度指标 109
6.4.2 ROC 曲线和 AUC 值 110
6.4.3 基于排序的评价指标 113
6.4.4 其他常用评价指标 115
6.5 公开实验数据集 116

一、先搞懂:为什么要专门讲「评测」?

前面几章学了协同过滤、矩阵分解、内容/知识推荐、混合推荐------算法很多,但怎么判断 A 比 B 更好?

推荐系统评测 = 用统一规则衡量:预测准不准、列表有没有用、用户买不买、系统扛不扛得住流量。

生活类比

  • 算法 = 厨师的菜
  • 评测 = 品鉴标准(咸淡、摆盘、上菜速度、顾客复购)
  • 不能只看「评委打分」,还要看 真实顾客在店里会不会点(在线实验)

评测要回答的问题
算法准吗?
用户满意吗?
业务赚钱吗?
系统能上线吗?
离线指标 MAE / P@N
调查 / 在线 A/B
CTR / 转化率 / GMV
延迟 / 覆盖率


二、6.1 评测视角 ------ 从谁的眼睛看「好」?

同一套推荐,不同角色关心的东西不同:

视角 关心什么 典型指标
研究者 / 算法 预测误差、排序质量 MAE、RMSE、NDCG、F1
产品 / 用户 列表是否有用、是否多样 点击率、停留时长、满意度问卷
业务 / 平台 收入、留存、长尾曝光 转化率、GMV、复购率
工程 能否实时算出来 QPS、延迟、覆盖率

关键认识(Netflix 赛后的教训):

  • RMSE 降 10% ≠ 用户一定更爱看
  • 离线指标高,在线 A/B 可能没提升甚至下降(只推安全热门片)
  • 好系统要在 准确度、多样性、新颖性、可解释性 之间权衡

两类推荐任务 → 两类指标(全章主线):

任务 系统输出什么 主要用第几节指标
评分预测 「你会给这部电影打 4.2 分」 6.3 MAE / RMSE
Top-N 推荐 「为你推荐这 10 部」排序列表 6.4 Precision / NDCG 等

第2章邻域 CF 两种用法、第3章矩阵分解、第5章加权混合,都要先明确评的是 哪一种任务


三、6.2 实验方法 ------ 数据从哪来、实验怎么做

三种方式 由易到难、由便宜到贵 ,工业界通常 离线筛算法 → 在线验业务
候选方案
补充主观感受
6.2.3 离线实验
6.2.1 在线实验
6.2.2 用户调查

3.1 6.2.3 离线实验(最常用)

做法 :用历史数据(用户--物品评分/点击表),划分训练集和测试集,算法在训练集上学,在测试集上算指标。

优点

  • 可重复、成本低、可快速对比几十种算法
  • Netflix Prize、论文复现都靠这个

缺点(必须知道):

  1. 未评分 ≠ 不喜欢 :矩阵里空白可能是「没看过」,离线常当负样本 → 假阳性惩罚推荐系统。
  2. 分布漂移:历史数据是旧的,用户口味会变。
  3. 无法测多样性、惊喜感等体验指标。

稀疏度(教材 Formula 7.1 思想):

sparsity = 1 − ∣ R ∣ ∣ U ∣ × ∣ I ∣ \text{sparsity} = 1 - \frac{|R|}{|U| \times |I|} sparsity=1−∣U∣×∣I∣∣R∣

MovieLens 1M 稀疏度约 0.96,即 96% 格子是空的------CF 难的原因之一。

划分方式

方法 说明
Hold-out 随机切一部分用户/评分做测试
K 折交叉验证 分 K 份,轮流当测试集,取平均
Leave-one-out 每个用户留 1 条评分测试,其余训练(最费算力、小数据常用)
按用户划分 每个用户内部划训练/测试(All-but-N / Given-N)

按用户的两种切法

  • All-but-N :每人留 N 条做测试,其余训练 → 适合比 分类指标(每人测试集一样大)。
  • Given-N :每人训练集固定 N 条 → 适合比 预测准确度(每人训练信息一样多)。

流程口诀:划分数据 → 训练模型 → 对测试集预测 → 算 MAE 或 Top-N 指标 → 多折取平均。


3.2 6.2.1 在线实验(最可信的业务验证)

做法 :在真实产品 上对流量做 A/B 测试------用户随机进 A 版或 B 版推荐,看业务指标。

指标 含义
CTR 推荐位点击率
转化率 点击后购买/播放比例
人均时长 / GMV 停留、成交额
留存 次日是否还来

优点 :反映真实行为,最接近「好不好用」。
缺点:周期长、有业务风险;需足够流量才有统计显著性。

注意 :曾用推荐的用户 vs 没用过的用户,直接比购买率属于 准实验,可能有自选择偏差(爱买的人更爱点推荐)。


3.3 6.2.2 用户调查(补「体验」)

做法:实验室或问卷------满意度、信任度、是否觉得「惊喜」、任务完成时间等。

适合评:

  • 可解释性有没有帮助
  • 知识推荐里的对话是否好用
  • 音乐推荐的新颖感(Celma 等用户研究)

缺点:样本小、主观、和真实付费行为可能不一致。


3.4 三种方法怎么选?

阶段 建议
算法研发 离线 + 公开数据集
上线前 小流量在线 A/B
体验/交互设计 用户调查 + 在线结合

四、6.3 评分预测评价指标

适用:协同过滤评分预测矩阵分解Netflix Prize(比 RMSE)。

4.1 6.3.1 MAE 和 MSE

设测试集上预测分为 (\hat{r}{u,i}),真实分为 (r{u,i})。

MAE(平均绝对误差) ------ 最常用、最好解释:

MAE = 1 ∣ T ∣ ∑ ( u , i ) ∈ T ∣ r ^ u , i − r u , i ∣ \text{MAE} = \frac{1}{|T|} \sum_{(u,i) \in T} | \hat{r}{u,i} - r{u,i} | MAE=∣T∣1(u,i)∈T∑∣r^u,i−ru,i∣

例子 :真实评分 [5, 3, 4],预测 [4.5, 3.5, 2]

误差 |0.5| + |0.5| + |2| = 3 → MAE = 3/3 = 1.0

MSE(均方误差)

MSE = 1 ∣ T ∣ ∑ ( u , i ) ∈ T ( r ^ u , i − r u , i ) 2 \text{MSE} = \frac{1}{|T|} \sum_{(u,i) \in T} (\hat{r}{u,i} - r{u,i})^2 MSE=∣T∣1(u,i)∈T∑(r^u,i−ru,i)2

对大误差 惩罚更重(差 2 分比差 1 分「罚得更狠」)。


4.2 6.3.2 RMSE、NMAE、NRMSE

RMSE(均方根误差)

RMSE = MSE \text{RMSE} = \sqrt{\text{MSE}} RMSE=MSE

  • Netflix 大赛官方指标就是 RMSE
  • 同样强调大误差,且与评分量纲一致(还是「分」)

MAE vs RMSE 怎么选?

MAE RMSE
对大误差 一视同仁 更敏感
典型场景 一般论文、稳健比较 Netflix、竞赛
直观 「平均差几分」 「惩罚离谱预测」

NMAE / NRMSE(归一化)

NMAE = MAE r max ⁡ − r min ⁡ \text{NMAE} = \frac{\text{MAE}}{r_{\max} - r_{\min}} NMAE=rmax−rminMAE

把 1--5 分制和 1--10 分制压到 0--1 附近,跨数据集可比。


4.3 评分预测的局限

用户实际看到的是 Top-N 列表 ,不是「某部电影 4.2 分」。

可能出现:MAE 很好,但 Top-3 里一个用户真正喜欢的都没有 (教材 Table 7.4 例子)。

所以 Top-N 任务必须另用 6.4 指标。


五、6.4 Top-N 推荐评价指标

流程通常:

  1. 把评分 ≥ 4(阈值可调)的测试物品标为 相关(正样本)
  2. 算法输出 Top-N 推荐列表
  3. 看列表里「相关」命中多少

混淆矩阵(教材 Figure 7.1)

text 复制代码
                    用户实际喜欢?
                 是(相关)      否(不相关)
推荐列表里有    TP 命中       FP 误推
推荐列表里没有  FN 漏推       TN

离线评测时:没评过分的物品常当「不相关」 → 推荐了新片可能被算 FP,这是离线指标的系统性偏差。


5.1 6.4.1 分类准确度指标

Precision@N(准确率):推荐列表里有多少是用户真喜欢的?

P @ N = 命中的相关物品数 N P@N = \frac{\text{命中的相关物品数}}{N} P@N=N命中的相关物品数

Recall@N(召回率):用户喜欢的测试物品里,被推荐到了多少?

R @ N = 命中的相关物品数 测试集中相关物品总数 R@N = \frac{\text{命中的相关物品数}}{\text{测试集中相关物品总数}} R@N=测试集中相关物品总数命中的相关物品数

例子 :测试集里用户喜欢 4 部(相关),推荐 Top-5 命中 2 部

→ P@5 = 2/5 = 0.4 ,R@5 = 2/4 = 0.5

矛盾:N 越大,Recall 往往↑、Precision 往往↓(推荐得越多,越容易捞到喜欢的,但也混进更多无关的)。

F1:Precision 和 Recall 的调和平均:

F 1 = 2 ⋅ P ⋅ R P + R F_1 = \frac{2 \cdot P \cdot R}{P + R} F1=P+R2⋅P⋅R

Hit Rate(命中率):至少命中 1 个相关物品的用户比例------「有没有推中过」。

hitrate u = { 1 hits u > 0 0 else \text{hitrate}_u = \begin{cases} 1 & \text{hits}_u > 0 \\ 0 & \text{else} \end{cases} hitrateu={10hitsu>0else

适合看 冷启动/稀疏用户 能否推得动。


5.2 6.4.2 ROC 曲线和 AUC 值

把推荐看成 二分类 :相关=正类,不相关=负类。对每个候选物品有一个 预测相关概率或得分,从高到低扫阈值,得到多组 (FPR, TPR)。

符号 含义
TPR(真正率) 相关物品中被判为相关的比例 ≈ Recall
FPR(假正率) 不相关却被判为相关的比例

ROC 曲线 :横轴 FPR,纵轴 TPR;曲线越往 左上角 凸越好。

AUC(曲线下面积):

  • AUC = 1:完美
  • AUC = 0.5:相当于随机猜
  • 适合比较 不同算法整体排序能力,不绑死某一个 N

通俗理解:随机抽一个「用户喜欢的」和一个「不喜欢的」,模型给喜欢的打分更高的概率 ≈ AUC。

Top-N 场景也可用,但更常见于 隐式反馈 (点击/购买=1)或 二分类推荐


5.3 6.4.3 基于排序的评价指标

分类指标只问「在不在 Top-N」,不问 排第几。工业界排序/搜索更常用:

AP(Average Precision):对每个相关物品,看排在它前面的精度,再平均。

MAP@N(Mean AP):所有用户 AP 的平均------搜索/推荐论文常见。

NDCG@N(归一化折损累积增益) ------ 最常用排序指标之一

  • 相关物品打 增益 gain(如 相关=1,不相关=0 或多级)
  • 排在越靠前,权重越大(折扣 (\log_2))
  • 理想最优排序 归一化到 0--1

D C G @ N = ∑ i = 1 N 2 r e l i − 1 log ⁡ 2 ( i + 1 ) , N D C G = D C G I D C G DCG@N = \sum_{i=1}^{N} \frac{2^{rel_i} - 1}{\log_2(i+1)}, \quad NDCG = \frac{DCG}{IDCG} DCG@N=i=1∑Nlog2(i+1)2reli−1,NDCG=IDCGDCG

直觉:相关片放第 1 位 ≫ 放第 10 位;NDCG 奖励「把喜欢的顶上去」。

MRR(平均倒数排名):第一个相关物品排名的倒数的平均------「第一个对的出现在第几位」。

指标 关注点
Precision@N 列表干净程度
Recall@N 漏没漏掉喜欢的
NDCG@N 排序位置质量
MRR 第一个命中要多靠前

Rank score / Lift index(教材 7.4.2):按位置指数衰减给命中加权,思想与 NDCG 类似。


5.4 6.4.4 其他常用评价指标

不能只追准确度,否则推荐全是爆款。

指标 含义 越高/越低越好
用户覆盖率 能给出非空推荐的用户比例 高(但要配合准确度)
物品/catalog 覆盖率 被推荐过的物品占全库比例 长尾场景希望 ↑
多样性 ILS 列表内物品两两相似度均值 越低越多样
新颖性 Novelty 推的是否用户没见过的小众物 视产品而定
惊喜度 Serendipity 既相关又出乎意料 难量化,常用户研究

例子 :只推热榜 Top-10 → Precision 可能还行,但 覆盖率极低、ILS 极高(列表同质),业务长期受伤。


六、6.5 公开实验数据集

做离线实验的「标准考场」:

数据集 领域 规模(约) 稀疏度 说明
MovieLens 100K 电影 943 用户, 1.6K 电影, 10万评分 ~0.98 教学入门首选
MovieLens 1M 电影 6K 用户, 3.9K 电影, 100万评分 ~0.96 论文最常见
MovieLens 10M 电影 7万用户, 1万电影 ~0.99 更大规模
Netflix Prize 电影 48万用户, 1.7万电影, 1亿评分 ~0.999 竞赛数据;极稀疏
Amazon / BX 图书等 百万级 极稀疏 跨域、评论文本
Last.fm 音乐 隐式播放 --- 隐式反馈
Jester 笑话 稠密 ~0.45 小物品数

使用建议

  • 学第2--3章:MovieLens 100K/1M
  • 对标 Netflix:RMSE + Netflix 子集
  • 内容/混合:MovieLens + IMDB 侧信息(类型、演员)
  • 知识推荐:Entree 餐厅(会话/约束)

GitHub 教材实现:LiuHongzhi-PKU/RSBook 各章 data 目录。


七、离线实验完整示例(串起 6.2 + 6.3 + 6.4)

场景:矩阵分解预测评分 + Top-10 推荐列表。

text 复制代码
1. 读入 MovieLens 1M
2. 按用户 80% 训练 / 20% 测试(或 5-fold)
3. 训练 MF 模型
4. 评分预测任务:对测试集 (u,i) 预测 → 算 MAE、RMSE
5. Top-N 任务:对每个用户隐藏测试集物品,预测未见过物品得分 → 取 Top-10
   → 相关定义:测试集中 rating≥4
   → 算 Precision@10、Recall@10、NDCG@10
6. 换协同过滤 / 混合模型重复 → 对比表格
7. (可选)t 检验看差异是否显著

八、指标选型速查表

你的算法主要做... 优先指标
评分预测(第2.2.2、第3章) MAE、RMSE
Top-N 列表(第2.2.1、第3.3) Precision@N、Recall@N、NDCG@N
隐式反馈(点击/购买) AUC、Hit Rate、NDCG
是否覆盖长尾 Catalog Coverage、多样性
上线决策 在线 CTR/转化率 + 离线 NDCG 参考

不要 :只报一个 MAE 就说「系统很好」;:任务 + 指标 + 数据集 + 划分方式一起写清楚。


九、与前几章的衔接

章节 评测时常见做法
第2章 CF MovieLens;比 MAE 或 P@N;用户/物品 CF 对比
第3章 MF Netflix/MovieLens;RMSE 竞赛传统
第4章 内容 无评分场景用 P@N、内容相似度召回评测
第5章 混合 混合前后 MAE/NDCG 是否提升;在线 A/B 更关键
第6章 统一评测语言
第7章 排序学习 直接优化 NDCG 等排序目标(下一章)

十、本章小结(背诵版)

  1. 评测视角:算法 / 用户 / 业务 / 工程,目标不同指标不同。
  2. 实验方法:离线(快)→ 在线 A/B(真)→ 调查(体验)。
  3. 评分预测:MAE 稳健,RMSE 惩罚大误差(Netflix)。
  4. Top-N :Precision、Recall、F1、Hit Rate;排序用 NDCG/MAP/MRR
  5. ROC/AUC:二分类整体判别能力。
  6. 其他:覆盖率、多样性,防「只会推爆款」。
  7. 数据集:MovieLens 入门,Netflix 大规模稀疏。
  8. 陷阱:未评分当负样本、只优化 RMSE、离线好在线差。

十一、常见误区

误区 正解
MAE 低 = 推荐好 Top-N 还要看 P@N、NDCG
离线高就一定上线 必须 A/B
Recall 越高越好 N 很大时 Recall 虚高,要一起看 P
只报一个指标 准确度 + 覆盖率/多样性
测试集随机打乱用户 常按用户或时间切,防泄漏

十二、面试题速记

  1. 离线 vs 在线评测?

    离线用历史数据、可复现;在线用真实流量、看 CTR/转化。

  2. MAE 和 RMSE 区别?

    RMSE 对大误差更敏感;Netflix 用 RMSE。

  3. Precision 和 Recall 区别?

    P:推荐的里多少对的;R:喜欢的里捞到多少。

  4. NDCG 解决什么问题?

    考虑排序位置,前排命中权重更大。

  5. AUC 含义?

    随机正负样本对,正样本得分高于负样本的概率。

  6. 为什么需要覆盖率、多样性?

    防止只推热门、列表同质化、长尾饿死。

  7. Leave-one-out 适用场景?

    用户少、要尽量用满数据训练。


十三、延伸阅读

  • Herlocker, J. L. et al. (2004). Evaluating collaborative filtering recommender systems.
  • Shani, G. & Gunawardana, A. (2011). Evaluating recommendation systems.(综述)
  • 本书 第7章 :直接学 排序学习(优化 NDCG 等)
  • 本书 第6章习题 :可用 p20 风格手写 MAE/P@N 小例子自测

文档风格与 p21_第5章_混合推荐系统.mdp19_4_基于内容和知识的推荐.md 一致。

相关推荐
Old Uncle Tom2 天前
推荐算法应用举例
算法·机器学习·推荐算法
zhishidi4 天前
第5章 混合推荐系统 — 通俗讲解
推荐算法
阿牛大牛中5 天前
多模态生成式推荐技术脉络-MQL4GRec-MACRec-SynGR
llm·推荐算法·生成式推荐
zhongerzixunshi5 天前
标准化赋能:解读 ISO20000 信息技术服务管理体系
推荐算法
月诸清酒11 天前
63-260516 AI 科技日报 (X推荐算法开源,核心驱动转向Grok模型)
人工智能·算法·推荐算法
别说话写代码12 天前
推荐算法模型sparse和dense在结构和训练以及优化上有什么区别
推荐算法·sparse特征·dense特征·特征区别·特征更新方式
那个_少年14 天前
显著性检验解释
推荐算法
爱喝雪碧的可乐15 天前
2026 腾讯广告算法大赛优秀方案启示:行为条件化多模态自回归生成推荐摘要
算法·数据挖掘·回归·推荐系统·推荐算法
袁雅倩199716 天前
当吸尘器、筋膜枪都用上Type-C,供电方案该怎么选?浅谈PD取电芯片ECP5702的应用
c语言·开发语言·支持向量机·动态规划·推荐算法·最小二乘法·图搜索算法