私が解決しようとしている問題は、適切な類似性メトリック、rescorerヒューリスティック、およびデータのフィルタリングレベルを見つけることです。 (私は、ユーザーまたはアイテムがそれを実動データベースに入れるために関連付けなければならない評価の量を意味するために「ろ過レベル」を使用しています)。Mahout Log Likelihood類似度メトリックの動作
セットアップ
私はmahoutのコラボレーションフィルタリングフレームワークを使用しています。私のデータは、商品の評価がセット{1,2,3,4,5}に含まれているトリプレットの形で提供されます。私はlogLikelihoodの類似性メトリックの上にitemBased推奨を使用しています。私は、本番データセットから20個未満のアイテムを評価するユーザーを除外します。 RMSEは良好に見えて(1.17インチ)、データキャッピングは行われませんが、間違いのような奇妙な振る舞いがあります。
質問
ファースト・コール - ユーザーからの情報なしに「トップアイテムのリストを生成します。私が使用してこれを行うには、私が呼んでいるもの、中心合計:
for i in items
for r in i's ratings
sum += r - center
where center = (5+1)/2 , if you allow ratings in the scale of 1 to 5 for example
は、私はアイテムを持っている評価の数をしたいので、主にトップ項目のリストを生成する代わりに、平均的な評価の中心に合計を使用しますランキングを考慮して受け取った。
第2コール - 第1コールで返されたトップアイテムのそれぞれに9つの同様のアイテムを求めます。私が類似のアイテムを求めた各トップアイテムについて、返された同様のアイテムのうち7アイテムが同じです(他のトップアイテムに返された同様のアイテムセットと同じです)!
いくつかの再解析を試す時間はありますか?多分、2つのゲームの類似性に、xが調整されている(約50点か何かが始まっている)/(xの同格の項目の数)/ xを乗算します。事前野郎
あなたのすばやい返信ありがとうSean! 私が解決しようとしている問題は、データに適切な類似性メトリックとレスコーラーのヒューリスティックを見つけることです。 あいまいなことに申し訳ありませんが、私は「中心の」合計と呼んでいるものの説明で質問を更新しました。 Log-Likelihoodについてのあなたのご意見を高く評価します。 GenericItemRecommenderは、負の重みが許されているので、Pearsonに比べてLLで使用する場合、より少ない値を設定する必要があるため、LLを使用するように切り替えました。今回は、Pearsonを使用して何らかの形で再起動する必要がありますか? –
最初のプロセスは、ほとんどの場合、最も評価の高いアイテムのリストを作成しています。あなたのデータセットは小さいか疎ですか?そうであれば、希薄性のために他のアイテムとの類似性が定義されている傾向が最も高いアイテムのほうが唯一のものだと想像することができます。それは同じアイテムを何度も何度も見る理由を説明することができます。あなたがmostSimilarItems()を使っていない限り、これはまだリコメンダを使用していません。 –
助けてくれてありがとうSean。それが判明したときの問題は、類似値の代わりにgameIDで同様のアイテムを並べ替えることでした! Wups。 また、私が評価データを持っているので、Log-likelihoodからPearsonに切り替えることは、私が考えている良い呼び出しでした(ただし、キャッピングはまだ私を恐れています)。 あなたの援助Seanに感謝します! –