推荐系统的美好世界
我们为什么要关心推荐系统?
对于大多数人来说,关注推荐系统的关键原因可能是金钱。对于亚马逊,Netflix和Spotify等公司而言,推荐系统可带来巨大的参与度和收入。但这是对事物更加愤世嫉俗的看法。这些公司收入增加的原因是因为它们为客户提供了实际价值–推荐系统为具有很多项目的场景中的用户提供了一种可扩展的方式来个性化内容。
数据科学家特别应该关注推荐系统的另一个原因是,这是一个真正的数据科学问题。也就是说,至少按照我最喜欢的数据科学定义,即软件工程,机器学习和统计之间的交集。我们将看到,构建成功的推荐系统需要所有这些技能,以及更多。
定义推荐系统
尝试定义任何内容时,合理的第一步是询问Wikipedia。不幸的是,截至本文发布之日,Wikipedia对推荐系统的定义过于狭窄,即“信息过滤系统的子类,旨在预测用户对某项产品的评价或偏好”。
1/8
Wikipedia定义的问题在于,推荐系统要比评级预测多得多。首先,推荐者用词不当–称其为发现助手更好,因为所谓的推荐远非束缚。其次,系统意味着诸如表示之类的元素很重要,这是使推荐成为如此有趣的数据科学问题的一部分。
我的定义很简单:
推荐范式
根据要问的人,有两种到二十种不同的推荐范例。通常的分类是根据用于生成建议的数据类型进行的。方法之间的区别是学术性而非实用性的,因为使用混合/集成来解决每种方法的局限性通常是一个好主意。尽管如此,值得讨论不同的范例。我的看法是,如果您忽略了通常会出乎意料地有效的琐碎方法(例如,受欢迎的商品,然后“再次观看”),则有四个主要范例:协同过滤,基于内容的推荐算法和上下文推荐。
协同过滤可能是最著名的推荐方法,以至于有时它被视为该领域的代名词。主要思想是为用户提供了商品的偏好矩阵,这些矩阵可用于预测缺失的偏好并推荐具有较高预测性的商品。这种方法的主要优点之一是,对于协同过滤已有大量研究,使其易于理解,并且现有的库使实现起来相当简单。另一个重要的优点是协同过滤独立于项目属性。您只需要开始使用用户和项目ID,以及用户对项目的偏好(等级,视图等)的概念即可。
协同过滤的主要局限性在于它对首选项的依赖。在完全没有首选项的冷启动方案中,它无法生成任何建议。但是,当有数百万个可用的首选项时,也可能发生冷启动,因为纯协作推荐不适用于没有评分的项目或用户,并且在只有几个评分的情况下执行效果通常很差。此外,当偏好矩阵稀疏时,基础协作模型可能会产生令人失望的结果。实际上,这是我在几乎所有部署协同过滤的情况下的经验。它总是需要进行调整,并且永远不会简单地开箱即用。
基于内容的推荐为用户提供了项的首选项,并根据项内容的特定于域的概念推荐了类似的项。与协同过滤相比,基于内容的推荐的主要优势在于,不需要太多的用户反馈即可开始。甚至一个已知的用户首选项都可以产生许多良好的推荐(这可以导致收集首选项以实现协作推荐)。在许多情况下,基于内容的推荐是最自然的方法。例如,在推荐新闻文章或博客文章时,比较项目的文本内容是很自然的。这种方法也自然地扩展到项目原数据可用的情况(例如,电影明星,图书作者和音乐流派)。
2/8
当项目相似性不太容易定义时,就会出现部署基于内容的建议的一个问题。但是,即使自然而然地衡量相似性,基于内容的建议也可能最终过于统一而无用。这样的建议随着时间的流逝也可能过于静态,从而无法适应单个用户喜好的变化以及基础数据的其他变化。
上下文推荐算法推荐与用户当前上下文匹配的项目。与忽略上下文(实质上赋予所有用户历史记录相同的权重)的方法相比,这使它们可以更灵活地适应当前用户的需求。因此,与仅基于历史数据的方法相比,上下文算法更可能引起响应。
上下文推荐者的关键限制与社会和人口推荐者的相似之处–上下文数据可能并不总是可用,并且存在使用户无所适从的风险。例如,广告重新定向可以看作是上下文建议的一种形式,它遵循网络上和跨设备的用户,而无需用户明确同意以这种方式进行跟踪。
关于推荐系统的常识
准确性神话
准确性度量的脱机优化足以创建成功的推荐者
正如Wikipedia对推荐系统的定义所证明的那样,这也许是最普遍的神话。令人惊讶的是它仍然持续存在,因为距McNee等人关于影响力的论文已经有将近十年了,对准确性测量的关注已经对这一领域造成了影响。
因此,有必要问这个神话来自何方。我的理论是,这是学术界和行业之间的反馈回路。在学术界,发布对脱机数据集上的任意精度度量进行无穷改进的论文非常容易,而在实时系统上进行
3/8
实验则相对困难。但是,业界对离线预测准确性的高度关注是其中一项举措,该举措来自于行业,以100万美元的Netflix奖的形式,其目的是将Netflix评级预测算法的准确性提高10%。
值得注意的是,三年竞赛中产生的大多数算法从未集成到Netflix中。正如Netflix博客上所讨论的:
您可能想知道两年后赢得100万美元奖金的最终特等奖合奏团发生了什么……我们离线评估了一些新方法,但是我们测得的额外精度增益似乎不足以证明将其投入使用所需的工程努力生产环境。
我们的业务目标是最大程度地提高会员满意度和按月保留订阅人数……现在很明显,Netflix奖目标(准确预测电影的收视率)只是有效优化会员的有效推荐系统的众多组成部分之一"享受。
下表说明了一切(摘自上面引用的博客文章的第二部分):
出现的一个重要问题是:如果用户真的不关心预测准确性,那么他们关心什么?答案是预测准确性具有一定重要性(如上图所示),但这并不是唯一的事情。我认为,关键的考虑因素是UI/ UX。您可以获得世界上最准确的建议,但是如果没有通过友好的界面及时提供建议,那么没人会知道(或关心)这些建议。
当然,即使拥有出色的用户界面和准确的预测,在设计推荐系统时也需要注意其他问题。示例包括多样性(显示各种类型的项目),偶然性/新颖性(显示用户尚未了解的非显而易见的建议)和覆盖范围(能够为所有用户和项目生成建议)。GuyShani和Asela Gunawardana的出色调查涵盖了许多其他考虑因素。
4/8
还要注意的是,通用精度度量存在一个固有的问题。具体而言,当使用均方根误差之类的度量时,可以通过减少低评级的误差来使评级预测算法更好地执行。这是毫无意义的,因为在任何情况下都不会向用户显示低评分的项目。
最后,脱机评估出现的一个关键问题是,脱机数据集中存在一些偏差,这些偏差不一定会延续到联机方案中。例如,在许多情况下,有一个隐含的假设,即数据确实不是随机丢失的,例如,用户花费大量精力观看和评价电影的事实已经告诉我们很多关于他们的偏见对于这部电影(获得Netflix奖的团队利用这种偏见来发挥自己的优势)。隐藏此收视率并尝试对其进行预测与预测从整组电影中随机挑选的电影的收视率不同。
黑匣子神话
您可以构建成功的推荐系统,而不必担心所推荐的内容和建议的提供方式
一个好的推荐系统必须考虑用户如何与推荐进行交互。例如,显示的建议数量应告知优化过程(例如,您的目标是Precision@ 1还是precision @ 10?)。这些建议的布局方式(例如,水平/垂直)往往会影响用户交互。此外,能够解释提出建议的原因也可以轻易获胜。最后,在许多情况下,可用于生成建议的时间量受到限制。
除了UI / UX,好的推荐器系统的设计还必须考虑所推荐的内容。例如,音乐曲目和短视频可以播放多次,因此推荐用户已经看过的项目可能是个好主意。另一方面,诸如洗衣机和汽车之类的物品却很少被消耗。如果用户刚购买了一台洗衣机,他们不太可能很快就想要另一台洗衣机(但他们可能想要烘干机或晾衣绳)。
[
Hynt是电子商务的推荐系统即服务,我一直负责到去年年中。一般的想法是,商家只需在他们的商店页面上添加几行JavaScript,Hynt就在考虑用户和页面上下文的情况下完成了从商店推荐相关商品的艰苦工作。Hynt上线再次确认了许多著名的UI/ UX课程。最为显着地:
• 高于折痕比低于折痕。在不滚动的情况下可见的Hynt小部件的参与度高于页面上较低的参与度。
5/8