レコメンド:ディザリングとは -改悪することで改善される-

Pocket

初めまして。ユナイテッド株式会社エンジニアの伊東と申します。
このブログではユナイテッド株式会社で働くエンジニアが業務に関連した技術に関して担当していきます。
第一回目は、レコメンドの工夫の一つであるディザリングについてご紹介します。
(テザリングではないのであしからず!)

レコメンドとは
amazonに代表されるECサイトに訪問したユーザに欲しいと思われる商品を推薦する手法です。レコメンドに使用される情報は主に、ユーザの行動履歴(どんな商品を見たかor購入したか)や商品情報(商品の詳細、売れ筋など)があります。大きなサイトだと、商品は数万個、DAU数十万人となるため一日単位でも膨大なデータが生まれています。この膨大なデータを使っていかに有用な情報を引き出すかが問題になっています。
先日、ビッグデータのカンファレンスである「Hadoop Conference 2014」に先週の7月8日に参加しました。丁度、草薙さん(MapR)の「実践機械学習 MahoutとSolrを活用したレコメンドにおけるイノベーション」という発表を拝聴しましたので、その中で触れていたのが「ディザリング」という手法です。

ディザリングとは
レコメンドされる順序は関連度スコアに依存しています。つまり関連度の高い商品しかユーザには見せられていません。ディザリングとは、関連度スコアにノイズを加えることで、関連度の低い商品もいくつか広告表示させる手法です。この手法の背景にはユーザが広告を閲覧するのは1ページ目がほとんどで、3ページ目を閲覧するユーザはほぼ0であるという調査結果があるためです。

図.Webページに訪れるユーザは2ページ目以降に提示される商品はほとんど見ない

図.Webページに訪れるユーザは2ページ目以降に提示される商品はほとんど見ない

つまりユーザは2ページ目までしか見ていないので、何度広告を見ても同じ商品しか見ていないということになります。一方、ディザリングによって1ページ目の商品に関連度の低い商品がでることになれば、ユーザは1ページ目に色々な商品を検討することができます。この変更によって長期的に見ればユーザの欲しい商品がでる可能性が高まり、購入するとさらに関連度が正確になっていくという利点が生まれます。
ディザリングの実装自体は順位の対数に正規分布のランダムノイズを加えるだけという単純な仕組みなようです。ディザリングを加えたスコアをソートすることで、関連度の低い商品が時々現れるようなスコアリングができるようになります。

レコメンドというと、「協調フィルタリングによって推薦する商品を決定すること」と捉えがちですが、それ以外の点で工夫すべき所が数多くあることの好例だと思います。

※草薙さんの資料はこちらから閲覧できます。
http://www.slideshare.net/MapR_Japan/mahoutsolr-hadoop-conference-japan-2014
※資料の元となった書籍「実践 機械学習」も無料でDLできます。
https://www.hadoop-times.com/technology/pdf-practical-machine-learning.html

ダイナミックリターゲティングについて