0

編集:(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()を使用しています。

source

間違ったドキュメントですか?私はまだ明示的なフィードバック私のユースケースに合っていると思う。有用な推奨事項を得るためにテンプレートをALS.trainに適合させる必要があるかもしれませんか?それとも私は何かを誤解しましたか?

+0

あなたの評価はどこから来ましたか?計算されているか、ユーザーに明示的に1と10の間のアイテムの評価を依頼していますか?もしそうなら、あなたは実際に明示的なフィードバックを使用しています – alex9311

+0

@ alex9311確かに、ユーザはアイテムを1から10のスケールで評価しました。私は数百万の評価をしています。 – stholzm

答えて

0

多くのデータは、データの収集方法によって異なります。明示的に見える評価は、実際には暗黙的になることがあります。たとえば、以前に購入/使用したアイテムをユーザーが評価できるようにするオプションを指定したとします。これは、特定のアイテムを評価する時間を過ごしたことが、そのアイテムが高品質であるということを意味します。そのため、品質の悪い品目は、人々がそれらを使用することを気にしないので、全く評価されません。したがって、たとえデータセットが明示的に意図されているとしても、結果を暗黙のものとみなすと、より良い結果を得ることができます。ここでも、これはデータの取得方法に応じて大きく異なります。

関連する問題