我正在尝试在MLlib中构建基于用户的协同过滤,以便从last-fm数据集中找到类似的用户(基于您收听的艺术家)。
Apache Mahout可以通过GenericBooleanPrefUserBasedRecommender完成我想要实现的目标,但速度不够快所以我想尝试Spark& MLlib却找不到它的任何实现。有没有人有一个有效的java / scala / python实现或想法如何实现它?我知道MLlib通过ALS提供了基于项目的建议,但这是不同的。
答案 0 :(得分:1)
Apache Mahout有一个Spark项目的“项目相似性”,已经集成到ActionML Universal Recommender中。 Mahout已经扩展为基于新的互相关算法,几乎可以使用任何用户操作来查找类似用户或推荐项目。
Mahout火花行相似度的Spark版本为here。在推荐器输入中,您有(user-id,“action-name”,item-id)。累积所有输入会为您提供一个表格,其中rows = users和columns = items。因此,行相似性将创建输出,该输出将用户列为键,将最相似的用户列为值。这并不理想,因为它只使用一个“动作”来看到相似之处。要获得相关交叉发生的全部功能,这是Mahout算法的完整版本,您可能需要查看Universal Recommender。