0

我试图在MLlib中建立一个基于用户的协作过滤,从last-fm数据集中找到类似的用户(基于你听的艺术家)。如何在Spark MLlib中执行基于用户的建议?

Apache Mahout可以通过GenericBooleanPrefUserBasedRecommender实现我想实现的功能,但速度不够快,所以我想试试Spark & MLlib,但找不到它的任何实现。有没有人有一个工作的java/scala/python实现这个或想法如何实现它?我知道MLlib通过ALS具有基于项目的建议,但这是不同的。

+0

如果您熟悉spark MLLib的ALS实现,则可以使用userFeatures创建用户之间的相似度矩阵,并根据相似度对结果进行排序。 – jtitusj

回答

1

Apache Mahout有一个Spark版本的“item-similarity”,它已被集成到ActionML Universal Recommender中。 Mahout已经扩展到基于一种新的互相关算法,该算法允许几乎任何用户行为被用于寻找类似用户或推荐项目。

Mahout的spark-rowsimilarity的Spark版本是here。在推荐人输入中(用户标识,“操作名称”,项目标识)。累积所有输入将为您提供一个表,其中rows = users和columns =个项目。因此,行类似性将创建输出,将用户列为关键字,并将最相似的用户列为值。这并不理想,因为它只使用一个“动作”来查看相似之处。对于完整的Mahout算法完整版的相关交叉事件,您可能需要查看Universal Recommender。