6

このチュートリアルで説明されているように、MLlib を使用した協調フィルタリングのために Spark を試してみたかった: https://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html アルゴリズムは論文「Collaborative Filtering」に基づいています。暗黙的なフィードバック データセットの場合」、行列因数分解を行います。

1,000 万の Movielens データセットを使用して、すべてが稼働しています。データセットは、80% のトレーニング、10% のテスト、10% の検証に分割されます。

  • RMSE ベースライン: 1.060505464225402
  • RMSE (トレイン) = 0.7697248827452756
  • ランク = 24、ラムダ = 0.1、および反復 = 10 でトレーニングされたモデルの RMSE (検証) = 0.8057135933012889。
  • 最良のモデルは、ベースラインを 23.94% 改善します。

トレーニング パラメータは異なりますが、チュートリアルと同様の値です。

アルゴリズムを数回実行してみましたが、常に意味のない推奨事項が表示されました。子供向けの映画だけを評価しても、次の結果が得られます。

評価について:

  • 個人的評価: トイ・ストーリー (1995) 評価: 4.0
  • 個人的評価: ジャングル・ブック、ザ (1994) 評価: 5.0
  • 個人的評価: ライオン キング、ザ (1994) 評価: 5.0
  • 個人的評価: メリー・ポピンズ (1964) 評価: 4.0
  • 個人的評価: 不思議の国のアリス (1951) 評価: 5.0

結果:

あなたにおすすめの映画:

  1. おはるの生涯 (西角一代女) (1952)
  2. もっと (1998)
  3. Who's Singin' Over There? (aka Who Sings Over There) (コとタモ ペヴァ) (1980)
  4. 日曜日とキュベール (ディマンシュ・ド・ヴィル・ダヴレー、レ) (1962)
  5. 青い光、 (Das Blaue Licht) (1932)
  6. ハーヴェイ・ミルクの時代 (1984)
  7. 私に投票してください (2007)
  8. 木を植えた男、The (Homme qui plantait des arbres, L') (1987)
  9. ショーシャンクの空に (1994)
  10. 昨日だけ (思い出でポロポロ) (1991)

Only 昨日以外は意味がないようです。

これらの結果を解釈する方法やより良い結果を得る方法を知っている人がいる場合は、知識を共有していただければ幸いです。

よろしくお願いします

編集:

提案されたように、より多くの要因を使用して別のモデルをトレーニングしました。

  • ベースライン エラー: 1.0587417035872992
  • RMSE (トレイン) = 0.7679883378412548
  • ランク = 100、ラムダ = 0.1、および numIter = 10 でトレーニングされたモデルの RMSE (検証) = 0.8070339258049574。

と別の個人的な評価:

  • 個人的評価: スター・ウォーズ: エピソード VI - ジェダイの帰還 (1983) 評価: 5.0
  • 個人的評価: ミッション: インポッシブル (1996) 評価: 4.0
  • 個人的評価: ダイ・ハード: 復讐を持って (1995) 評価: 4.0
  • 個人的評価: バットマン フォーエバー (1995) 評価: 5.0
  • 個人的評価: メン・イン・ブラック (1997) 評価: 4.0
  • 個人的評価: ターミネーター 2: 審判の日 (1991) 評価: 4.0
  • 個人的評価: トップガン (1986) 評価: 4.0
  • 個人的評価: スター・ウォーズ: エピソード V - 帝国の逆襲 (1980) 評価: 3.0
  • 個人的評価: エイリアン (1979) 評価: 4.0

おすすめの映画は次のとおりです。

あなたにおすすめの映画:

  1. カルメン (1983)
  2. Silent Light (Stellet licht) (2007)
  3. ジーザス (1979)
  4. おはるの生涯 (西角一代女) (1952)
  5. ハート・オブ・アメリカ (2003)
  6. For the Bible Tells Me So (2007)
  7. もっと (1998)
  8. リー・バワリーの伝説 (2002)
  9. お葬式 (おそしき) (1984)
  10. ザ・ロングショット (2008)

有用な結果は 1 つもありません。

EDIT2:暗黙のフィードバック方法を使用すると、はるかに良い結果が得られます! 上記と同じアクション映画での推奨事項は次のとおりです。

あなたにおすすめの映画:

  1. スター・ウォーズ: エピソード IV - 新たなる希望 (別名スター・ウォーズ) (1977)
  2. ターミネーター (1984)
  3. 失われたアークの侵略者 (インディアナ・ジョーンズと失われたアークのレイダース) (1981)
  4. ダイ・ハード (1988)
  5. ゴッドファーザー (1972)
  6. エイリアン (1986)
  7. ロック、ザ (1996)
  8. 独立記念日 (別名 ID4) (1996)
  9. スタートレック II: カーンの逆襲 (1982)
  10. ゴールデンアイ (1995)

それは私が期待した以上のものです!問題は、なぜ明示的なバージョンがまあまあ悪いのかということです

4

4 に答える 4

1

Vladが言ったことの2番目に、相関またはJaccardを試してください。つまり、レーティング番号を無視して、「これらの 2 つの映画がユーザーの好みのリストに一緒に含まれているかどうか」というバイナリを確認するだけです。これは、最初のレコメンダーを構築していたときのゲームチェンジャーでした: http://tdunning.blogspot.com/2008/03/surprise-and-coincidence.html

幸運を

于 2014-10-06T21:20:07.083 に答える
0

同じデータセットを使用して、この Spark チュートリアルに従ってみましたが、同じ (主観的に悪い) 結果が得られました。

ただし、行列因数分解の代わりに、より単純な方法 (たとえば、類似度の尺度としてピアソン相関に基づく) を使用すると、はるかに優れた結果が得られます。これは、ほとんどの場合、入力設定と同じ入力評価ファイルを使用して子供向けの映画を取得することを意味します.

因数分解が本当に必要でない限り (ただし、多くの利点があります)、別の推奨方法を使用することをお勧めします。

于 2014-10-06T15:22:35.853 に答える