缘起
如果说数学是所有学科王冠上的明珠,那么推荐算法就是软件领域的明珠;在众多的商业模式中,通过推荐算法提升业务转化,亚马逊35%订单来自商品推荐,重要地位可见一斑。
推荐系统(有时将“系统”为平台或引擎)是信息过滤系统的一个子类,旨在预测用户对推荐目的“评级”或“偏好”。
推荐系统应用于各种领域,包括电影、音乐、新闻、书籍、研究文章、搜索查询、社交标签和一般产品。还有专家推荐系统,作者,笑话、餐馆、服装、金融服务,保险、在线约会等。
推荐系统通常以两种方式之一生成推荐列表-通过协作过滤或基于内容的过滤(也称为基于个性的方法)。
协作过滤方法根据用户过去的行为(以前购买或选择的项目)构建模型。以及其他用户做出的类似决定。然后,该模型用于预测用户可能感兴趣的项目(或评级)。
基于内容的筛选方法利用项目的一系列离散特性,以推荐具有类似属性的其他项目。通常是组合的(见混合推荐系统)。
通过比较两种流行的音乐推荐系统(last.fm和pandora radio),可以证明协作过滤和基于内容的过滤之间的区别。
- last.fm通过观察用户定期收听的乐队和个人曲目,并将其与其他用户的收听行为进行比较,创建推荐歌曲的“电台”。last.fm将播放未出现在用户库中的曲目,但通常由其他具有类似兴趣的用户播放。由于这种方法利用了用户的行为,因此它是协作过滤技术的一个例子。
- 潘多拉使用歌曲或艺术家的属性(音乐基因组项目提供的400个属性的一个子集)来种子一个“站”,播放具有类似属性的音乐。用户反馈用于优化电台的结果,当用户“不喜欢”某首歌时取消某些属性,当用户“喜欢”某首歌时强调其他属性。这是一个基于内容的方法的例子。
每种类型的系统都有其优点和缺点。在上面的例子中,last.fm需要大量关于用户的信息来做出准确的建议。这是冷启动问题的一个例子,并且在协作过滤系统中很常见,尽管潘多拉启动时需要的信息很少,但其范围更为有限(例如,它只能提出类似于原始种子的建议)。
推荐系统是搜索算法的一个有用的替代方案,因为它们可以帮助用户发现可能没有找到的项目。值得注意的是,推荐系统通常是使用搜索引擎索引非传统数据来实现。
推荐系统于1990年由哥伦比亚大学的Jussi Karlgren在一份技术报告中提到,称为“数字书架”,并于1994年起由Jussi Karlgren在技术报告和出版中进行了大规模实施,随后在SICS和麻省理工学院的Pattie Maes领导的研究小组与GroupLens的合作获得了2010年ACM软件系统奖。
Montaner从智能代理的角度提供了推荐系统的第一个概述Adomavicius提供了推荐系统的新的替代概述Herlocker提供了推荐系统评估技术的其他概述和Beel等人。讨论了离线评估的问题。还提供了关于现有研究论文推荐系统和现有挑战的文献调查。
推荐系统一直是被授予专利的焦点。
推荐算法
协同过滤
广泛使用的一种方法是协作过滤,协作过滤方法是基于收集和分析大量有关用户行为、活动或偏好的信息,并根据用户与其他用户的相似性预测用户的喜好。协作过滤方法的一个主要优点是它不依赖于机器可分析的内容,因此它能够准确地推荐复杂的项目,如电影,而不需要“了解”项目本身。在推荐系统中,许多算法被用于测量用户相似性或项目相似性。例如,k-最近邻(k-nn)方法由Allen首先实现的Pearson相关性。
协作过滤是基于这样一个假设:过去同意的人将来会同意,并且他们会喜欢过去喜欢的相似类型的项目。
当根据用户的行为构建模型时,通常会区分数据收集的显式和隐式形式。
显式数据收集的示例包括:
- 要求用户对项目进行滑动评分。
- 要求用户搜索。
- 要求用户将项目集合选择“喜爱”或“不喜爱”。
- 向用户展示两个项目,并要求他/她选择更好的项目。
- 要求用户创建他/她喜欢的项目列表。
隐式数据采集包括以下:
- 观察用户在网上商店中查看的项目。
- 分析项目/用户查看时间记录用户在线购买的物品。
- 获取用户在其计算机上收听或观看的项目列表。
- 分析用户的社交网络,发现类似的喜欢和不喜欢。
推荐系统将收集到的数据与从其他人收集到的相似和不同的数据进行比较,并为用户计算推荐项目列表。本文列举了几种商业和非商业的协同过滤系统实例。
协作过滤最著名的例子之一是逐项协作过滤(购买x的人也购买y),这是一种由amazon.com的推荐系统推广的算法。
- 如前所述,last.fm根据类似用户的收听习惯比较推荐音乐,而readgeek则比较书籍评级以获得推荐。
- Facebook、MySpace、LinkedIn和其他社交网络使用协作过滤来推荐新朋友、群和其他社交网络(通过检查用户与其朋友之间的连接网络)。Twitter使用许多信号和内存计算来向用户推荐他们应该“关注”的用户。
协作过滤方法通常会遇到三个问题:冷启动、可扩展性和稀疏性。
- 冷启动:这些系统通常需要用户的大量现有数据,以便做出准确的建议。
- 可扩展性:在这些系统提出建议的许多环境中,有数以百万计的用户和产品。因此,计算建议通常需要大量的计算能力。
- 稀疏性:主要电子商务网站上出售的商品数量非常大。最活跃的用户将只对整个数据库的一小部分进行评级。因此,即使是最受欢迎的项目,点击率也很低。
一种特殊类型的协同过滤算法使用矩阵分解,这是一种低阶矩阵近似技术。
协同过滤方法分为基于内存和基于模型的协同过滤。基于内存的方法的一个著名例子是基于用户的算法,而基于模型的方法的例子是内核映射推荐器。
基于内容的推荐
设计推荐系统时的另一种常见方法是基于内容的过滤。基于内容的筛选方法基于内容的和用户的画像。
在基于内容的推荐系统中,关键字用于描述项目,并构建用户配置文件以指示此用户喜欢的项目类型。换句话说,这些算法试图推荐类似于用户过去喜欢的(或目前正在研究的)项目。特别是,将各种候选项与用户先前评分的项进行比较,并推荐最佳匹配项。这种方法有其根源于信息检索和信息过滤研究。
为了提取系统中项目的特征,采用了项目表示算法。一种广泛使用的算法是tf-idf表示(也称为矢量空间表示)。
要创建用户配置文件,系统主要关注两种类型的信息:
- 用户偏好的模型。
- 用户与推荐系统交互的历史记录。
基本上,这些方法使用一个项目概要(即一组离散属性和特性)来描述系统中的项目。系统根据项目特征的加权向量创建基于内容的用户配置文件。权重表示每个特性对用户的重要性,可以使用各种技术从单独的额定内容向量中计算出来。简单的方法使用额定项目向量的平均值,而其他复杂的方法使用机器学习技术,如贝叶斯分类器、聚类分析、决策树和人工神经网络,以估计用户喜欢该项目的概率。
来自用户的直接反馈,通常以“喜欢”或“不喜欢”按钮的形式出现,可用于为某些属性的重要性分配更高或更低的权重(使用Rocchio分类或其他类似技术)。
基于内容的筛选的一个关键问题是,系统是否能够从用户对一个内容源的操作中学习用户画像,并在其他内容类型中使用它们。当系统仅限于推荐用户已经使用的同一类型的内容时,推荐系统的值明显小于可以推荐其他服务的其他内容类型时的值。例如,基于新闻浏览推荐新闻文章是有用的,但是如果基于新闻浏览可以推荐来自不同服务的音乐、视频、产品、讨论等,则更有用。
潘多拉电台是一个基于内容的推荐系统的例子,它播放的音乐具有与用户作为初始种子提供的歌曲相似的特性。还有大量基于内容的推荐系统,旨在提供电影推荐。文档相关推荐系统旨在向知识工作者提供文档建议。公共卫生专业人员一直在研究推荐系统,以个性化健康教育和预防策略。
混合推荐系统
最近的研究表明,在某些情况下,将协作过滤和基于内容的过滤相结合的混合方法可能更有效。混合方法可以通过几种方式实现:分别进行基于内容和基于协作的预测,然后将它们组合起来;将基于内容的功能添加到基于协作的方法中(反之亦然);或者将这些方法统一到一个模型中。几项研究从经验上比较了混合方法与纯协作和基于内容的方法的性能,并证明混合方法比纯方法能够提供更准确的推荐。这些方法也可以用来克服推荐系统中的一些常见问题,如冷启动和稀疏性问题。
Netflix是使用混合推荐系统的一个很好的例子,该网站通过比较类似用户的观看和搜索习惯(即协同过滤)以及提供与用户评价较高的电影(基于内容的过滤)共享特性的电影来提出建议。
已经提出了各种技术作为推荐系统的基础:协作、基于内容、基于知识和人口统计技术。这些技术中的每一种都有已知的缺点,例如协作和基于内容的系统的众所周知的冷启动问题(如何处理评级很少的新用户)和基于知识的方法中的知识工程瓶颈。混合推荐系统是将多种技术结合在一起以实现它们之间的某种协同作用的系统。
协作:系统仅使用有关不同用户或项目的评级配置文件的信息生成建议。协作系统查找具有类似于当前用户或项目的评级历史记录的对等用户/项目,并使用此邻居生成建议。基于用户和基于项目的最近邻算法可以结合起来处理冷启动问题,并改进推荐结果。
基于内容:系统从两个来源生成建议:与产品相关的特性和用户给它们的评级。基于内容的推荐者将推荐视为一个特定于用户的分类问题,并根据产品特性学习用户喜欢和不喜欢的分类器。
统计:统计推荐者根据用户的统计概况提供建议。推荐的产品可以通过结合这些细分市场中用户的评级,为不同的人口细分市场生产。
基于知识:基于知识的推荐者根据对用户需求和偏好的推断来推荐产品。这些知识有时会包含有关某些产品功能如何满足用户需求的明确功能知识。
这里使用混合推荐系统这个术语来描述将多种推荐技术结合在一起产生其输出的任何推荐系统。没有理由不能混合使用同一类型的几种不同技术,例如,两个不同的基于内容的推荐可以一起工作,并且许多项目已经研究了这种混合类型:newsdude,它在其新闻推荐中同时使用了naive bayes和k-nearest neighbores分类器,这只是一个示例。
七种混合推荐技术:
- 加权:不同推荐成分的得分用数字组合。
- 切换:系统在推荐组件中进行选择,并应用所选组件。
- 混合:不同推荐人的建议一起提出,给出建议。
- 特征组合:将来自不同知识源的特征组合在一起,并给出一个单一的推荐算法。
- 特征增强:一种推荐技术被用来计算一个或一组特征,这是下一种技术输入的一部分。
- 级联:推荐者被给予严格的优先级,低优先级的在得分上打破了联系。
- 元级别:应用一种推荐技术,生成某种模型,然后输入下一种技术。
算法准确性
通常,对推荐系统的研究关注于找到最精确的推荐算法。然而,也有许多重要的因素。
多样性-当列表内的多样性更高时,用户倾向于更满意推荐,例如来自不同艺术家的物品。
持续性-在某些情况下,重新显示推荐或让用户重新评价项目,比显示新项目更有效。这有几个原因。例如,用户在第一次显示时可能会忽略项目,因为他们没有时间仔细查看推荐。
隐私-推荐系统通常必须处理隐私问题,因为用户必须公开敏感信息。从隐私的角度来看,使用协作过滤构建用户画像可能存在问题。许多欧洲国家都有很强的数据隐私文化,每一次尝试引入任何级别的用户分析都可能导致客户的负面反应。
关于Netflix为Netflix大奖赛提供的数据集,出现了许多隐私问题。尽管这些数据集是匿名的,以保护客户隐私,但2007年,德克萨斯大学的两名研究人员通过将这些数据集与互联网电影数据库上的电影评级相匹配,能够识别个人用户。
因此,2009年12月,一位匿名的Netflix用户在DOE诉Netflix一案中起诉Netflix,声称Hat Netflix通过发布数据集违反了美国公平贸易法和视频隐私保护法。这在一定程度上导致了2010年第二次Netflix大奖赛的取消。
在这一领域,对正在进行的隐私问题进行了大量研究。Ramakrishnan等人对个性化和隐私之间的权衡进行了广泛的概述,发现弱关系(提供意外建议的意外连接)和其他数据源的组合可以用来发现匿名数据集中用户的身份。
用户统计–Beel等人研究发现,用户的统计数据可能会影响用户对推荐的满意程度。在他们的论文中,他们表明老年用户比年轻用户更喜欢推荐。
稳健性-当用户可以参与推荐系统时,必须解决欺诈问题。
机缘巧合-机缘巧合是对“建议有多令人惊讶”的一种度量。例如,一个向杂货店顾客推荐牛奶的推荐系统可能是完全准确的,但这不是一个好的推荐,因为它是顾客购买的一个明显的物品。
信任-如果用户不信任系统,推荐系统对用户来说就没有什么价值。通过解释推荐系统如何生成推荐以及为什么推荐项目,推荐系统可以建立信任。
标签-用户对建议的满意度可能会受到建议标签的影响。例如,在引用的研究中,标记为“赞助”的建议的点击率(ctr)低于标记为“有机”的相同建议的点击率(ctr=5.93%)(ctr=8.86%)。在这项研究中,没有标签的建议表现最好(ctr=9.87%)。
移动推荐系统
移动推荐系统是推荐系统领域研究的一个日益增长的领域。随着互联网接入智能手机的普及,现在有可能提供个性化、上下文敏感的建议。这是一个特别困难的研究领域,因为移动数据比推荐系统通常必须处理的数据更复杂(它是异构的、有噪声的、需要空间和时间自相关的、具有验证和一般性问题)。此外,移动推荐系统存在移植问题,推荐可能不适用于所有地区(例如,在可能无法提供所在地区推荐是不明智的)。
移动推荐系统的一个例子是为城市中的出租车司机提供潜在的有利可图的驾驶路线。该系统以GPS的形式记录了出租车司机在工作时所走路线的输入数据,包括位置(纬度和经度)、时间戳和运行状态(有无通行证)。RS)。它使用这些数据推荐路线上的取货点列表,目的是优化占用时间和利润。这种类型的系统显然依赖于位置,而且由于它必须在手持或嵌入式设备上运行,因此计算和能量需求必须保持在较低水平。
移动推荐的另一个例子是为专业用户开发的(Bouneffouf等人,2012年)。利用GPS追踪用户及其日程安排,根据他的情况和兴趣,建议提供合适的信息。该系统利用机器学习技术和推理过程,动态地使移动推荐系统适应用户兴趣的演变。作者称他的算法为混合-ε-贪婪。
移动推荐系统也已成功建立,使用“数据网”作为结构化信息的来源。SmartMuseum是此类系统的一个很好的例子。该系统使用语义建模、信息检索和机器学习技术,以推荐与用户兴趣相匹配的内容,即使在呈现的用户数据很少或最少时也是如此。
影响移动推荐系统和预测结果准确性的因素有三个:背景、推荐方法和隐私。
推荐系统风险
大多数现有的推荐系统方法都集中在使用上下文信息向用户推荐最相关的内容,并且不考虑在特定情况下干扰用户的风险。但是,在许多应用程序中,例如推荐个性化内容,也必须考虑到扰乱用户的风险,以便在某些情况下(例如,在专业会议期间、清晨或深夜)不推送推荐。因此,系统的性能在一定程度上取决于它将风险纳入推荐过程的程度。
风险定义
“推荐系统中的风险是干扰或扰乱用户的可能性,从而导致给用户错误答案。”
为了应对这些挑战,DRARS中的作者开发了一个动态风险感知推荐系统,称为DRARS(动态风险感知推荐系统),它将上下文感知推荐建模为一个问题。该系统结合了基于内容的技术和上下文土匪算法。研究表明,DRARS通过计算最佳勘探值来改善当前可用的最佳算法上置信区间(UCB)策略,从而根据当前用户情况的风险水平在勘探和开采之间保持平衡。作者在真实数据和真实用户的工业环境中进行了实验,结果表明,考虑到用户情况的风险水平,推荐系统的性能显著提高。
Netflix奖
Netflix奖是激励推荐系统研究的一个事件。从2006年到2009年,Netflix赞助了一场比赛,为团队提供了100万美元的大奖,该团队可以获得超过1亿个电影评级的数据集,并返回比公司现有推荐系统提供的更准确10%的推荐。这场竞争激发了对新的更精确算法的搜索。2009年9月21日,贝尔科尔的团队使用打破平局的规则获得了100万美元的大奖。
2007年,最精确的算法使用了107种不同算法方法的集成方法,并将其融合到单个预测中:
在混合多个预测因子时,预测精度得到了显著提高。我们的经验是,大多数的努力应该集中在派生出实质上不同的方法上,而不是提炼出单一的技术。因此,我们的解是许多方法的集合。
Netflix项目给网络带来了许多好处。一些团队已经将他们的技术应用到其他市场。完成排名第二的团队中的一些成员创建了Gravity R&D,一个活跃于Recsys社区的推荐引擎。为电子商务网站创建了一个Netflix项目衍生解决方案。
第二场比赛是计划中的,但最终由于联邦贸易委员会正在进行的诉讼和担忧而被取消。
效果评估
评估对于评估推荐算法的有效性很重要。常用的度量是均方误差和均方根误差,后者已被用于Netflix奖。信息检索指标(如精度和召回或DCG)可用于评估推荐方法的质量。近年来,多样性、新颖性和覆盖度也被认为是评价的重要方面然而,许多经典的评价方法受到了高度批评。通常,所谓的离线评价结果与实际评价的用户满意度不相关,作者总结道:“我们建议带着怀疑态度看待离线评估(即经典效果衡量)。
多标准推荐系统
多标准推荐系统(MCR)可以定义为在多个标准上包含偏好信息的推荐系统。这些系统不是基于单个标准值(用户u对项目i的总体偏好)开发推荐技术,而是通过利用影响总体偏好值的多个标准上的偏好信息来预测未探索项目u的评级。一些研究人员将MCMS作为一个多标准决策(MCDM)问题来处理,并将MCDM方法和技术应用于实现MCRS系统有关详细介绍。
基于反馈的推荐系统
在某些情况下,允许用户对项目留下文本评论或反馈。这些用户生成的文本是推荐系统的隐式数据,因为它们可能是项目特征方面的丰富资源,以及用户对项目的评估情感。从用户生成的评论中提取的特性是对项目的元数据的改进,因为它们也反映了项目的一些方面,如元数据,所以提取的特性被用户广泛关注。从评论中提取的情感可以看作是用户对相应功能的评分。基于意见的推荐系统的流行方法使用各种技术,包括文本挖掘、信息检索和情绪分析(另见多模态情绪分析)。
推荐系统评估
为了衡量推荐系统的有效性,并比较不同的方法,有三种评估方法:用户研究、在线评估(A/B测试)和离线评估。用户研究的规模相当小。通过不同的推荐方法,向几十个或数百个用户提出建议,然后由用户判断哪些建议是最好的。在A/B测试中,建议通常显示给实际产品的数千个用户,推荐系统随机选择至少两种不同的推荐方法来生成建议。有效性是通过隐式有效性度量来衡量的,例如转换率或点击率。离线评估是基于历史数据的,例如一个数据集,其中包含有关用户以前如何评价电影的信息。然后根据推荐方法预测用户在数据集中的评价的程度来衡量推荐方法的有效性。虽然分级是用户是否喜欢电影的明确表示,但并非所有域都提供此类信息。例如,在引文推荐系统领域,用户通常不会对引文或推荐文章进行评分。在这种情况下,离线评估可能使用隐性有效性度量。例如,可以假定推荐系统是有效的,能够推荐尽可能多的包含在研究文章参考列表中的文章。然而,这种离线评估被许多研究者认为是至关重要的例如,已经证明离线评估的结果与用户研究或A/B测试的结果相关性很低,一个流行于离线评估的数据集被证明包含重复数据,从而导致错误的结论。
科研圈推荐研究
近年来,人们越来越认识到,许多以前的研究对推荐系统的实际应用几乎没有影响。Ekstrand、Konstan等人批评“目前很难复制和扩展推荐系统研究成果”,评价“处理不一致”。Konstan和Adomavicius得出结论,“推荐系统研究界正面临一场危机,其中大量论文呈现的结果对评估结果的贡献不大。”通常是因为研究缺乏正确的评估,因此,提供有意义的贡献。”因此,许多关于推荐系统的研究都被认为是不可复制的。因此,推荐系统的运营商在当前的研究中几乎找不到指导。推荐系统中使用哪种推荐方法。赛义德和贝洛恩对该领域最近发表的论文进行了研究,并对一些最流行的推荐框架进行了基准测试,发现即使使用了相同的算法和数据集,结果也存在很大的不一致性。ARIOS导致了推荐系统有效性的强烈变化。他们得出结论,有七项行动是必要的,以改善目前的状况:“(1)调查其他研究领域并从中学习,(2)找到对再现性的共同理解,(3)确定和理解影响再现性的决定因素,(4)进行更全面的实验(5)现代化的出版实践,(6)促进推荐框架的开发和使用,(7)为推荐系统研究建立最佳实践指南。”
预期设计
预期设计是物联网、用户体验设计和机器学习的结合。预期设计不同于传统设计,在预期设计中,目标是通过代表用户做出决策来简化流程并将难度降至最低。使用不同层次的预期设计的服务的例子有:亚马逊和Netflix生产推荐(根据以前的行为推荐产品)、移动应用程序peapod(使用推荐引擎允许用户根据以前的订单填充购物篮)以及预测基于用户输入和一天中的时间设置完美的室温。