8

Mahout では、API メソッドを使用したアイテム ベースのレコメンデーションがサポートされています。

ItemBasedRecommender.mostSimilarItems(int productid, int maxResults, Rescorer rescorer)

しかし、Spark Mllib では、ALS 内の API は推奨される製品を取得できるようですが、ユーザー ID は次の方法で提供する必要があります。

MatrixFactorizationModel.recommendProducts(int user, int num)

mahout がアイテムベースのレコメンデーションを実行する方法と同様に、ユーザー ID 情報を提供する必要なく、類似の製品に基づいて推奨製品を取得する方法はありますか?

4

2 に答える 2

11

Spark 1.2x バージョンは、Mahout にあるような「アイテム類似性ベースのレコメンダー」を提供しません。

ただし、MLlib は現在、モデルベースの共同フィルタリングをサポートしています。この場合、ユーザーと製品は潜在的な要因の小さなセットによって記述されます {ユーザー アイテム マトリックスを構築する際の暗黙的な (ビュー、クリック) および明示的なフィードバック (評価) のユース ケースを理解します。 }

MLlib は、交互最小二乗法 (ALS) アルゴリズム [SVD アルゴリズムに似ていると見なすことができます] を使用して、これらの潜在的な要因を学習します。

純粋にアイテムの類似性に基づくレコメンダーを作成する必要がある場合は、次のことをお勧めします。

  1. すべてのアイテムを特徴ベクトルで表す
  2. 各アイテムのペアで類似度メトリック (コサインなど) を計算することにより、アイテム間の類似度マトリックスを構築します。
  3. このアイテム類似性マトリックスを使用して、ユーザーの類似アイテムを見つけます

類似性マトリックスはうまくスケーリングできないため (100 個のアイテムと 10000 個のアイテムがある場合に類似性マトリックスがどのように成長するかを想像してください)、多数のアイテムに実装する予定がある場合は、DIMSUM に関するこの記事が役立つ場合があります。

https://databricks.com/blog/2014/10/20/effective-similarity-algorithm-now-in-spark-twitter.html

于 2015-04-06T07:59:19.917 に答える
4

ここで、Apache Spark を使用した項目間レコメンデーション モデルの実装を参照してください これは、user-product-ratings データに対して MLib ALS アルゴリズムを実行するときに生成される productFeatures マトリックスを使用して実装できます。ALS アルゴリズムは基本的に 2 つの行列を因数分解します。1 つは userFeatures で、もう 1 つは productFeatures 行列です。productFeatures ランク行列でコサイン類似度を実行して、アイテム間の類似度を見つけることができます。

于 2016-12-05T18:01:28.810 に答える