第二章:推荐系统评估体系

评估体系,说白了就是推荐系统的「体检报告」。

我见过太多团队,模型上线前拍着胸脯说「效果肯定好」,结果一跑A/B测试,CTR反而降了。为什么?因为离线指标和线上表现,有时候就像两个世界。

这一章,我们就把评估体系拆开揉碎。从离线指标到在线指标,再到A/B测试设计,我会把我在项目中踩过的坑、总结的经验,一次性讲清楚。

2.1 离线评估指标

离线评估,就是拿历史数据来验证模型。好处是快,坏处是——它不一定代表线上真实效果。

我个人习惯,离线指标只看三个:准确率、召回率、AUC。别贪多,这三个够了。

2.1.1 准确率(Precision)与召回率(Recall)

这两个指标,经常被放在一起说。我简单解释一下:

  • 准确率:推荐给用户的物品中,用户真正感兴趣的比例。说白了就是「推得准不准」。
  • 召回率:用户所有感兴趣的物品中,被我们推荐出来的比例。说白了就是「有没有漏掉」。

你想想看,这两个指标其实是矛盾的。你推得越少,准确率可能越高,但召回率就低了。反之亦然。

核心公式:

Precision = TP / (TP + FP)
Recall = TP / (TP + FN)

其中:TP(真正例)、FP(假正例)、FN(假负例)

我的经验: 在电商场景中,我一般把准确率作为主要优化目标。因为用户刷到不感兴趣的商品,流失率很高。但在内容推荐(比如新闻、视频)中,召回率更重要——宁可多推,也别漏掉用户可能喜欢的内容。

2.1.2 AUC(Area Under the ROC Curve)

AUC,是我最看重的离线指标。为什么?因为它不依赖阈值。

准确率和召回率,都需要你设定一个「推荐阈值」。但AUC直接看模型对正负样本的排序能力。说白了,AUC越高,模型越能把用户喜欢的排在前面。

AUC的直观理解:

随机从正样本和负样本中各取一个,模型给正样本打分的概率高于负样本的概率。AUC就是这个概率值。

  • AUC = 0.5:模型等于随机猜
  • AUC = 0.8:模型有80%的概率把正样本排在负样本前面
  • AUC = 1.0:完美排序

避坑指南: 我曾经在一个项目中,离线AUC做到了0.92,团队欢呼雀跃。结果上线后CTR反而下降了。为什么?因为离线数据存在严重的选择偏差——用户只看到了被推荐出来的物品,没看到的物品我们不知道用户是否喜欢。所以,AUC高不代表线上一定好。

2.2 在线评估指标

离线指标再漂亮,最终还是要看线上表现。在线指标,我重点关注两个:CTR和CVR。

2.2.1 CTR(Click-Through Rate,点击率)

CTR = 点击次数 / 曝光次数。这是最直接的指标,用户看到了,点不点?

我个人习惯,CTR至少要分两层看:

  • 整体CTR:所有推荐位的平均点击率。看大方向。
  • 分位CTR:按推荐位置、用户群体、时间段拆分。看细节。

举个例子,首页推荐位的CTR可能是5%,但底部推荐位可能只有0.5%。如果你只看整体,会以为模型不行,其实是位置问题。

2.2.2 CVR(Conversion Rate,转化率)

CVR = 转化次数 / 点击次数。转化可以是购买、注册、下载等。

CTR高不代表CVR高。我见过一个案例,某个推荐位CTR高达15%,但CVR几乎为0。为什么?因为推荐的内容是「标题党」,用户点进去发现货不对板,直接关掉了。

CTR vs CVR 的关系:

指标 关注点 优化方向
CTR 用户是否愿意点击 标题、图片、推荐位置
CVR 用户点击后是否转化 落地页质量、商品匹配度

我的建议: 不要只看CTR或CVR的绝对值。要看趋势。如果CTR在上升但CVR在下降,说明推荐的内容越来越「标题党」了。这时候需要调整策略。

2.3 A/B测试设计

A/B测试,是推荐系统评估的「金标准」。离线指标和在线指标,最终都要通过A/B测试来验证。

但A/B测试不是随便分两组流量就行的。我见过太多团队,A/B测试做了三个月,结果发现两组数据不可比。

2.3.1 流量分割

流量分割,核心原则是:随机、独立、稳定

  • 随机:每个用户进入实验组的概率相同。不能按地域、设备等非随机因素分割。
  • 独立:实验组和对照组之间不能互相影响。比如,不能把同一个用户同时分到两组。
  • 稳定:实验期间,流量分割策略不能变。

避坑指南: 我曾经在一个项目中,按用户ID的奇偶性来分流量。结果发现,奇数ID的用户大多是老用户,偶数ID的用户是新用户。两组用户的活跃度天然不同,A/B测试的结果完全不可信。后来我们改用Hash分桶,才解决了这个问题。

2.3.2 实验周期

实验周期,不能太短,也不能太长。

  • 太短:数据量不够,统计显著性不足。比如只跑一天,可能刚好赶上周末,用户行为异常。
  • 太长:用户习惯可能发生变化,或者模型已经过时了。

我个人习惯,至少跑7天。如果涉及新用户或冷启动,可能需要14天。

2.3.3 统计显著性

A/B测试的结果,不能只看均值。要看p值。

p值 < 0.05,说明两组差异是显著的。p值 > 0.05,说明差异可能是随机波动。

一个简单的判断方法:

如果实验组的CTR比对照组高了0.5%,但p值是0.2,那这个「提升」很可能是假的。别急着上线。

2.3.4 多臂老虎机(Multi-Armed Bandit)

传统的A/B测试,是「先实验,后决策」。但多臂老虎机可以「边实验,边优化」。

说白了,多臂老虎机会动态调整流量分配。表现好的策略,分到更多流量;表现差的策略,分到更少流量。这样既能快速找到最优策略,又能减少试错成本。

我的经验: 多臂老虎机适合流量大、策略多的场景。比如你有10个推荐算法候选,用传统A/B测试要跑很久。用多臂老虎机,可能一周就能找到最优解。

2.4 总结

评估体系,是推荐系统的「眼睛」。没有它,你就是在黑暗中摸索。

  • 离线指标:准确率、召回率、AUC。快速验证模型,但要注意选择偏差。
  • 在线指标:CTR、CVR。关注趋势,而不是绝对值。
  • A/B测试:流量分割要随机,实验周期要足够,统计显著性要验证。

嗯,这一章的内容就到这里。下一章,我们会深入推荐系统的数据工程——没有好的数据,再牛的模型也是白搭。


公众号:蓝海资料掘金营,微信deep3321