【论文阅读】Two Decades of Recommender

2019-09-26  本文已影响0人  葡萄肉多

亚马逊著名的个性化推荐,帮助顾客发现他们也许不会找到的商品。这篇文章讨论了亚马逊从最开始发表的那篇文章以来的变化。

二十年以来,亚马逊为每个顾客建立了一个个性化商店,每个人登录亚马逊都看见的都是不同的,因为它基于每个用户的兴趣实现了个性化生成。就像你走进一个商店,货架都重新排序,你想要的排在了你前面,而那些你不是那么感兴趣的,移动到了后面。

亚马逊从数百万种商品的目录中,根据你当前的资料和历史行为,挑选你可能会喜欢的少量商品。算法并不是魔术,它只是跟你分享其他用户已经发现的,算法会完成所有的工作。

亚马逊在1998年提出了基于物品的协同过滤算法,使得推荐系统能够以一种前所未见的规模处理数百万商品并为数百万的顾客提供服务。自从亚马逊2003年在IEEE Internet Computing公开了算法,它已经得到广泛使用,包括但不限于YouTube、Netflix。该算法的成功源于其简单性,可扩展性以及通常令人惊讶但有用的推荐效果,并能够根据有关客户的新信息立即进行更新,其推荐的理由也很容易被理解。

2003年在IEEE Internet Computing发表的文章这些年来面临许多挑战,也取得了长足发展。在这里,将阐述基于物品的协同过滤的一些改进,并就协同过滤,推荐系统和个性化的未来发展提供了看法。

算法

基于物品的协同过滤算法非常简单。而在90年代中期,协同过滤算法通常是基于用户的,这意味着算法的第一步是在其他用户中搜寻有相似兴趣的人(例如有相似购买方式的人),然后再看哪些商品是这些相似用户发现而你没有发现过的。相反,亚马逊的算法是为每个商品在目录中找到其相关商品。“相关的”可能有几种含义,但在这里被定义为“顾客买了这件商品并很可能再买另一件的”。因此,对于每件商品i1,我们希望,购买了i1的人有很高频率购买i2。

一旦建立了相关商品表,就能够快速地通过一系列查找进行推荐了。对于顾客当前的资料和历史行为的物品,查找它的相关商品,将它们组合以产生最感兴趣的商品域,并过滤用户已经购买过的或看过的商品,推荐保留下的商品。

对比基于用户的协同过滤,该算法有很多好处。最重要的一点是,主要的计算——批量构建相关商品,是离线完成的,推荐可以实时地通过一系列查找完成。这些推荐是有用、高质量的,尤其是在数据量充足时。即便对于近二十年来出现的新算法也持有竞争力。并且它可以扩展到数亿的用户和数千万的商品间进行推荐,而不需要通过采样或者其他会降低推荐质量的技术。算法还可以及时更新用户兴趣的新信息。最后,直观地说,推荐基于用户购买的商品表易于解释。

应用 :Amazon、Netflix、Youtube

截至2003年发表IEEE上的文章时,基于物品的协同过滤算法已经广泛应用在了亚马逊的官网上。首页主要基于用户在商店里历史购买和浏览的商品进行推荐,搜索结果页推荐和你搜索相关的商品,购物车会利用冲动性捆绑消费使顾客添加其他商品到购物车中,或者推荐对用户已经考虑好购买的商品的补充商品。在顾客最后的订单中,更多的推荐出现了,推荐以后可能会订购的物品。包括利用了电子邮件,浏览页面,产品详细信息页面等等。亚马逊上的许多页面都存在推荐内容,尝试为每个顾客展示不同的商店。

其他公司也开始使用基于物品的协同过滤算法。在2010年,Youtube利用其进行视频推荐,许多开源和第三方供应商都包含该算法,并且该算法广泛应用于在线零售,旅游,新闻,广告等领域。接下来几年里,推荐系统被广泛应用在亚马逊,微软的一份报告估计,亚马逊百分之三十的页面浏览都来自推荐系统。同样地,Netflix的首席市场执行官Neil Hunt 表示Netflix 80%的电影观看都来自推荐,带来了每年超过十亿美元的价值。

在最开始发明基于物品的协同过滤算法时,亚马逊主要是一家书店。从那时起,亚马逊的销售额已经增长了百倍以上,销售范围已经不限于书籍,扩大到了非媒体类的商品,笔记本电脑、女装等。这些发展为最初的算法的假设带来了许多挑战,要求能够适应新的,不断变化的环境。经过实践,我们也发现了许多方式去重新定义算法,并为新的应用产生更多相关的推荐。

定义相关商品

算法的质量很大程度依赖所定义的相关性,举个例子,买了商品X后,“极有可能”购买Y意味着什么?我们观察当顾客同时购买X和Y时,我们也许会好奇,有多少购买了X的用户会随机购买Y,当两个商品不相关时。一个推荐系统最终是统计的应用,用户的行为是充满噪声的,面临的挑战是在随机性中发现有用的模式。

要估计共同购买X和Y的用户数,Nxy,的一种直观的方法,是认为所有购买X的用户都有同样的概率P(Y)=|Y buyers|/|all buyers|购买Y,并且使用|X buyers|*P(Y)作为对购买X和Y的客户数量的期望值,记为Exy。在我们2003年的文章中,以及在此之前的很多工作中,使用的都是类似的计算方法。

然而,一个有趣的事实是,对于大多数任意两件商品X和Y,购买X的顾客比一般人群更可能购买Y。为什么这样呢?想象一个活跃用户,他购买了几乎商品目录中的每一件商品。当我们查找所有购买了商品X的顾客时,这个用户一定会被选中。类似的,有1000次购买行为的用户被选中的概率会比有20次购买行为的用户高50倍。所以从购买记录中随机采样得到的结果在用户维度上并不是均匀分布的,也就是说我们得到的是有偏的样本。对于任意物品X,购买了X的用户要比整体用户购买量更多。

这种用户购买历史的非均匀分布,意味着我们在计算有多少购买了X的用户会随机购买Y时不能忽略是谁买了X。我们发现将用户建模成具有多次购买Y的机会会很有用。例如,对于一个有20次购买的用户,我们视其拥有20次独立的购买Y的机会。

更正式的,对于一个购买了X的用户c(由c∈X表示),我们可以将c购买Y的概率估计为1-(1-Py)^|c|,其中|c|代表用户c的购买次数减去其对于X的购买次数,Py=|Y的购买次数|/|所有的购买次数|,代表任意一次购买是对于Y的购买的概率。之后,我们可以通过对所有购买X的用户进行汇总,再加上二项式展开,来计算购买X的用户中购买Y的用户数的期望值Exy(见下图)。



我们可以将Exy写作Py的多项式,其系数只与X有关。实际中,Py通常都很小,所以可以用一个上界k来做近似。此外,可以预先计算所有商品的Py和αk(X),然后可以通过预先计算的值的简单组合对Exy进行近似。

通过这种鲁棒的方法计算Exy的值,我们可以用它来评估观察到的买入X和Y的客户数量Nxy是高于还是低于随机预期。例如,Nxy-Exy可认为是非随机共现的一个估计,而(Nxy-Exy)/Exy则给出了一个非随机共现相对期望值的比例。这两个例子都可认为是衡量有多少用户会同时购买X和Y的相似度函数S(X,Y)。第一种方法,Nxy-Exy,会偏向于更流行的Y,例如第一本哈利波特,这会使得推荐结果看上去过于流行或无关。第二种方法,(Nxy-Exy)/Exy,会使得低销量的物品很容易获得高分数,所以推荐结果可能被认为是模糊的和随机的,特别是大量不受欢迎的商品。所以相关性分数需要在这两者之间找到平衡点。基于(Nxy-Exy)/sqrt(Exy)的卡方检验就是这样一个平衡的例子。

除此以外还有一些其他方法和参数可用来衡量相关性,以及从相关物品中做出推荐。我们的经验是,没有那个得分是在所有场景下都最优。最终来讲,明显可以感觉到的质量才是对推荐结果的判断;当人们发现推荐有用时它才有用。

机器学习和ABTest可以学习到用户真正的喜好,选择推荐中使用的最优参数。我们不仅可以衡量哪些推荐是有效的,同时我们还可以收集到哪些推荐被用户喜欢、点击和购买的反馈信息,并将这些信息再次输入到算法中,进一步学习哪些对用户帮助最大。

例如,兼容性是一种重要的关系。我们可能会观察到购买了某型号数码相机的用户会有很高的几率会购买某特定型号的存库卡,但这并不能保证这张存储卡与这部相机兼容。用户会因为很多与热闹而购买存储卡,我们观测到的相关性可能是随机现象。确实,亚马逊的商品库中有几十万中存储卡,这里面很多都与这部相机随机相关联 。许多电子商务网站使用一个手工制作的兼容性知识库,这维护起来不仅昂贵而且容易出错,特别是对亚马逊这样的数据规模来说。我们发现,只要给定足够的数据,再加上关于商品相关性的鲁棒指标,兼容性可能从人们的行为中学习出来,错误信号逐渐消失,而正确的物品逐渐浮现。

有趣的是,我们发现相关物品的含义会从数据中自己浮现出来,完全依靠用户自己。考虑用户浏览的物品和购买的物品的不同。对于书籍、音乐以及其他低价商品,用户倾向于浏览并购买类似的东西。但对于很多昂贵的物品来说,尤其是非出版物的物品,用户浏览的和最终购买的会有很大的不同。例如,用户可能会浏览很多电视机,但是最终只会购买一个。他们在浏览这台电视机的同时也在浏览的其他物品,通常会是其他电视机。而他们在购买这台电视机的同时购买的其他物品,则更可能是这台电视机的配套物品,例如一台蓝光播放器或挂墙支架。

时间的重要性

理解时间的角色对提高推荐系统的质量是非常重要的。例如,在计算一个相关物品表时,一个商品和另一个商品的相关度很大程度上依赖于它们在时间上的接近程度。如果一个用户买了一本书5个月后又买了另一本书,这两本书的相关性比一个用户在同一天买了两本书的相关性要弱。时间的方向性也很有帮助。比如一个用户在买了相机后,试图会购买存储卡,而不是相反。这也许是一个很好的提示,在一个用户购买了存储卡后,不应该再给他推荐相机。有时,商品是按顺序购买的,例如书籍,电影和电视的系列,推荐的应该是你接下来想要的。

亚马逊的目录是随着时间一直变化的。每天,上千的新商品出现而有一些商品消失了。在有些类目中,这样的循环特别明显。例如。服装的季节性和电子产品技术的更新。新物品可能处于劣势,因为它们没有足够的数据去支撑和其他物品的相关性。这被称为物品的冷启动问题。通常需要借助E/E的方式来给予新商品足够的曝光机会。新闻和社交媒体这些易过期的物品在冷启动方面尤其具有挑战性,通常需要融合基于内容的算法(使用题目,主题和文本等)和基于行为的算法(使用购买,浏览和打分等)。

用户维度的生命周期也存在冷启动的问题。在对用户兴趣缺乏足够了解的情况下如何给出推荐一直都是一个问题。什么时候利用有限的信息,什么时候使用普遍受欢迎的商品来确保推荐结果的稳定是一个很容易出错的微妙转换。

即使对于信息完备的用户,正确地使用时间信息对于推荐质量也有着重要影响。随着年龄的变化,之前的购买对于用户当前的兴趣的影响越来越小。更复杂的是,不同类型的物品的减弱效应还各不相同。例如,像”大海航行指南“这样的购买记录代表的通常是可持续的长期兴趣。其他的例如洗碗机修理工具这样的东西在周末的活动之后可能就不再相关了。甚至还有一些像拨浪鼓这样的商品需要随着时间不断变化;四年之后,我们应该推荐的是平衡车而不是奶瓶。还有一些商品,例如书籍,通常只会购买一次;其他的,例如牙膏,经常是被以可预期的周期重复购买。

推荐的质量不仅取决于购买的时间,还取决于购买的内容。我们发现一本书的购买信息可以暴露很多用户的兴趣,让我们能够给出很多高度相关的推荐。但是非出版物类的购买,即使次数很多,也不能给我们提供用户的什么信息。我们能从一次订书机的购买记录中收集到什么信息?基于一双袜子的购买记录我们能给出什么样惊奇而有深度的推荐?当前来说推荐胶带切割机或者更多的内衣或许是有用的,但是长期来说会导致推荐很无聊。所以,我们必须开发算法来学习哪些购买行为会导致有用的推荐,哪些时候应该忽略某些购买行为。

最后,推荐系统中多样性的重要性也是众所周知的;有时相比一个范围很窄的推荐列表,给出一些更多样的相关物品会更好。亚马逊丰富的商品库以及多样的商品类型,相比例如书店这样的垂类电商,提出了多样性方面更大的挑战。例如,给一个重度阅读爱好者推荐更多的书可能会带动更多的销量,但是从长期来看,让用户发现他们之前从未考虑过的产品线中的新商品可能是更有用的。意图的明确性也是多样性中的一个因素。当用户很明显是在寻找某个具体的商品时,推荐系统应该收窄范围帮助用户快速找到所需。但是当意图并不明确或确定时,探索性和新奇性应该是推荐的目标。想要找到推荐系统中多样性的正确平衡点,不仅需要实验,更需要一颗想要从长期进行优化的心。

未来,推荐无处不在

推荐的未来将通向何方?我们认为未来的机会要比过去的机会更多。我们可以想象一种智能交互,使得购物就像对话一样简单。

这种方式超越了当前基于搜索和浏览的模式。相反,探索过程应该像和一位朋友聊天一样,这位朋友了解你,知道你的爱好,陪伴你的每一步,知道你的需求。

这是一种智能无处不在的愿景。每一次交互都会反映你是谁,你喜欢什么,同时帮助你找到其他和你类似的人已经发现的东西。当你看到和你明显不相关的东西时你会感到空虚和悲哀:难道你现在还不了解我吗?

要想达成这样的 愿景需要从新的角度思考推荐。不应该有推荐特征和推荐引擎。相反,读懂你和其他人,以及当前拥有的资源应该是每次交互都应该拥有的。

推荐和个性化生存在数据的海洋中,我们在穿梭世界的过程中创造了这些数据,包括我们找到的,发现的和喜爱的。我们坚信未来的推荐系统将继续构建在充分利用人类集体智慧的智能计算机算法的基础上。未来将继续是计算机帮助人类互助。

大概二十年前,亚马逊在百万级商品上构建了推荐系统,来帮助百万级用户,帮助人们发现自己无法找到的东西。从那时起,原始的ItemCF算法传播到了互联网的大部分角落,帮助人们寻找可观看的视频,可阅读的资讯,同时也被其他算法和技术挑战着,也被改造以提供更好的多样性、实时性、时间敏感性以及时序性等很多其他问题。由于其简便性、可扩展性、可解释性、可调性以及相对高质量的推荐,ItemCF算法在当今仍然是最为流行的推荐算法之一。

但是该领域仍然充满机会。千人千面的用户体验仍然是一个没有人能够完全做到的愿景。仍然有很多机会可以给系统的每个部分添加智能和个性化,制造一个懂你喜好,懂其他人喜好,同时也知道你有什么选择的老友般的体验。推荐即发现,通过帮助你发现来提供惊喜和快乐。每种交互都应该是推荐。

上一篇下一篇

猜你喜欢

热点阅读