什么是好的推荐系统

冰岩作坊 March 3, 2022

推荐在互联网产品中无处不在。来自系统推荐的结果,可能出现在你外卖软件的首页,可能在你点开某度想要搜索之前,也可能在你被橙色软件掏空钱包想要退出的前一秒。

作为用户,你有没有想过,推荐系统是怎样猜出我们可能的喜好?它为什么比亲密的爱人、家人、朋友甚至你自己更了解你?为什么有的推荐使你流连忘返,难以自拔?作为产品团队,又怎样去判断什么是好的推荐系统呢?

我想,想要知道一位朋友为何如此善解人意,可以从他的成长经历开始了解。今天本文会从推荐系统评测的角度,简单介绍一下推荐系统的几个主要评价指标,并给出定性或者定量的描述。

预测准确度

预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标。在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。由于离线的推荐算法有不同的研究方向,因此下面将针对不同的研究方向介绍它们的预测准确度指标。● 评分预测很多提供推荐服务的网站都有一个让用户给物品打分的功能。那么,如果知道了用户对物品的历史评分,就可以从中习得用户的兴趣模型,并预测该用户在将来看到一个他没有评过分的物品时,会给这个物品评多少分。预测用户对物品评分的行为称为评分预测。评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。对于测试集中的一个用户u和物品i,令rui 是用户u对物品i的实际评分,而[插图]是推荐算法给出的预测评分,那么RMSE的定义为:MAE采用绝对值计算预测误差,它的定义为:关于RMSE和MAE这两个指标的优缺点,Netflix认为RMSE加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。● TopN推荐网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。那么,推荐结果的召回率定义为:推荐结果的准确率定义为:有的时候,为了全面评测TopN推荐的准确率和召回率,一般会选取不同的推荐列表长度N,计算出一组准确率/召回率,然后画出准确率/召回率曲线(precision/recall curve)。满意度

用户满意度用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。在在线系统中,用户满意度主要通过一些对用户行为的统计得到。比如在电子商务陪你沟通中,用户如果购买了推荐的商品,就表示他们在一定程度上满意。因此,我们可以利用购买率度量用户的满意度。此外,有些网站会通过设计一些用户反馈界面收集用户满意度。比如在网易云中,有对推荐结果满意或者不满意的反馈按钮,通过统计两种按钮的单击情况就可以度量系统的用户满意度。图为网易云音乐-私人FM更一般的情况下,我们可以用点击率****、用户停留时间和转化率等指标度量用户的满意度。**覆盖率

覆盖率(coverage) 描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。以图书推荐为例,出版社可能会很关心他们的书有没有被推荐给用户。覆盖率为100%的推荐系统可以将每个物品都推荐给至少一个用户。此外,从上面的定义也可以看到,热门排行榜的推荐覆盖率是很低的,它只会推荐那些热门的物品,这些物品在总物品中占的比例很小。一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。但是上面的定义过于粗略,因为覆盖率为100%的系统可以有无数的物品流行度分布。为了更细致地描述推荐系统发掘长尾的能力,需要通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比较平,那么说明推荐系统的覆盖率较高,而如果这个分布较陡峭,说明推荐系统的覆盖率较低。在信息论和经济学中有两个著名的指标可以用来定义覆盖率。第一个是信息熵:这里p(i )是物品i的流行度除以所有物品流行度之和。第二个指标是基尼系数(Gini Index):这里,ij是按照物品流行度p()从小到大排序的物品列表中第j个物品。社会学领域有一个著名的马太效应,即所谓强者更强,弱者更弱的效应。如果一个系统会增大热门物品和非热门物品的流行度差距,让热门的物品更加热门,不热门的物品更加不热门,那么这个系统就有马太效应。评测推荐系统是否具有马太效应的简单办法就是使用基尼系数。多样性

为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性推荐列表的好处用一句俗话表述就是“不在一棵树上吊死”。尽管用户的兴趣在较长的时间跨度中是不一样的,但具体到用户访问推荐系统的某一刻,其兴趣往往是单一的,那么如果推荐列表只能覆盖用户的一个兴趣点,而这个兴趣点不是用户这个时刻的兴趣点,推荐列表就不会让用户满意。反之,如果推荐列表比较多样,覆盖了用户绝大多数的兴趣点,那么就会增加用户找到感兴趣物品的概率。因此给用户的推荐列表也需要满足用户广泛的兴趣,即具有多样性。多样性描述了推荐列表中物品两两之间的不相似性。 因此,多样性和相似性是对应的。假设s(i, j)∈[0,1]定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值。新颖性

新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。

在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。比如在一个视频网站中,新颖的推荐不应该给用户推荐那些他们已经看过、打过分或者浏览过的视频。但是,有些视频可能是用户在别的网站看过,或者是在电视上看过,因此仅仅过滤掉本网站中用户有过行为的物品还不能完全实现新颖性。

评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。但是,用推荐结果的平均流行度度量新颖性比较粗略,因为不同用户不知道的东西是不同的。因此,要准确地统计新颖性需要做用户调查。

惊喜度

惊喜度(serendipity)是最近这几年推荐系统领域最热门的话题。如果你在近几年了解或参与过关于“信息茧房”的讨论,你可以很快地理解这一定义。字面上理解,让用户惊喜的推荐结果就是惊喜度。但你可能会认为这个定义和前文提到的新颖度很类似。我的理解是:新颖只代表着被推荐结果本身的“新”,即用户没见过或不熟悉,但用户很可能熟悉与该结果类似的内容。而惊喜度需要跳出用户之前的历史兴趣,在跳出“信息茧房”的前提下推荐让用户满意的内容,背后是题材或类别上的“新”。如,你本来只喜欢听周杰伦的歌。如果系统给你推荐了一首比较冷门的周杰伦的歌,如《烧肉粽》之类的。你从未听过,这时体现了推荐的新颖度。但如果系统给你推荐了某首林俊杰的歌(这里假设你之前对jj并无兴趣),你听了之后收藏的“我的喜欢”。我们把后者的过程可以成为让人“惊喜”的推荐。这个例子的原始版本来自于Guy Shani的论文,他的基本意思就是,如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果因此提高推荐惊喜度需要提高推荐结果的用户满意度,同时降低推荐结果和用户历史兴趣的相似度。结语

****推荐系统的实际评测指标远不止以上这些,作为产经即使不能从技术角度直接理解推荐系统的原理和架构,也可以从评测推荐系统的角度,比如以上这些指标倒推出推荐系统是如何满足用户需求,并加深我们对产品的理解力。

如果对具体怎样通过实验来评测推荐系统感兴趣,可以去具体了解文中提到的离线实验、在线实验和用户调查的实验方法。

参考:《推荐系统实践》项亮