使用基于协同过滤的推荐使用机器学习方法和基于图的方法的优缺点是什么?
假设我有用户购买数据(user_name、user_location、user_company_name、product_name、product_price、product_ingredients),并希望根据来自同一地点的其他用户、公司正在购买的产品、根据产品价格、成分等向用户推荐产品。
如何确定其中哪一个适合于给定的用例?我想评估Neo4j (图形数据库)和Mahout (机器学习)的协同过滤。
发布于 2015-11-04 12:48:06
我只能谈论图表:
优势:
(userA)-[]->(basketA)-[with]->(productA)<-(basketB)-[]-(userB)。用篮子找到类似的产品在计算上很便宜。缺点:
我在协作过滤方面的一些经验是,当您的数据越来越大(50GB+)时,构建一个模型需要相当长的时间(小时、天),而且您不太可能获得关于新产品的好建议。必须更新您的模型也成为一个巨大的问题。根据我的经验,对于小型用例,我倾向于使用图表。
请注意,在这两种情况下,您从来没有推荐新添加的产品,但没有购买或喜欢的人。我这么说是因为推荐的目标是帮助用户发现新产品。我写了一篇博客文章,其中我谈到了建模图,并在一些示例这里中讨论了建议,因此您可以跳过这一节,了解如何建模这类问题。
我建议您阅读Amazon关于协作过滤方法的论文,这在理论上非常简单,并且为他们带来了很好的结果。我认为您总是希望实现几种不同的方法结合在一起,以解决问题的不同部分。
祝好运。
发布于 2015-11-04 14:46:15
许多基于ML的推荐技术的一个优点是它们允许您在低维空间中工作。例如,矩阵分解技术允许您以学习的潜在变量空间来查看用户或项。这使得在对模型进行了培训(这通常是非常昂贵的)之后,计算更加容易。
MovieLens推荐数据集上的一些最佳结果是由自动编码器实现。这也有利于减少问题的维度。
此外,对数据的学习表示可能代表(在自动编码器的情况下,可能是非线性的)特征的组合。导航图形的边缘很可能一次只关注一个特性。
如果您使用neo4j的想法来自于这里,那么需要记住的一点是,您正在谈论的数据不仅仅是分级/喜好数据(在协作过滤中常见),还包括内容基数据。您可能希望阅读有关混合推荐系统的文章,以利用基于内容的推荐和基于协作的过滤推荐。
https://datascience.stackexchange.com/questions/8705
复制相似问题