1.推荐评估的目的
推荐系统评估与推荐系统的产品定位息息相关。推荐系统是信息高效分发的手段,用于更快、更好地满足用户的不确定需求。所以,推荐系统的精准度、惊喜度、多样性等都是评估的指标。同时,推荐系统要具备稳定性。稳定性可以通过实验评估。在实现方面,是否能支撑大规模用户访问等也是推荐系统评估指标。
推荐系统评估的目的是从上述维度评估推荐系统的实际效果及表现,从中发现优化点,以便能够更好地满足用户需求,为用户提供更优质的推荐服务,同时获取更多的商业利益。
2.推荐系统的评价指标
对于一个推荐系统,我们可以从用户、平台方、标的物、推荐系统本身4个维度进行评估,如下图所示。
1.用户维度
用户维度是指从用户的角度出发,用户喜欢什么,系统就推荐什么。从用户维度看,我们可以从准确度、惊喜度、新颖性、信任度、多样性、体验流畅度这几个方面进行评估。
1)准确度指推荐的物品是不是用户需要的。以视频推荐为例,如果用户点击观看了推荐的电影,说明推荐的电影是用户喜欢的,推荐准确度高。这里的准确度主要表示用户的主观体验。
2)惊喜度指推荐给用户一些完全与他们历史喜欢物品不相似,但是用户却喜欢的物品。这些推荐可能超出用户的预期,给用户一种耳目一新的感觉。
3)新颖性指推荐给用户一些应该感兴趣但是不知道的内容。比如,用户非常喜欢某位歌星的歌曲,如果推荐给他一部电影,假设用户从未听说该歌星演过电影,且用户确实喜欢这部电影,那么当前的推荐就属于新颖推荐。
4)信任度指用户对推荐系统或者推荐结果的认可程度。比如,用户喜欢头条推荐的内容,就会持续点击或浏览系统的推送内容。
5)多样性指推荐系统会提供多品类的标的物,以便拓展用户的兴趣范围及提升用户体验,如下图所示。比如,系统推荐了不同风格的音乐,且用户体验效果更好,则认为该系统具有大量的乐曲。
6)体验流畅度指系统与用户交互时,用户体验不会出现卡顿。从系统角度看,要求推荐系统性能更可靠,提供服务更流畅,不会出现卡顿和响应不及时的情况。
2.平台维度
平台维度是指从标的物提供方和用户角度出发,通过衡量双方利益来评价整体效益。因此,我们既可以从标的物提供方进行评价,也可以从用户方的商业价值进行评价,同时可以针对双方进行评价。评价的指标包括商业指标,如大部分互联网产品通过广告赚取的收益。除了关注商业指标外,我们还需要关注用户留存、用户活跃、用户转化等指标。所以从平台维度看,我们可以从以下三类指标评价推荐系统:第一类是用户行为的相关指标;第二类是商业变现的相关指标;第三类是标的物提供方指标。
(1)用户行为的相关指标 用户行为的相关指标包括以下相关指标。比如,PV(Page View)指标(页面访问率或者页面点击率、页面的刷新次数);日活或月活(周期内活跃用户的数量)指标;留存率(下一个周期留存继续使用的用户);转化率(期望的行为数与行为总数的商)。
(2)商业变现的相关指标
商业变现的相关指标可由涉及的具体商业指标衡量。衡量推荐系统商业价值,需要从产品的盈利模式谈起。目前,互联网产品主要有4种盈利模式:游戏(游戏开发、游戏代理等)、广告、电商、增值服务(如会员等),后三种模式都可以通过优化推荐技术做得更好。推荐技术的优化目标可以以商业表现为最终目标,比如考虑提升系统的曝光与转化,提升用户的留存率、活跃度、延长停留时长等。
(3)标的物提供方指标
标的物提供方指标指与商家相关的指标。平台方需要服务好用户和标的物提供方(比如视频网站是需要花钱购买视频版权的)。大部分互联网产品会通过广告赚取收益。
3.标的物维度
当然,我们也可以从标的物视角去评价推荐系统,比如通过覆盖率和挖掘长尾用户的能力去评估。
4.推荐系统维度
推荐系统维度指从自身出发去衡量整个系统的优劣。前面章节在介绍推荐系统时,强调了推荐算法在推荐系统中的重要作用,因此评价推荐系统可以从评价算法出发。在评价过程中,我们可以考虑从以下几个方面进行。
1)准确度是指核心推荐算法的准确程度。在推荐场景下,无论有监督学习还是无监督学习,机器学习模型都有一定的解决实际问题的能力。所以,我们可以从模型解决实际问题的能力等进行评价。比如,在推荐排序中,我们可以使用准确率、召回率和nDCG等指标来评判推荐算法准确度。简单来说,准确率反映的是模型正确预测的结果,召回率反映的是仅考虑预测结果中正召回结果占正确结果的比例,而nDCG考量了最终的排序结果与原始排序结果的差异性。
注意,这里的准确度和用户视角的准确度可以一致也可以不一致。用户视角的准确度强调主观感受,而这里强调客观存在。
2)实时性是指用户的兴趣随时间变化而变化,推荐系统能做到近实时推荐是非常重要的。
3)鲁棒性是指推荐系统及推荐算法不会因为“脏”数据而脆弱,能够为用户提供稳定的服务。从宏观上讲,推荐系统依赖于用户行为日志;从微观上讲,推荐算法也依赖于用户行为日志。如果用户行为日志产生偏差,推荐系统不会因为“脏”数据影响最终的推荐效果。比如,我们可以在系统中引入知识图谱,用知识图谱来纠正因用户行为日志产生的偏差,减小“脏”数据对推荐效果产生的负面影响。
4)推荐系统响应推荐服务的时长以及推荐服务的稳定性。推荐服务的稳定包括推荐是否可以正常访问,推荐服务是否挂起等。
5)高并发能力是指推荐服务在较高频次的用户请求下能正常稳定地运行。补充:在实际生产中,我们遇到的问题往往非常复杂,并且为了让模型能更好地解决当前问题,需要用不同的方法去评价推荐模型。
补充:在实际生产中,我们遇到的问题往往非常复杂,并且为了让模型能更好地解决当前问题,需要用不同的方法去评价推荐模型。
比如,如果在一个应用场景中采用了单文档排序方法,那么我们会偏向于使用准确率与召回率去评价模型。当然,我们也可以选择使用NDCG去评价模型。但是,它对于排序顺序并不敏感,所以评价结果可能不会太好。如果针对强调排序顺序固定或极其敏感的场景,通常建议使用nDCG。
2.1 RMSE和R方
与所有的均方根方法一样,RMSE方法对于异常值比较敏感。通俗地讲,RMSE方法更能准确地评价同样准确率下的不同模型,能够有效地判定哪一个预测结果更可靠。在场景上,如果不苛求模型的准确度,我们希望模型的预测结果更可靠,那么RMSE方法则更适用。
2.2 MAP和MRR
MRR(Mean Reciprocal Rank,平均倒数排名)是依据排序的准确度,对查询请求响应的结果进行评估。
2.3 其他相关指标
前文介绍了很多方法去评价模型,但是这些评价结果很可能会随着数据的变动而变动,所以,我们就需要一个可以无视数据波动的模型效果评价指标。如果我们把召回设定为TPR,则有,以FPR为横坐标,TPR为纵坐标,随着阈值的变动可以得到一个用来评价分类器性能、在(0,0)与(1,1)之间的线段。
这里要特殊说明一下,以二分类模型举例,分类器训练之后得到一个可以利用固定阈值和样本预测值进行分类的模型。在预测值固定不变的情况下调整阈值,那么分类结果也会随之变动。同理,这个过程中TPR和FPR也会随之变动。将不同阈值下的TPR和FPR的结果展示在坐标系上,最终就可以得到ROC曲线。
AUC则是ROC曲线靠近横坐标侧的面积。因为ROC曲线均为凸曲线,所以AUC的值在0.5~1之间浮动。AUC其实描述的是模型的性能,AUC越大,当前越存在一个合适的阈值使得模型的分类效果越好。另外,这里还要说明一点的是,为什么ROC曲线总是凸曲线?ROC其实取决于TPR和FPR之间的变换关系,如果预测结果为凹曲线,我们只需要调换正负预测关系,则凹曲线自然就变换成了凸曲线。对于AUC低于0.5的模型,我们更偏向于通过调整数据和参数等其他手段,以保证ROC曲线呈现凸曲线。一旦AUC低于0.5,以二分类模型举例,我们可以理解为当前模型一定程度上比随机猜测的结果还要差。
最后,为什么我们要使用ROC和AUC评价指标?很重要的原因是ROC的横纵坐标分别是FPR和TPR,得益于其计算方式,两者对于样本正负比例的变化是不敏感的。这种情况下,ROC与AUC指标更能集中突显模型分类性能的好坏,而几乎不受其他因素的影响。
3 推荐系统的评估实验方法
前面的章节已经介绍过推荐系统架构一般包含召回和排序两个阶段。推荐算法存在于推荐系统的两个阶段。推荐算法本质上是一个机器学习问题。首先,我们需要构建推荐算法模型,选择合适并且效果好的算法模型,将算法模型部署到线上推荐业务,利用算法模型来预测用户对标的物的偏好,通过用户的真实反馈,包括是否点击、是否购买、是否收藏等来评估算法效果;同时,在必要的时候和用户沟通,收集用户对推荐系统的真实评价。我们可以根据推荐业务流将推荐系统评估分为三个阶段:离线评估、在线评估和主观评估,如下图所示。与此同时,我们可以将之前介绍的评价指标嵌入各阶段。
3.1离线评估
离线评估是算法人员在线下进行实验来检查算法、数据、系统等是否正常的方法。离线评估的主要过程如下。
1)从数据仓库提取线上数据,分别用于线下训练和测试。
2)对数据进行预处理,并分为训练集和测试集。
3)在训练数据集上进行模型训练,在测试集上进行测试。
4)计算测试集上模型训练效果,按照一定的指标评估离线效果是否达到上线标准。
离线评估有三大优点。
1)不需要对系统有实际控制权。
2)不需要用户和内容提供方实时参与。
3)在性能满足的前提下,可以大批量地测试多种模型,利于调整及优化算法模型。
但是,离线评估也有一些缺点。
1)无法计算部分核心商业指标。
2)预测结果与真实结果存在一定差距。
通过离线评估,我们可以将适合评价推荐算法的具体指标应用到离线评估过程中,具体涉及的评估指标如下所示。
1.准确度
准确度评估的主要目的是事先评估推荐算法模型是否精准,为选择合适的模型上线提供决策依据。在这个过程中,主要是评估推荐算法是否可以准确预测用户的兴趣偏好。我们可以根据三种不同的范式评估系统的准确度。
第一种范式是将推荐算法看作预测问题。预测对标的物的评分值(比如0~10分)。解决该类型问题的思路:预测出用户对所有没有产生行为的标的物的评分,按照评分从高到低排序。这种思路下,推荐算法可作为评分预测模型。
第二种范式是将推荐算法看成分类问题。推荐可以看作是二分类,将标的物分为喜欢和不喜欢两类;也可以看作是多分类,每个标的物就是一个类,根据用户过去行为预测下一个行为。解决该类型问题的思路一般是:预测出某个标的物属于某个类别的概率,根据概率值进行评估;也可以类似第一种思路,排序形成Top N推荐。
第三种范式是将推荐算法看成一个排序学习问题,利用排序学习的思路来做推荐。这类问题需要学习一个有序列表。
推荐系统的目的是为用户推荐一系列标的物,命中用户的兴趣点,让用户消费标的物。所以,在实际推荐产品中,一般都是为用户提供N个候选集,称为Top N推荐,尽可能地召回用户感兴趣的标的物。上面这三类推荐算法范式都可以转化为Top N推荐。
面针对上述三类推荐范式,介绍一下对应的评估指标。
1)针对评分预测模型,评估推荐准确度的指标主要有:RMSE(均方根误差)、MAE(平均绝对误差)。
2)针对分类模型,评估推荐准确度的主要指标有:准确率(Precision)、召回率(Recall)。关于准确率、召回率的描述,前面的章节已经讲过。简单地说,准确率是指为用户推荐的候选集中有多少比例是用户真正感兴趣的或者在推荐的候选集中有多少比例是用户消费过的标的物;召回率是指用户真正感兴趣的标的物中有多少比例是推荐系统推荐的。一般来说,推荐的标的物越多,召回率越高,准确率越低。当推荐数量为所有标的物时,召回率为1,而准确率为0。
3)针对排序学习模型,评估指标主要有MAP、NDCG、MRR等。
2.覆盖率
对于推荐系统,覆盖率都可以直接计算出来。
3.多样性
用户的需求容易受外界因素影响,所以系统在推荐时需要尽量保证推荐的多样性。在实际中,我们可以通过聚类标的物和增加不同类别的标的物来保证推荐结果的多样性。
多样性指标又分为个体多样性指标和整体多样性指标。
个体多样性可用用户推荐列表内所有物品的平均相似度衡量:
4.实时性
一般来说,推荐系统的实时性可以分为4个级别:T+1级、小时级、分钟级、秒级。响应时间越短,对整个系统设计、开发、工程实现、维护、监控要求越高。我们可以按照以下的原则设计推荐系统。
1)利用用户碎片时间推荐产品,因此推荐系统需要做到分钟级。用户消耗标的物的时间很短。
2)用户需要较长时间消耗标的物,因此推荐系统应考虑更长的响应时间,做到小时级或者T+1更合理。
3)广告系统有必要做到秒级响应,大多数推荐系统没有必要做到秒级响应。
5.鲁棒性
鲁棒性指标主要是评价推荐系统的稳定性。为了提升推荐系统的鲁棒性,我们需要注意以下几点。
1)尽量选用鲁棒性较好的模型。
2)细化特征工程,通过算法和规则去除“脏”数据。
3)避免垃圾数据的引入。
4)完善日志系统,有较好的测试方案。
3.2在线评估
通常,在离线评估完成后,我们就可以进行在线评估。现在,业界通用的在线评估方式是A/B实验,即新系统与老系统同时在线并分配不同的流量,在一段时间内对比同级别的核心指标,以确定新旧系统的优劣。具体的A/B实验方法如下图所示。
在线评估可以分为两个阶段。
1)第一阶段是从推荐服务上线到用户使用推荐产品阶段,该阶段用户通过使用推荐产品触发推荐服务。这个阶段的评估指标有实时性、稳定性和抗高并发能力。响应及时且稳定是衡量推荐系统优劣的重要指标。这个指标可以通过用户请求推荐服务时,推荐接口提供数据反馈的时间来衡量。响应时间越短越好,一般响应时间要控制在200ms之内。抗高并发能力是指当用户规模很大,或者在特定时间点有大量用户访问,推荐接口能够承载的最大压力。如果同一时间点有大量用户调用推荐服务,推荐系统高并发的压力将非常大。推荐服务在上线前应该做好压力测试,我们可以采取一些技术手段来提高接口的抗并发能力,比如增加缓存等。在特殊情况下,我们应该对服务进行分流、限流、降级等。
2)第二阶段是通过用户行为相关指标等来评估。我们需要在这一阶段站在平台方角度来选用指标,这些指标主要有用户行为相关指标、商业化指标等。以一个简单用户行为漏斗为例,评估示意图如下图所示。
重要的用户行为指标有转化率、购买率、点击率、人均停留时长、人均阅读次数等。一般情况下,用户行为是一个漏斗。我们需要知道从漏斗上一层到下一层的转化率。通过转化率来衡量推荐系统带来的最终价值。
总之,在数据量足够的情况下,我们可以通过线上的A/B实验从各个方面评估推荐系统的效果。
为了能够让推荐模型快速上线,我们需要快速衡量该模型带来的具体价值,即需要一种快速上线的实验方法进行支持。所以,下面再介绍一个快速线上实验框架——Interleaving实验框架。
Netflix认为新的线上评估方法应该适用于两个阶段:第一阶段可以进行批量测试且新方法的敏感度应该更高,即可以使用较小的样本达到传统A/B实验效果。第一阶段的结果可以预测新方法在第二阶段的表现。下图展示Interleaving方法与传统A/B实验的对比。
如上图所示,Interleaving在第一阶段可以快速地筛选算法,最终在A/B实验阶段去验证,这样整体的用户样本的消耗将大大缩小。那么,Interleaving具体是怎么实现的?下图展示了Interleaving第一阶段与传统A/B实验的区别。
如上图所示,Interleaving的排序与传统A/B实验区别就在于混排。通常来说,我们在做A/B实验的时候,虽然不知道当前的推荐结果是来自A组还是B组,但是可以确定当前的推荐结果一定来自相同的组。而Interleaving可以确定的是当前的推荐结果来自A、B组,且交叉互异。这里需要明确的是,Interleaving中A、B组在混排的时候应该平均地给两组以同等概率的优先权,即A1、B1的排序方式数量应该相当于B1、A1的排序方式数量。这种情况下,我们再统计来自不同组点击的核心指标,即可以在较小的样本下初筛算法。统计结果如下图所示。
如上图所示,Interleaving方法达到5%误差率时对样本的需求大致是同等情况下A/B实验的百分之一。
虽然我们这里介绍了Interleaving方法也体现了优于A/B实验的地方,但是Interleaving也有着较为严重的缺点。首先,与传统的A/B实验相比,Interleaving要复杂得多。同时,受限于Interleaving的混排方法,不少指标在Interleaving第一阶段是无法测试的,比如用户留存率。因为所有的推荐栏都是由A、B组混排得到的,所以对于用户整体的影响是无法分组评估的,这也是为什么Interleaving需要第二阶段的A/B实验。这里的问题就在于如果网站关心的核心指标是整体指标如用户留存率,那么A/B实验可能依旧是一个较好的选择,即使它可能需要更长的时间和更多的用户样本。所以,最终选择何种方法进行何种测试还是需要大家在生产中视具体情况而定。
3.3 主观评估
用户调查的流程基本上可以整理为:分析现有问题、确定提问和引导过程、选择备选用户、收集用户评价等。