【推荐算法】推荐系统的评估

一、离线评估的主要方法

1. Holdout检验

Holdout检验是基础的离线评估方法,它将原始的样本集合随机划分为训练集和验证集两部分,比如70%训练集,30%测试集(但现在很多机器学习框架、深度学习框架中都增加了验证集,即将整个数据集分成三份,70%训练集,10%验证集,20%测试集)。

Holdout检验的缺点也很明显,即在验证集上计算出来的评估指标与训练集和测试机的划分有直接关系,如果仅进行少量Holdout检验,则得到的结论存在很大的随机性(在划分数据集的时候尽量保证其随机性)。

2. 交叉检验

2.1 k-fold交叉验证

先将全部样本划分成 k 个大小相等的样本子集,依次遍历这 k 个子集,每次都把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估,最后将所有 k 次的评估指标的平均值作为最终的评估指标,在实际经验中,k 经常取值为 10。

2.2 留一验证

每次留下1个样本作为验证集,其余所有样本作为测试集,样本总数为n ,依次遍历所有 n 个样本,进行 n 次验证,再将评估指标求平均得到最终指标。在样本总数较多的情况下,留一验证法的时间开销极大,事实上,留一验证是留 p 验证的特例,留 p 验证是指每次留下 p 个样本作为验证集,而从 n 个元素中选择 p 个元素 有 C n p C_n^p Cnp 种可能,因此它的时间开销远远高于留一验证,故很少在实际中使用。

3. 自助法

不管是holdout检验还是交叉检验,都是基于划分训练集和测试集的方法进行模型评估的,当样本规模比较小时,将样本集进行划分,会进一步缩小训练集,有影响模型的训练效果。

自助法(Bootstrap)是基于自助采样法的检验方法:对于总数为n 的样本集合,进行 n 次有放回的随机抽样,得到大小为 n 的训练集,在 n 次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集进行模型验证,就是自助法的验证过程。

二、离线评估的指标

1. 准确率

分类准确率是指分类正确的样本占总样本个数的比例:
A c c u r a c y = n c o r r e c t n t o t a l Accuracy=\frac{n_{correct}}{n_{total}} Accuracy=ntotalncorrect
准确率是分类任务中比较直观的评价指标,但其优缺点也明显:类别分布不均匀时,占比大的类别往往成为影响准确率的主要因素(极端的情况比如正样本 1%,负样本 99%时)。

如果将推荐问题看作一个点击率预估式的分类问题,那么在选定一个阈值划分正负样本的前提下,可以用准确率评估推荐模型。而在实际的推荐场景中,更多是利用推荐模型得到一个推荐序列,因此更多是使用精确率和召回率这一对指标来衡量一个推荐序列的好坏。

2. 精确率和召回率

精确率(Precision)是分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
召回率(Recall)是分类正确的正样本个数占真正正样本个数的比例。

在排序模型中,通常没有一个确定的阈值把预测结果直接判定为正样本还是负样本,而是采用 Top N 排序结果的精确率(Precision@N)和召回率(Recall@N)来衡量排序模型的性能,即认为模型排序的Top N的结果就是模型排定的正样本,然后计算精确率和召回率。

精确率和召回率是矛盾统一的两个指标:为了提高精确率,分类器需要尽量再“更有把握时”才把样本预测为正样本,但往往因为过于保守而漏掉很多“没有把握”的正样本,导致召回率降低。

因此使用F1-score进行调和(也叫F-measure),定义为:
F 1 = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F1 = \frac{2·Precision·Recall}{Precision+Recall} F1=Precision+Recall2PrecisionRecall

3. 均方根误差

Root Mean Square Error,RMSE 经常被用来衡量回归模型的好坏,使用点击率预估模型构建推荐系统时,推荐系统预测的其实是样本为正样本的概率,RMSE被定义为:
R M S E = ∑ i = 1 n ( y i − y i ^ ) 2 n RMSE=\sqrt{\frac{\sum_{i=1}^{n}(y_i-\hat{y_i})^2}{n}} RMSE=ni=1n(yiyi^)2

RMSE的缺点:一般情况下能够很好的反映回归模型预测值与真实值的偏离程度,但在实际应用时,如果存在个别偏离程度非常大的离群点,那么即使离群点的数量非常少,也会让RMSE指标变得很差。为了解决这个问题,引入了鲁棒性更强的平均绝对百分比误差(Mean Absolute Percent Error,MAPE)进行类似的评估,MAPE定义如下:
M A P E = ∑ i = 1 n ∣ y i − y i ^ y i ∣ × 100 n MAPE=\sum_{i=1}^{n}\left | {\frac{y_i-\hat{y_i}}{y_i}} \right |\times \frac{100}{n} MAPE=i=1nyiyiyi^×n100
相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。

4. 对数损失函数

在一个二分类问题中,LogLoss定义为:
L o g L o s s = − 1 N ∑ i = 1 N ( y i l o g P i + ( 1 − y i ) l o g ( 1 − P i ) ) LogLoss=-\frac{1}{N}\sum_{i=1}^{N}(y_ilogP_i+(1-y_i)log(1-P_i)) LogLoss=N1i=1N(yilogPi+(1yi)log(1Pi))
LogLoss 是逻辑回归的损失函数,大量深度学习模型的输出层是逻辑回归或softmax,因此采用LogLoss作为评估指标能够非常直观的反映模型损失函数的变化,站在模型的角度来讲,LogLoss非常适于观察模型的收敛情况。

三、直接评估推荐序列的离线指标

1. P-R曲线

P-R曲线的横轴是召回率,纵轴是精确率,对于一个排序模型来说,其P-R曲线上的一个点代表在某一阈值下,模型将大于该阈值的结果判定为正样本,将小于该阈值的结果判定为负样本时,排序结果对应的召回率和精确率。

整体P-R曲线是通过从高到低移动正样本阈值生成的,横轴0点附近代表阈值最大时模型的精确率和召回率。如下所示:
请添加图片描述
P-R曲线下的面积(Area Under Curve, AUC)能够量化P-R曲线的优劣,AUC越大,排序模型的性能越好。

2. ROC曲线

ROC曲线的横坐标时 False Posotive Rate(FPR, 假阳性率),纵坐标时True Positive Rate(TPR,真阳性率),FPR和TPR的计算方法如下:
F P R = F P N FPR = \frac{FP}{N} FPR=NFP
T P R = T P P TPR = \frac{TP}{P} TPR=PTP
上式中 P 是真实的正样本数量, N 是真实的负样本数量,TP 指的是 P 个正样本中被分类器预测为正样本的个数,FP 指的是 N 个负样本中被分类器预测为正样本的个数。

ROC曲线的绘制和P-R曲线一样,通过不断移动模型正样本阈值生成的,通过动态调整截断点,从最高的得分开始(实际上是从正无穷开始,对应着ROC曲线的零点),逐渐调整到最低得分。每一个截断点都会对应一个FPR和TPR,在ROC图上绘制出每个截断点对应的位置,再连接每个点即可得到最终的ROC曲线。ROC曲线下的面积就是AUC。

3. 平均精度均值

平均精度均值(Mean Average Precision,mAP)是另一个在推荐系统、信息检索领域常用的评估指标,该指标其实是对平均精度(Average Precision,AP)的再次平均。

请添加图片描述

4. 更接近线上环境的离线评估方法-Replay

离线评估的重点是让离线评估的结果能够尽量接近线上结果。要达到这个目标,就应该让离线评估过程尽量还原线上环境,线上环境不仅包括线上的数据环境,也包括模型的更新频率等应用环境。

传统离线评估方法和动态离线方法对比

传统离线方法:模型不会随着评估的进行而更新,假设用一个月得测试数据评估一个推荐系统,如果评估过程是静态的,这就意味着当模型对月末得数据进行预测时,模型已经停止更新近30天了,这不仅不符合工程实践,而且会导致模型效果评估得失真
————————————————————————————————

动态离线评估方法:先根据样本产生时间对测试样本由早到晚进行排序,再用模型根据样本时间依次进行预测,在模型更新的时间点上,模型需要增量学习更新时间点前的测试样本,更新后继续进行后续的评估。

毫无疑问,动态评估的过程更接近真实的线上环境,评测结果也更接近客观情况,如果模型更新的频率持续增加,快到接收到样本就更新,整个动态评估的过程也变成逐一样本回放的精准线上仿真过程,这就是经典的仿真式离线评估方法-Replay。

Replay方法不仅适用于几乎所有推荐模型的离线评估,而且是强化学习类模型唯一的离线评估方法。

Replay的实际实现中有一点需要特别注意的是:样本中不能包含任何「未来信息」,要避免数据穿越的现象发生

四、A/B测试与线上评估

A/B测试又称「分流测试」或「分桶测试」,是一个随机实验,通常被分为实验组和对照组。利用控制变量法,保持单一变量进行A、B两组的数据对比,并得到结论。具体到互联网场景下的算法测试中,可将用户随机分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型,比较试验组和对照组在各线上评估指标上的差异。

线上A/B测试无法被替代的原因主要有以下三点:

  1. 离线评估无法完全消除数据有偏(data bias)现象的影响,因此得到的离线评估结果无法完全替代线上评估结果
  2. 离线评估无法完全还原线上的工程环境,比如请求延迟、数据丢失、标签数据缺失等,离线评估比较理想化,结果存在失真现象
  3. 线上系统的某些商业指标再离线评估中无法计算

A/B测试的分桶原则
需要注意样本等独立性和无偏性:同一用户在测试的全程中只能被分到同一个桶中,在分桶过程中所用的用户ID应是一个随机数,这样才能保证桶中的样本是无偏的。

A/B测试分流和分层的机制可以概括为:

  1. 层与层之间的流量正交,即层与层之间的独立实验的流量是正交的,即实验中每组的流量穿越该层后,都会被再次随机打散,且均匀的分布再下层的每个实验中
  2. 同层之间的流量互斥,即同层之间进行多组A/B测试,不同测试之间的流量是不重叠的;一组A/B测试中实验组和对照组的流量是不重叠的,是互斥的。

一般来说,A/B测试都是模型上线前的最后一道测试,通过A/B测试检验的模型将直接服务于线上用户,完成公司的商业目标。因此,A/B测试的指标应与线上业务的核心指标保持一致。

五、快速线上评估方法——Interleaving

为了不断迭代、优化推荐模型,需要进行大量A/B测试来验证新算法的效果。但线上A/B测试必然要占用宝贵的线上流量资源,还有可能对用户体验造成损害,这就带来了一个矛盾,算法工程师日益增长的A/B测试需求和线上A/B测试资源严重不足之间的矛盾。

Interleaving方法被当作时线上A/B测试的预选阶段进行候选算法的快速筛选,从大量初始想法中筛选出少量优秀的推荐算法,再对缩小的算法集合进行传统的A/B测试,以测量他们对用户行为的长期影响。

1. 传统A/B测试存在的统计学问题

传统的AB Test除了存在效率问题,还存在一些统计学上的显著性差异问题。下面用一个很典型的AB Test问题来进行说明。

这里设计一个AB Test来验证用户群体是否对“可口可乐”和“百事可乐”存在口味倾向。那么按照传统的做法,我们会将测试人群随机分成两组然后进行“盲测”,即在不告知可乐品牌的情况下进行测试。第一组只提供可口可乐,第二组只提供百事可乐,然后根据大家一定时间内的可乐消耗量来观察人们是更喜欢“可口可乐”还是“百事可乐”。

这个实验一般意义上确实是有效的,很多时候我们也是这么做的。但也确实存在一些潜在的问题:

  1. 总的测试人群中,对于可乐的消费习惯肯定各不相同,从几乎不喝可乐到每天喝大量可乐的人都有。
  2. 可乐的重消费人群肯定只占总测试人群的一小部分,但他们可能占整体汽水消费的较大比例。

这两个问题导致了,即使AB两组之间重度可乐消费者的微小不平衡也可能对结论产生不成比例的影响。

在互联网场景下,这样的问题同样存在。比如Netflix场景下,非常活跃用户的数量是少数,但其贡献的观看时长却占较大的比例,因此Netflix AB Test中活跃用户被分在A组的多还是被分在B组的多,将对结果产生较大影响,从而掩盖模型的真实效果。

A/B测试虽然是样本进行随机分配,但是难免会存在分布不均匀得情况,我们都知道二八原则,当对平台用户进行分流时,没有办法保证活跃用户也能被均分,因此一种可行的方法就是不对测试人群进行分组,而是让所有测试者都可以自由的选择要测试的物品,在实验结束时,统计每个人选择不同物品的比例,进行相关的数据统计(有点像做选择题哈哈),这种方案的优点在于:

  • 消除了A/B测试者自身属性分布不均的问题
  • 通过给予每个人相同的权重,降低了活跃用户对结果的影响

这种不区分A/B组,而是把不同的被测对象同时提供给受试者,最后根据守试者的选择得出评估结果的方法称为——Interleaving方法。

2. Interleaving方法的实现

在这里插入图片描述
在传统的AB Test中,Netflix会选择两组订阅用户:一组接受Ranking算法A的推荐结果 ,另一组接受Ranking算法B的推荐结果。

在Interleaving测试中,只有一组订阅用户,这些订阅用户会接受到通过混合算法A和B的排名生成的交替排名。

这就使得用户同时可以在一行里同时看到算法A和B的推荐结果(用户无法区分一个item是由算法A推荐的还是算法B推荐的)。进而可以通过计算观看时长等指标来衡量到底是算法A好还是算法B好。

当然,在用Interleaving方法进行测试的时候,必须要考虑位置偏差的存在,避免来自算法A的视频总排在第一位。因此需要以相等的概率让算法A和算法B交替领先。这类似于在野球场打球时,两个队长先通过扔硬币的方式决定谁先选人,然后在交替选队员的过程。

3. Interleaving方法的优点与缺点

优点:所需样本少;测试速度快;结果与A/B测试无明显差异

缺点:

  1. 工程实现的框架较A/B测试复杂,实验逻辑和业务逻辑纠缠在一起,业务逻辑会被干扰。为了实现Interleaving方法,需要将大量辅助性的数据表示添加到整个数据流中,这些都是工程实现的难点。
  2. Interleaving方法只是对“用户对算法推荐结果偏好程度”的相对测量,不能得出一个算法真实的表现,如果需要知道某个算法的具体指标提升,不适合使用Interleaving。

Interleaving+A/B测试两阶的实验结构是比较合适和完善的,但随之而来的成本也会增加,企业在具体进行使用时,要结合具体的情况进行衡量,毕竟适合自己的才是最好的。

参考资料

  1. 最全面的推荐系统评估方法介绍
  2. 深度学习推荐系统 王喆编著 中国工信出版集团
  3. Netflix推荐系统模型的快速线上评估方法——Interleaving
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值