主要的现有推荐引擎及其工作原理
如今,许多公司使用大数据来制定超级相关的建议和增长收入。在各种推荐算法中,数据科学家需要根据业务的限制和要求选择最佳推荐算法。
协同过滤
协同过滤(CF)及其修改是最常用的推荐算法之一。即使数据科学家初学者也可以使用它来构建他们的个人电影推荐系统,例如,用于简历项目。
当我们想向用户推荐一些东西时,最合乎逻辑的做法是找到兴趣相似的人,分析他们的行为,并向我们的用户推荐相同的项目。或者我们可以查看类似于用户之前购买的商品,并推荐与他们类似的商品。
这些是CF中的两种基本方法:分别基于用户的协同过滤和基于项目的协同过滤。
在这两种情况下,此推荐引擎都有两个步骤:
- 找出数据库中有多少用户/项目与给定的用户/项目相似。
- 根据与此产品更相似的用户/项目的总重量,评估其他用户/项目以预测您将为该产品的用户提供的等级。
“最相似”在这个算法中意味着什么?
我们所拥有的是每个用户的偏好向量(矩阵R的行)和每个产品的用户评级向量(矩阵R的列)。
首先,让我们只留下我们知道两个向量中的值的元素。
例如,如果我们想要比较比尔和简,我们可以提到比尔没有看过泰坦尼克号和简直到现在才看到蝙蝠侠,所以我们只能通过星球大战测量它们的相似性。怎么可能没有人看星球大战,对吧?:)
测量相似性的最流行的技术是余弦相似性或用户/项目的矢量之间的相关性。最后一步是根据相似程度采用加权算术平均值来填充表格中的空单元格。
矩阵分解建议
下一个有趣的方法是使用矩阵分解。这是一种非常优雅的推荐算法,因为通常,当涉及到矩阵分解时,我们不会过多地考虑哪些项目将保留在结果矩阵的列和行中。但是使用这个推荐引擎,我们清楚地看到u是第i个用户的兴趣向量,v是第j个电影的参数向量。
因此我们可以用u和v的点积近似x(从第i个用户到第j个电影的等级)。我们通过已知分数构建这些向量,并使用它们来预测未知等级。
例如,在矩阵分解后,我们有Ted的矢量(1.4; .9)和胶片A的矢量(1.4; .8),现在我们可以通过计算(1.4;的点积)来恢复电影A-Ted的等级。(1.4;.9)和(1.4; .8)。结果,我们得到2.68分。
聚类
以前的推荐算法相当简单,适用于小型系统。直到这一刻,我们才将推荐问题视为有监督的机器学习任务。是时候应用无监督的方法来解决问题了。
想象一下,我们正在构建一个大型推荐系统,协同过滤和矩阵分解应该更长时间。第一个想法是聚类。
在业务开始时,缺乏以前用户的成绩,集群将是最好的方法。
但另外,聚类有点弱,因为我们实际上做的是识别用户组并推荐该组中的每个用户使用相同的项目。当我们有足够的数据时,最好使用聚类作为缩小协同过滤算法中相关邻居选择的第一步。它还可以改善复杂推荐系统的性能。
根据属于集群的客户的偏好,将每个集群分配给典型的首选项。每个群集中的客户将接收在群集级别计算的建议。
推荐的深度学习方法
在过去的十年中,神经网络在增长方面取得了巨大的飞跃。今天,它们应用于广泛的应用中,并逐渐取代传统的ML方法。我想向您展示YouTube如何使用深度学习方法。
毫无疑问,由于规模大,动态语料库和各种不可观察的外部因素,为这样的服务提出建议是一项非常具有挑战性的任务。
根据“ YouTube推荐的深度神经网络 ”研究,YouTube推荐系统算法由两个神经网络组成:一个用于候选生成,一个用于排名。如果你没有足够的时间,我会在这里留下这项研究的快速摘要。
将用户历史中的事件作为输入,候选生成网络显着减少视频量并从大型语料库中创建一组最相关的视频。生成的候选者与用户最相关,我们正在预测其等级。该网络的目标只是通过协作过滤提供广泛的个性化。
在此步骤中,我们有少量与用户相似的候选者。我们现在的目标是更仔细地分析所有这些,以便我们做出最好的决定。该任务由排名网络完成,排名网络可以根据期望的目标函数为每个视频分配分数,该目标函数使用描述视频的数据和关于用户行为的信息。具有最高分数的视频呈现给用户,按其分数排名。
使用两阶段方法,我们可以从非常大的视频集合中制作视频推荐,同时仍然确保少数这些视频是个性化的并且对用户有吸引力。此设计还使我们能够将候选人混合在一起,这些候选人由其他来源生成。
推荐任务被提出作为极端多类别分类问题,其中预测问题变得准确地在基于用户(U)的数据库(V)中的数百万视频类(i)中的给定时间t对特定视频监视(wt)进行分类。和背景(C)。
在构建自己的推荐系统之前的重点:
- 如果你有一个大型数据库并且你在网上提出建议,最好的方法是将这个问题分成2个子问题:1)选择前N个候选者和2)对它们进行排名。
- 您如何衡量模型的质量?除了标准质量指标外,还有一些专门针对推荐问题的指标:Recall @ k和Precision @ k,Average Recall @ k和Average Precision @ k。另请参阅推荐系统指标的精彩描述。
- 如果您使用分类算法解决推荐问题,则应考虑生成负样本。如果用户购买了推荐项目,则不应将其添加为正样本,将其他项目添加为负样本。
- 考虑算法质量的在线得分和离线得分。仅针对历史数据的训练模型可以导致原始推荐,因为该算法将不知道新的趋势和偏好。
原文:https://blog.statsbot.co/recommendation-system-algorithms-ba67f39ac9a3