(@tepppei)です。個々のユーザーにとって最適なニュース記事を配信するための推薦システムの開発・運用を担当しています。実装・実験してみました。a~eを推薦するという問題を考えます。user-item間の真の嗜好性は表1のようになっているとします。user-item間の嗜好性(○が好き、×が嫌いを表す)ここで、userがitemに対して取れる行動は「クリックするか否か」のみで、例えば高評価ボタンやレーティングシステムなどは無いものとします*1。したがって、実際には上記の嗜好性の全てを観測することはできません。そこで、表1の嗜好性に基づいて表2のようなクリックログが得られたとします。実際に観測されたクリックログ(○がクリックあり、*がクリックなし)ただし、○が「クリックした」、*が「クリックしなかった」とします。このクリックログの例は、「ユーザーが好きな記事に対してのみクリックが発生するが、必ずしも好きな記事全てをクリックするわけではない」という仮定に基づいています*2。この仮定は、例えば記事が目につく場所に表示されていなかった状況などを考えると自然な仮定と考えられます。したがって、クリックしていたらそのユーザーがその記事を好きだということがわかるが、クリックしていないからといって嫌いとは限らない、ということになります*3。Aさんは記事cを好きですが、今回はクリックしていません。bのクリック数が恣意的に多くなるようにしました。bがトップページの一番目立つ場所に置かれていたなどの状況を考えてください。何が問題となるか?さて、ここで推薦システムXと推薦システムYを実装したとします。Yはそれぞれ、下記のような順位づけで記事を推薦します。推薦システムYの推薦順位ここで表中の数字は、推薦システムがユーザーにアイテムを推薦する順位を表します。4では赤字にしてあります。)表3を見ると、推薦システムXは全ユーザーに同じ順位でアイテムを推薦していることが分かります。推薦システムYはユーザーごとに個別化された順位づけで記事を推薦しています。表1と表4を見比べると、推薦システムYが1位・2位指定しているアイテムは全て各ユーザーが好きな記事になっています。これらの推薦システムの性能を、user-item間の嗜好性(表1)データを用いて評価してみます。ここでは、「ユーザーが好きな記事が、推薦システムで2位までに指定された割合」をもとに評価します*4。明確化のために式で表すと下記のようになります。内が成り立つ時1を返す関数とします。Yを評価すると、以下のようになります。推薦システムX推薦システムYたしかに推薦システムYの方が性能が良いことがわかります。user-item間の嗜好性(表1)は実際には観測できず、実際の評価に使えるのは実際に観測されたクリックログ(表2)だけです。Yの性能を評価してみます。式1と同様に、下記のような式で評価を行います。uがクリックしたitemの集合です。Yを評価すると、以下のようになります。推薦システムX推薦システムYなんとXの方が良いスコアが出てしまい、真のユーザーの嗜好性を用いて評価した場合の結果と逆転してしまいます。したがって、手元にあるクリックデータだけから推薦システムを評価してしまうと、使用する推薦システムに関して誤った意思決定をしてしまう可能性があります。このようになってしまうかというと、大きな原因として記事によってクリックされやすさが異なるということが挙げられます。bをたくさん推薦している推薦システムXが高く評価されてしまったということです。上記の問題点を解決するため、論文中では(式1)を下記のように改変する手法を提案しています。scoreと呼ばれます。感覚としては、「クリックログ中で露出が少ない記事に対する重み付けを大きくすることにより、露出機会により生じる不均衡を解消しよう」という発想です。*5は次のように推定します。userに依存しないことクリックは「アイテムが推薦システムに選択される→ユーザーがアイテムをクリックする」という2段階で発生することユーザーの嗜好性は推薦システムが何を推薦するかによらないことを仮定し、を得ます。iを(全itemを見た上で)クリックする確率です。指数乗に比例することを仮定して、を得ます。