レコメンデーションで暗黙のデータをどのように扱うべきか


9

推奨システムは、特定のユーザーに対してどのような推奨が行われたか、およびそのユーザーが推奨を受け入れるかどうかのログを保持します。みたいな

user_id item_id result
1       4       1
1       7       -1
5       19      1
5       80      1

ここで、1はユーザーが推奨事項を受け入れたことを意味し、-1はユーザーが推奨事項に応答しなかったことを意味します。

質問:上記のログの種類に基づいて多数のユーザーに推奨を行う場合、MAP @ 3スコアを最大化するには、暗黙的なデータ(1または-1)をどのように処理すればよいですか?

私の考えは、1と-1を評価として扱い、因数分解マシンタイプのアルゴリズムを使用して評価を予測することです。しかし、暗黙的なデータの非対称性を考えると、これは正しくないように見えます(-1は、ユーザーが推奨事項を好まないことを意味しません)。

編集1 行列因数分解アプローチのコンテキストで考えてみましょう。-1と1を評価として扱う場合、いくつか問題があります。たとえば、ユーザー1は、潜在要素空間で1つの要素(たとえば、素晴らしいバックグラウンドミュージックを持っている)で高得点をとる映画Aが好きです。システムは、「栄光のバックグラウンドミュージック」でも高いスコアの映画Bを推奨しますが、何らかの理由でユーザー1が忙しくて推奨を調査できず、評価-1の映画Bがあります。1または-1を同等に扱った場合この場合、ユーザー1が依然として栄光のBGMを含む映画を愛している間、システムは栄光のBGMを含む映画をユーザー1に推奨することをお勧めできません。この状況は避けられるべきだと思います。


-1が嫌いという意味ではないので問題ありません。それは単に誰かがそのアイテムを見たことを区別する方法です。その意味で、欠損値よりも多くの情報が含まれています。実際に推奨の精度が上がる可能性があります。推奨する距離メトリックに応じて、距離にあまり影響しないように、-1からわずかなメトリック値に変更することを検討できます。
cwharland 2014年

1
暗黙のフィードバックの標準的な論文はHu、Koren、およびVolinskyです。そこには、-1が嫌いまたは単に「見られなかった」ことを示す自信を推定することを含め、そこには多くの優れた推奨事項があります。
Trey

回答:


5

お使いのシステムは、お勧めのアイテムでトレーニングされているだけではありませんか?もしそうなら、ここに大きなフィードバックループがあります。すべてのクリック/ビューから学びたいと思います。

アイテムを見ないことは否定的なシグナルであるとあなたは提案します。そのように扱わないことを強くお勧めします。何かと相互作用しないことは、ほとんどの場合、情報がないものとして扱われるのが最善です。反対票を投じるなど、嫌いなことを示す明示的なシグナルがある場合(または、ビデオを10秒間見て停止した場合)は、おそらく有効です。

私はこの入力を評価のようなデータとして解釈しません。(あなたの場合は、それでうまくいくかもしれません。)代わりに、それらを重みとして考えてください。これは、@ Treyがコメントで言及しているALSのHu Koren Volinsky論文での扱いとまったく同じです。これにより、正/負の相互作用の相対的な強さを記録できます。

最後に、この論文はあなたが探しているものである可能性が非常に高いものの、負の重みを提供していないことに注意します。このように拡張するのは簡単です。ここまで進んだら、SparkOryxの 2つの実装にすでに存在する簡単な拡張機能を紹介します。


2
何度も見られたものの、決して選択されなかったアイテムにわずかな負の値を代入することは合理的だと思います。OPは、彼らがこれらの否定的な代入を修飾するデータにアクセスできることを示していませんが、私はその戦術を完全に除外しません。負の値の最適な大きさは、データから決定できます。これをrecsysのシナリオで行うことで少しの利益を得ました。いずれにせよ...ネガティブな補完以外に、一度見られて選択されなかったアイテムとN回見られたアイテムを区別しない他の方法を提案しますか?
cwharland 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.