0

MLlibでユーザベースのコラボレーションフィルタリングを構築して、last-fmデータセット(聴いているアーティストに基づいています)から同様のユーザを見つけようとしています。Spark MLlibでユーザベースの推奨を行うには?

Apache MahoutはGenericBooleanPrefUserBasedRecommenderで達成したいことを実行できますが、十分速くないので、Spark & MLlibを試したかったのですが、その実装が見つかりませんでした。誰もがこれを実装する方法アイデアのjava/scala/pythonの実装を作業していますか? MLlibにはALSによるアイテムベースの推奨がありますが、それは異なっています。

+0

ALSのspark MLLibの実装に精通している場合は、userFeaturesを使用して、ユーザー間の類似性マトリックスを作成し、類似度に応じて結果をソートできます。 – jtitusj

答えて

1

Apache Mahoutには、ActionML Universal Recommenderに組み込まれた「アイテム類似性」のSparkバージョンがあります。 Mahoutは、相互相関のための新しいアルゴリズムに基づいて拡張されており、ほぼすべてのユーザーアクションを類似ユーザーの検索やアイテムの推薦に使用できます。

Mahoutのspark-rowsimilarityのSparkバージョンはhereです。リコメンダ入力には、(ユーザID、 "アクション名"、アイテムID)があります。すべての入力を累積すると、rows = usersおよびcolumns = itemsのテーブルが得られます。したがって、rowsimilarityは、ユーザーをキーとして、最も類似したユーザーを値としてリストした出力を作成します。これは、類似性を見るために1つの「アクション」しか使用しないので理想的ではありません。 MahoutアルゴリズムのフルバージョンであるCorrelated Cross-Occurrenceのフルパワーのために、Universal Recommenderを調べることをお勧めします。