編集:(PredictionIOの代わりに)スタンドアロンのSparkアプリケーションを試しましたが、私の所見は同じです。これはPredictionIOの問題ではありませんが、まだ混乱しています。なぜALS.trainImplicitは明示的な評価の予測を改善しますか?
私はPredictionIO 0.9.6と協調フィルタリングのためのRecommendationのテンプレートを使用しています。私のデータセットの評価は1と10の間の数字です(ALS.train
を使用して)テンプレートからデフォルトでモデルを最初に訓練したとき、予測は少なくとも主観的には恐ろしいものでした。スコアは60.0にまで及んだが、勧告は全く無作為に見えた。誰かがALS.trainImplicit
がより良い仕事をしたので、私はそれに応じてsrc/main/scala/ALSAlgorithm.scala
を変更することが示唆
:
val m = ALS.trainImplicit( // instead of ALS.train
ratings = mllibRatings,
rank = ap.rank,
iterations = ap.numIterations,
lambda = ap.lambda,
blocks = -1,
alpha = 1.0, // also added this line
seed = seed)
スコアは(1.0未満)今はるかに低いですが、推奨は、個人的な評価と一致しています。はるかに優れていますが、混乱もあります。 (また、「明示的なフィードバック」という)
明示的な嗜好、ユーザによってアイテムに付与されたような 「評価」:PredictionIOは明示と暗黙この方法の間の差を定義します。 「ビュー」および「購入」履歴などの暗黙の嗜好(「暗黙のフィードバック」とも呼ばれる)を含む。
と:デフォルトで
、推奨テンプレートは、ユーザーが項目を評価している明示的な評価値を期待
ALS.train()
を使用しています。
間違ったドキュメントですか?私はまだ明示的なフィードバック私のユースケースに合っていると思う。有用な推奨事項を得るためにテンプレートをALS.train
に適合させる必要があるかもしれませんか?それとも私は何かを誤解しましたか?
あなたの評価はどこから来ましたか?計算されているか、ユーザーに明示的に1と10の間のアイテムの評価を依頼していますか?もしそうなら、あなたは実際に明示的なフィードバックを使用しています – alex9311
@ alex9311確かに、ユーザはアイテムを1から10のスケールで評価しました。私は数百万の評価をしています。 – stholzm