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。