個人用のメモです, 推薦システムを勉強したことがなかったので, おさらい. 後で目次含め中身丸ごと書き換え予定.
推薦システム
定義
以下に挙げることを行ってくれるようなシステム. 一言でいうと, ユーザの興味に合わせておすすめのコンテンツを勧める・お勧めでないコンテンツを除外するシステム.
- 推薦:ユーザーの目的に合致するコンテンツを幾つか選択して提示する
- 予測:コンテンツへのユーザーの評価を予測する
- フィルタリング:ユーザーにとって迷惑なコンテンツ(スパムなど)を選択して除外する
評価指標
- 精度
- 適合率・再現率
- セレンディピティ
- ユーザーへのアンケート評価
- 顧客生涯価値[5]
どの評価指標が適切かは、後に書く推薦システムの分類(運用目的での手法の分類など)でどの種類になるかによって変わってくる. なので「精度が高かったからok!」と言えるかどうかはシステムの目的に応じて判断しないといけない.
講義・解説スライドなど
推薦システムの分類
ここの分類は主に[6]の論文での推薦システムの分類.
図: [5]よりECサイトでの推薦システムの利用するデータや個人化の程度による分類について
個人化による分類
全ユーザーに対して同じ推薦 例えば, 人気商品ランキングなどが代表的.
一時的な個人化 「完全個人化」と区別がつきにくいけど, 類似するユーザーを一時的にひとまとめに扱う方法. (認識が正しければ)例えば, Amazonの「これを買った人はこんな商品も買っています」など.
完全個人化 これまでユーザーを一部・全体でひとまとめにして扱っていたのに対して, ユーザー個人の特徴やユーザー個人のログに応じて推薦内容を変更する.
アルゴリズムにて用いるデータによる分類
- 協調フィルタリング:他のユーザーのコンテンツに対する評価を利用する
- 内容ベース:コンテンツそのものの特徴を利用
- ハイブリッド:上二つの組み合わせ
協調フィルタリングはユーザーの知らないコンテンツを(他のユーザーの評価をベースにして)提示できる一方, コールドスタート問題を抱える. つまり大量のデータがない場合には提示が難しい.
アルゴリズムによる分類
後ほど出てくるアルゴリズムと章分けが一致してないのは…TODO
類似度
例えば、ユーザーaのコンテンツに対する評価履歴を比較して、似た評価を与えたユーザーbを見つけてくる. そのあと, ユーザーaにはユーザーbが高評価を与えたコンテンツを推薦すれば, ユーザーaは気に入ってくれるだろうと考える手法. すると, そして類似度の定義の仕方は問題設定やデータによって異なってくる.
目的関数は類似度の最大化(なんらかの定義をした距離の最小化)など.
行列分解
例えば、ユーザーとコンテンツをそれぞれ潜在ベクトルで表現してその内積をコンテンツへの満足度とする. この潜在ベクトルを行列分会で求める.
目的関数は,
[評価が存在する時のみ1のフラグ]*(真の正解となるコンテンツへの評価 - コンテンツ・ユーザー潜在ベクトルの内積) + 正則化項
などとなる. 正則化項は例えばコンテンツの潜在ベクトルのL2正則化など.
ベイズ推定
TODO
上に書いた行列分解の手法についてくる正則化項について、
L2正則化は事前分布が正規分布のMAP推定(事後確率最大化)と見て取れる.
おそらく, ユーザーの潜在ベクトルとコンテンツの潜在ベクトルをそれぞれ共役事前分布を使って表してユーザーの評価を分布で表現する.
他の手法と異なり、予測したユーザーの評価の自信度(予測にどれだけ確信が持てるか)を計算できる.
バンディット
[4] が有名. Contextual bandit単体のスライドがあまりなかったのでこちらを参照.
www.slideshare.net
一言にバンディットと言ってもたくさんアルゴリズムがある. 推薦システムではユーザーかコンテンツに特徴がついているケースが多いので Contextual なものに限定しても,
- Reduce to MAB
- EXP4.P
- LinUCB
- Epoch-Greedy
- ILOVETOCONBANDITS
など問題設定などで多数のアルゴリズムが存在する.
Deep Learning
以下のリンクは全て別々の論文です.
www.slideshare.net
xxx2vec
これだけで項目を分けるのもどうかと思いましたが, たくさんあるので分けました.
- Item2Vec: Neural Item Embedding for Collaborative Filtering
- word2vec-recommender
- Distributed Representation-based Recommender Systems in E-commerce
- doc2vecを使った例
- User Modeling Using LSTM Network
- AAAI17より, user2vec.
- E-commerce in Your Inbox: Product Recommendations at Scale
- これもuser2vecの名
Web上における推薦システム
そもそも、webで集められるデータを用いて推薦を行うためには様々な前処理も必要. なのでWeb上における推薦システムを作る上では「データの前処理」、「ユーザーの行動パターンの発見」「行動パターンの分析」の三つに分けられる [3]. もちろん, これらのログを処理してWebへと応答するシステムには時間的制約が強くかけられるが, 省略.
SNSが推薦システムにどのような影響を与えるかのモデルに対する考察は
を参照.
データの前処理
- fusion: 異なるサーバーにて運営されているサービスのログファイルを統合するステップ.
- cleaning: ユーザーごとに取得されたログファイルは非連続な時系列だったり, セッションが切れたために異なるログに記録されるケースが多い. それらをまとめる・同じセッションのログファイルを特定するなどしてデータサイズを減らす
- identification: ユーザーの特定. 個人のプライバシーの問題のため個人情報を特定できない場合、どのように統合するかが問題となる
- セッション: ログファイルの中から連続するセッションのログを特定する
- パス: 非連続な時間で取得したログから, ユーザーのページ遷移などの行動を特定する
これらを踏まえて初めて機械学習のための特徴を作ることができる.
ユーザーの行動パターンの発見
Web上のデータマイニングでよく使うのは
- HMM
- アソシエーションルール
- PageRank
- クラスタリング
- LSTM
類似するユーザーの発見を行うにはユーザー間の類似度を適切に定義する必要がある. そしてその簡単な説明が以下.
クラスタリングの手法については以下の記事の後半に少しだけ書いたきがする.
時間情報を考慮した推薦
コンテンツは発売からの時間などで人気や需要が変化していく.
- ユーザーの評価の基準
- コンテンツの人気
- ユーザーの興味
が時間ごとに変化することを考慮したモデルが求められる.
参考文献
[1] 神嶌 敏弘 “推薦システムのアルゴリズム (1)‐(3)” 人工知能学会誌, 2007‐2008
[2] Swearingen, Kirsten, and Rashmi Sinha. “Beyond algorithms: An HCI perspective on recommender systems.” ACM SIGIR 2001 Workshop on Recommender Systems. Vol. 13. No. 5-6. 2001.
[3] Dubey, Purvi, and Pramod S. Nair. “Recommendation System for Web Mining: A Review.” International Journal of Computer Applications 109.11 (2015): 1-6.
[4] Li, Lihong, et al. “A contextual-bandit approach to personalized news article recommendation.” Proceedings of the 19th international conference on World wide web. ACM, 2010.
[5] Tomoharu Iwata, Kazumi Saito, Takeshi Yamada, “Recommendation Method for Improving Customer Lifetime Value,” IEEE Transactions on Knowledge and Data Engineering, Vol.20, No.9, 1254-1263, 2008
[6] Schafer, J. Ben, Joseph A. Konstan, and John Riedl. “E-commerce recommendation applications.” Applications of Data Mining to Electronic Commerce. Springer US, 2001. 115-153.