推荐系统实战(九)评估与调试

一、推荐系统评估流程

(一)两阶段

1、离线评估

  • 利用相同的训练集,相同的初始条件(随机初始化或者用同一套初值),用不同的算法训练出新旧两版模型。
  • 然后再在相同的测试集上进行离线指标评估,如果新模型的离线指标好于旧模型的,就认为新模型通过了离线测试。(一般来说使用3或7天的历史数据作为训练数据,第4天或第8天的历史数据作为测试数据。)

2、在线评估A/B实验

  • 离线测试通过的新模型在上线前,需要回溯两周历史数据直到追平接入线上的实时样本流。(这样新旧模型就能同步接收线上用户的最新反馈来同步更新自己,以保证公平地进入A/B实验。)
  • 随机划分出两份流量,一份流量称为控制组control group,流入老模型;一份流量称为实验组experimental group,流入新模型。
  • 实验一段时间后观察关键业务指标,如果实验组的指标明显由于控制组,那么认为新模型优于老模型,可以考虑推广至全部流量。

(二)离线评估、在线评估优缺点

1、离线评估优缺点

  • 优点:简单便捷,不需要回溯很久的历史数据,不需要等待用户的反馈。
  • 缺点:离线评估,只能评估模型的优劣,不能直观反映对业务的影响;离线评估是在一个简化、理想的环境中进行的,不能反映线上真实情况。

2、在线评估优缺点

  • 优点:能够反映线上真实情况,有用户的真实反馈,能够反映对业务的影响。
  • 缺点:准备阶段需要回溯一段时间的历史,还需要等待用户反馈。

二、离线评估

(一)评估排序算法

主要用于评估精排算法,也可以用来评估粗排算法。

1、AUC和GAUC

(1)AUC

AUC(Area Under the Curve)曲线下面积是评估排序算法最重要的指标。

①基本描述

  • 给定一个划分正负类别的阈值。
  • 在该阈值下的假阳性率FPR(False Positive Rate)为横坐标,在该阈值下的真阳性率TPR(True Positive Rate)为纵坐标坐标,确定一个点。
  • 不同阈值下的点连成的线叫做ROC(Receiver operating curve),ROC下的面积就是AUC。
  • ROC越靠左上角,AUC越大,分类效果越好。
ROC曲线与AUC

②直观解释

一个模型给一堆正负标签已知的样本打分,要求正样本的打分比负样本高(正样本的排序就先于负样本)是正确排序。正样本正确排在负样本前面的概率就是AUC。

  • 样本对:一个正样本和一个负样本组成一个pair。
  • 如下图所示,三个正样本三个负样本,总的样本对个数是9个,而有两个样本对是错误排序,因此AUC=7/9。
AUC示意
(2)GAUC

①AUC的缺点

AUC将所有用户的正负样本混在一起,排序性能会失真。

②GAUC描述

Group AUC(GAUC)是按更细粒度的标准进行样本分组,然后分别求取每组的AUC,再将不同组的AUC加权平均。

理论上应该以一个用户一次请求为一个group,实践上是以一个用户为单位划分group。

w_u是用户权重值,n_u是曝光给用户的物料数量,n_u越大说明用户越活跃。

③GAUC解决二分类问题和实数问题 

GAUC可以将实数问题转换成二分类问题,比如用户是否长播放,用户是否有效播放(超过15秒)。

比如CTR的权重会用视频播放长短,CVR的权重会用用户消费金额,这样会使GAUC重点反映模型对高价值用户的排序性能。

2、NDCG

(1)DCG

Discounted Cumulative Gain折损累积增益。

①使用DCG的原因

因为不同位置的物料贡献不同,用户更倾向于关注于位置比较靠前的物料。

②DCG公式

其中K是排序结果长度,c_k表示第k个物料做出的贡献(比如用户没有点击物料,那么c_k=0;用户点击了物料,c_k就是观看时长、购买金额等指标的函数)。log(k+1)作为位置折扣因子来调整不同位置的贡献大小,越靠后的位置权重越小。

(2)IDCG与NDCG

Ideal DCG(IDCG)是在理想的排序序列序列下得到的(贡献大的物料排在序列前面),是DCG的最大值。IDCG和DCG做归一化就得到了Normalized DCG(NDCG)。如下式所示:

将多个排序序列的NDCG求平均值,可以评估整个排序模型的性能。

(二)评估召回算法

1、AUC不适用于评估召回算法的原因

AUC适用于精排和粗排,正样本可以选自于曝光点击的样本,负样本可以选择曝光但未点击的样本。但是这不适用于召回,因为正负样本都来自于曝光的数据。

2、Precision & Recall

  • T_predict:这是召回模型预测的用户可能感兴趣的物料集合(即从 faiss 向量数据库中检索到的前 K 个邻近物料)。
  • T_click:这是用户实际感兴趣并点击的物料集合。这些数据通常来自于用户点击的行为,是用户真实反馈的体现。

①Precision:即召回模型预测的物料中,有多少是用户实际感兴趣的。

②Recall:在用户实际点击的物料中,有多少是被召回模型成功预测到的。

最后得到不同用户序列得到的召回precision&recall后,将用户曝光序列长度(反映用户活跃度)作为权重对各个precision&recall进行加权平均,从而得到整体的precision和recall。

AP是Precision~Recall曲线下的面积

3、MAP

(1)AP

召回的数量越多,precision越小,recall越大;反之,precision越大,recall越小。只考虑单一K值(召回序列长度为K)可能有失偏颇,而采用Average Precision(AP)既考虑到了召回序列长度,又考虑到了Precision/Recall。

将不同召回序列长度下的(recall,precision)组成的点连成线,线下方的面积就是AP。

上面公式中,K是召回序列最大长度,Precision@j表示前j个序列的precision值,is_positive来判断第j个物料是否是用户喜欢的物料(根据click等数据得到),totalpositives是整个K长度序列中的所有正向物料的个数。 

AP是Precision~Recall曲线下的面积
(2)MAP

AP是针对单次召回结果,将多次召回结果的AP取平均值,就可以得到Mean AP(MAP),用来衡量模型整体的召回性能。

4、Hit Rate

一条评估样本是一次点击记录<u_i,t_i>,u_i是第i个样本中发出点击行为的用户,t_i是第i个样本中点击的物料。Hit Rate是统计在一次召回所有物料中被点击过的物料的比例。

(三)人工评测

比如说Airbnb人工评测中,输入房屋ID,左侧显示房屋的基本信息,右侧显示召回结果。

Airbnb检查I2I召回结果的工具

(四)持续评估

Progeressive Validation来进行持续评估。

具体流程如下:得到最新一批用户反馈以后,先前代进行预测,再一边回代更新参数,一边根据预测值和反馈计算评估指标。

优点如下:

  • 在线预测和在线评估共用前代环节,避免重复计算。
  • 得到预测结果的时候尚未回代更新,因此得到的评估指标是无偏的。

三、在线评估A/B实验

(一)A/B实验

1、A/B实验的流程 

  • 先将用户流量分成control group和experimental group。
  • control group流量流入老模型,experimental group流量流入新模型。除了模型差异以外,其他的影响因素必须完全相同,这是A/B实验最重要的同分布原则
  • 实验一段时间后,积累了部分用户反馈,根据用户反馈得到关键业务指标。
  • 如果新模型在关键业务指标上的表现显著优于老模型,就可以考虑模型的更替。

2、A/B实验的优点

  • A/B实验是数据驱动决策,比较科学。
  • A/B实验随机划分流量,且除了模型不同以外,其他影响因素相同,比较公平可靠。

3、A/B实验的缺点

  • A/B实验系统实现难度较高,对小团队不友好。
  • 为了收集到足够多的反馈,要经过较长的一段时间,时间成本高。
  • 可能流量划分、指标统计的过程出现偏差。

(二)线上:流量划分

1、流量划分遵循的原则

  • 流量划分是随机的:流量划分是随机的,一个用户被分到哪个组别是完全随机的,这样才能保证同分布原则。
  • 流量划分是确定的:一个用户第一次被划到哪个组,以后也会被划到哪个组,保证用户体验一致性。

2、根据User ID划分流量

在实际操作中,用户会基于其 userID 被随机分配到某个组中。这通常通过哈希函数或某种随机分配算法来实现,确保不同组的用户分布均匀。

在同一时间段内,用户只能参与一个实验。比如,如果用户 A 被分配到了实验 1,他就不会被分配到实验 2。只有在实验 1 结束后,用户 A 才可能被分配到另一个实验中。

基于UserID的流量划分

比如下面这张图里面,召回和精排占用了全部流量,但是还有其他任务要进行评估,召回和精排实验时间又长,会发生堵塞,效率低下。 

两个实验就占满了全部流量

3、分层重叠划分流量

①思想
  • 假设一共有N个实验(召回、精排等等...),划分成N层。
  • 同一层的实验组流量互斥,一个用户只能参与同一层的一个实验。
  • 不同层的实验组流量重叠,一个用户可以参与不同层的实验。
②公式

bucket=Hash(Concat(Layer_id,User_id))%N

分层重叠的流量划分示意
④特点

一个用户可以进行不同层实验,提高了效率。并且不同层的流量完全正交,用户在前几层分配到不同实验的经历不会对后序产生影响,因为每次都是根据layer_id和user_id将用户打散划分到不同实验的不同组别中。

3、重现A/A实验

A/A实验是检测随机划分的流量之间是否存在显著差异。

通过A/A实验来观察随机划分的流量在同一个模型上得到的关键业务指标是否具有显著差异,若差异在合理范围内可以适当增加流量。

A/A实验可以在A/B实验之前进行,也可与A/B实验同时进行。

(三)线下:统计分析

1、Significance Level和p-value

显著区间与p-value示意

2、I类错误和II类错误

Ⅰ类错误和Ⅱ类错误示意

3、其他注意事项

  • 要关注模型在细分流量上的表现(比如不同国家、新老用户等)。
  • 可能新老模型在小样本上表现的差异不明显,但是应用到全体样本上可能产生较明显的性能差异。

四、打开模型的黑盒

(一)外部观察

对模型加强监控,不仅要对整体进行监控,还要细分(在不同用户群体、不同展示位置上的细分)。

可以通过Grafana、Prometheus等开源软件,存储、汇总这些监控指标,展示成报表。

(二)内部剖析

1、特征重要性

下面是可以对一些特征进行的操作:

  • 对于一些重要特征,可以去除噪声、衍生相似特征。
  • 对于一些重要特征被模型忽视,排查特征生成、处理是否出错。
  • 对于一些不重要的特征,可以剔除。

DNN中评价特征重要性:

①Ablation Test
  • 先根据具有全部特征的训练集训练好模型,再在测试集上评估得到指标。
  • 选择某个特征删除后的训练集再训练出一个模型,再在删除了该特征的测试集上评估得到指标。
  • 对比前后指标差异大不大,大的话说明特征重要。
②Permutation Test
  • 先根据具有全部特征的训练集训练好模型,再在测试集上评估得到指标。
  • 将某个特征所在列数据打散shuffle后的测试集喂给模型,评估得到指标。
  • 对比前后指标差异大不大,大的话说明特征重要。
  • 优点是不用再训练新的模型,缺点就是有的特征之间是有相关关系的,打散以后不合理。
③Top-Bottom Analysis
  • 先根据具有全部特征的训练集训练好模型,再在测试集上评估得到指标。
  • 按照指标优劣将测试集中的样本排序。
  • 选择头部和尾部的部分样本,分析特征分布差异,分析得到重要性。
④解释模型法

数据喂给模型得到特征重要性。

2、模块

DNN模块检测。

①可视化方法

将DNN每层的输出通过t-SNE算法降至两维,红蓝色区分label,每个点代表一个样本。

可以看出b比a中相同label的点更集中,而c比b要分散,因此判断c对应的层效果不好。

各FC输出的散点图
②拟合LR模型

将各层输出向量拟合成一个LR模型,比较性能。

五、线下涨了但是线上没有效果

(一)特征穿越

特征穿越指的是拟合用户反馈的时候,用到了反馈以后的信息。假设你正在训练一个推荐系统模型,目标是根据用户的历史行为预测他们未来可能感兴趣的商品。然而,在构建训练样本时,如果无意中使用了用户在未来时间点的反馈信息(如点击、购买等),那么训练得到的模型会学到一种“作弊”的模式。而在线上环境中,模型无法提前知道用户未来的行为,因此无法做出准确预测。训练时,模型知道了用户在某一时间点之后点击或购买了某个商品,并据此调整预测结果。

解决方法是采用特征快照的方式生成样本。特征快照是指在某个时间点“冻结”所有相关特征的数据,确保模型在该时间点之后不能使用未来的信息。

(二)老汤模型

老汤模型指已经经过很多样本、很长时间训练的老模型。新模型可以直接在老模型的基础上热启训练,比如说共享embedding。

老模型中embedding长度为d1,新模型的embedding长度为d2,如果d1=d2可以直接复用;d1>d2就截断尾部;d1<d2就随机增添几位。

热启训练示意

(三)系统存在的内在缺陷

系统存在的内在缺陷,比如说新模型是在曝光数据基础上训练的,而老模型是在范围更广的数据基础上训练的,因此新模型对一些被老模型打压的样本上表现就很差。

(四)链路一致性问题

不仅要拟合用户兴趣爱好,还要迎合下游任务模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值