前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >增加推荐系统的4种方法

增加推荐系统的4种方法

作者头像
代码医生工作室
发布2019-08-09 19:57:19
1.2K0
发布2019-08-09 19:57:19
举报
文章被收录于专栏:相约机器人相约机器人

作者 | Chandarana

来源 | Medium

编辑 | 代码医生团队

推荐系统可帮助用户找到喜欢的项目。通过为给定用户生成预测的可能性分数或最佳推荐项目列表来实现此目的。建议可以基于多种因素,包括用户人口统计,整体项目流行度和历史用户偏好。在Amazon,Spotify和Tinder等地方经常会遇到真实的例子。

然而,许多系统的运行规模强调成功的学术和“小数据”应用的挑战。此外,提高用户意识和选择导致偏好混杂,这意味着用户比以往任何时候都更乐意放弃不是个人准确的服务。

考虑到这一点,以下4点是针对可伸缩性问题的可实现的想法,同时提高了协作过滤建议的质量。

1 - 抛弃基于用户的协同过滤模型。

在业务环境中,将面临的协作过滤算法面临的主要挑战是解决数据稀疏性和可伸缩性问题。现代系统要求能够处理数以千万计的潜在数据点,并且对性能限制的容忍度较低。在这些系统中,用户可能与少于1%的可用项目进行了交互。

基于用户的协作过滤模型中的瓶颈主要出现在搜索邻居中,邻居是历史上在给大的用户群体中对给定用户表现出类似偏好的其他用户。能够搜索成千上万的邻居是好的,但系统必须随着他们所适应的业务而扩展 - 通过能够实时搜索数百万邻居,用户都会获得真正的价值。

切换到基于项目的协同过滤算法将推荐问题从用户空间转移到项目空间。它探讨了项目之间的关系,而不是用户之间的关系。在大多数实际应用中,项目数量与用户数量相比相形见绌,在很多情况下,项目是静态的。也就是说,项目集的变化频率远低于用户数。这允许基于项目的协同过滤模型的拟合阶段和预测阶段的解耦。

看看实践中的差异。

使用来自6,040个用户(MovieLens 1M数据集)的3,704部电影的994,168评级的训练集,评估基于用户的算法的相似性矩阵的计算成本为77.6秒,而基于项目的算法仅为28.4秒,每个人都使用Pearson相似性。

该开关解决了大规模系统的计算能力,这在某些阶段变得更加重要,即质量上的细微差别。当然,如果用户集小于您的项目集并且预计相对较少的频率更改,则存在例外。

2 - 黄金标准相似度计算技术。

相似性的概念是协作过滤框架的关键要素。对于基于用户的协同过滤算法,用户相似性矩阵包括 测量任何一对用户偏好之间的距离的度量。同样,项目相似性矩阵测量基于项目的框架中的任何项目对之间的相似性。三种常用的技术是Pearson,余弦和均方差(MSD),但应该使用什么相似度计算技术?

输入用户56.用户56评定了54部电影,其中下面给出了来自上述相同训练集的5星级电影。

图1 - 用户56的评分最高的电影

鉴于用户同时享受美国历史X和Babe(可以说是两部关于猪的电影),我选择用户56完全不感兴趣。生成适当的推荐是数据集中其他用户的功能,但挑选这些用的能力取决于相似性度量的选择。

图2 - 相似度量比较(模型命中率,计算时间,前8个电影列表)

忽略计算速度的差异,所有3个顶级列表报告的命中率为 0,我不了解你,但不认识任何推荐列表中的单个电影。通常情况下,结果如此。丑陋。

这更可能是数据集的假象,而不是相似性度量,因此停止通过离线评估指标搜索黄金标准相似度计算技术并开始A / B测试。真相在于现实生活中的反应。

3 - 使用模型大小提升算法。

在基于项目的协作过滤框架中,模型大小的概念围绕着这样的想法,即关于用户偏好的足够信息位于与他们已经高度评价的项目最相似的项目的子集中。从逻辑上讲,与最高评价项目具有高度相似性的看不见的项目对最终推荐列表贡献最大是有意义的。对于活动用户评定的任何给定活动项,模型大小是最相似项的邻域。

对于大量项目,关于完整候选集的建议很快变得过于计算密集。在项目邻域上操作大大减少了进行预测所花费的时间,但也减少了模型必须排名的信息。那么关键的权衡是什么级别的信息确保建议既及时又适当?

图3 - 模型大小比较(前8个电影列表,计算时间,命中率,按评级命中率)

使用上述MovieLens数据集,可以在具有余弦相似性的基于项目的模型上检查模型大小的影响。对于用户56,邻域实现立即改变前8个列表。从所有8部电影都可识别出来(对我来说)这一事实来看,这个模型似乎已经不再存在晦涩难懂的推荐。它降低了系统噪音。我说这话是不是说我现在认识到了8强名单电影的基础上,但由于增加了命中率上留一出交叉验证测试仪(6040前8名的列表)。

使用仅10个项目的邻域实际上将系统的命中率从0%提升到1.4%,更重要的是将5%预测的命中率提高到2.1%。虽然随着社区增长到50个项目,标题命中率有所提高,但五星级项目稳定在2.5%左右,因此整体改进源于四星级类别。

仔细思考是否对系统的最重要事项进行评级。如何在屏幕上显示推荐?顶部列表中显示了多少项?清单的消费率是多少?

模型大小可以减少材料计算量,同时有时也可以提高建议的质量。文献表明,邻域30是最优的(Herlocker等,1999),但文献并不了解你的背景。弄清楚并观察它如何影响关心的客户的最佳建议。投入一点时间调整模型大小可以极大地改善客户体验,增加服务消耗并减少平均销售周期指标。

4 - 什么驱动您的用户,推动您的成功。

分数功能应反映用户的效用。

从最终结果开始并向后工作,基于项目的协作过滤的目标是从给定用户尚未评级的所有项目集合中创建最高推荐列表。为此,将分数分配给该目标用户尚未评级的每个项目 - 候选生成步骤。然后可以基于分数进行排名,并且可以将顶部项目呈现给活动用户。

将每个候选项目的分数构建为活动项目的评级和活动项目与候选项目之间的相似性的函数。文献通常使用相似性加权的评级总和(Sarwar等,2001),这是一种天真的尝试,可以通过以下几种方式加强。

时间加权。第一个主要步骤是评估用户对项目上下文的敏感程度。长期偏好与学习相吻合,即随着知识基础的扩展,对生活变化的观察,习惯的改变以及随后的偏好变化。相比之下,短期偏好常常受到社会病毒性,社会压力和影响力的欺凌。通过加权最近的评级高于旧评级,系统可以更快地响应不断变化的用户偏好。确定系统对新数据的敏感程度是了解长期偏好变化与病毒行为之间的界限。无论哪种方式,目标都是了解用户对上下文和产品对您的分数构建过程的响应。

负权重。由于相似性得分是非负的,因此与评价不佳的项目不同的候选人对最高建议几乎没有影响。有效地,模型忽略了这些项目。替代评分方法可以惩罚与已知不喜欢项目具有高相似性得分的候选者,并且对与已知不喜欢项目具有低相似性得分的候选者进行推动。实现这一目标的一种方法是将评级的规模和相似性的规模线性地转移到中心0.这个概念远离限制仅基于用户喜欢的已知项目的建议,并在很大程度上改善模型的多样性建议。

当然,这些只是两个可能的修改,可以考虑业务的分数功能的实用性。还应酌情探索用户的地理位置和非线性变换。

写在最后

没有文章可以规定一个完美调整的推荐算法,不会在这里尝试。相反,希望通过上面的四个关键点提高认识,使某些调整选择有可能通过边际额外的努力来增加物质价值。

什么价值优化,无论是歌曲,点击或物品时,应对准并根据业务需求,而不是学术指标进行评估。结果并不关心准确性,只关心面前呈现的内容的顺序。拥有协作过滤的简单性,可以提供个性化订购所提供的强大功能,并寻求用户的真实反馈。

Github代码:

https://github.com/93tilinfinity/collab-filter-basic/

推荐阅读

GitHub微软_推荐者:推荐系统的最佳实践

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
材料研究平台
材料研究平台(Materials Research Platform,MRP)基于腾讯云丰富的计算资源为科研用户提供一站式材料研究服务。它整合了材料计算、数据后处理、项目管理等多个模块,帮助用户减少材料研究流程中的繁杂工作,提高科研执行效率。材料研究平台目前支持公有云访问。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档