Introduction to
Recommender
Systems
Zansa #3 2012.1.30 at D2 Communications
KOMIYA Atsushi (@komiya_atsushi)
Agenda
1. 自己紹介&本日の発表について
2. レコメンデーションとは?
3. レコメンデーションを実現する技術
4. 実サービスへの応用
5. 本日の発表のまとめ
1. 自己紹介
      &
本日の発表について
自己紹介・バックグラウンド
• 名前 / Twitter ID
 • 小宮 篤史(@komiya_atsushi)
• おしごと
 • Web / RIA エンジニア @ 中小 SIer
 • レコメンデーション関連やらテキストマイ
   ニング的な研究開発 ”支援” をしてます
• 学部・院時代
 • 情報理論・情報源符号化(データ圧縮)の
   研究をしてました
本日の発表の目的・ねらい
• 「レコメンデーション」を正しく理解
  していただき、よりよいサービス提供
  に貢献したい
• 何も考えずに「Mahout 使えば簡単だ
  よね」と言う輩を一人でも減らしたい
 • あ、Mahout はいいプロダクトですよ
おことわり
• 本勉強会で発表する内容は、主観的な
  意見・見解が多分に含まれています
• 所属する会社・組織の意見・見解とは
  無関係であることはもちろんのこと、
  業界の一般的な意見・見解でもないこ
  とにご注意ください
 • あくまでも一個人の意見です
2.レコメンデーションとは?
「レコメンデーション」
• 意味:「推薦」「おすすめ」
• サービスを利用するユーザにとって
  有用・有益・価値のある情報を、
  サービス側からユーザに提示すること
• 「情報フィルタリング」技術の応用
 • たくさんある情報の中から、価値のある
   情報を抽出するしくみ
 • 「価値の有無」はユーザ毎に異なる
Amazon
における商品レコメンデーションの例
Amazon
における商品レコメンデーションの例
asahi.com
における関連記事レコメンデーションの例
asahi.com
における関連記事レコメンデーションの例
last.fmにおける
アーティストのレコメンデーション例
last.fmにおける
アーティストのレコメンデーション例
いろんな「レコメンデーション」
• 「アイテム」の推薦
 • ECサイト(例:Amazon)
   • 販売している「商品」を推薦する
 • ニュースサイト(例:asahi.com)
   • 購読している記事の「関連記事」を推薦する
 • 音楽関連サービス(例:last.fm)
   • 「アーティスト」や「曲」を推薦する
• 「ユーザ」の推薦
 • 各種 SNS(Twitter, Facebook…)
   • リンクレコメンデーション
いろんな「レコメンデーション」
• 「アイテム」の推薦
 • ECサイト(例:Amazon)
   • 販売している「商品」を推薦する
 • ニュースサイト(例:asahi.com)
   • 購読している記事の「関連記事」を推薦する
 • 音楽関連サービス(例:last.fm)
   • 「アーティスト」や「曲」を推薦する
• 「ユーザ」の推薦
           今回お話するのは
  • 各種 SNS(Twitter, Facebook…)
               こちらです
    • リンクレコメンデーション
何のために「レコメンデーション」するのか?
• サービス提供サイド
 • 売り上げをアップさせたい
  • 興味のありそうな商品を提示することで、ユー
    ザの購入機会・意欲を増やす
  • ユーザの興味を開拓し、優良顧客に変えていく
  • PV 数を稼ぐことで、広告収入の増加を見込む
• ユーザサイド
 • セレンディピティ(幸運を掴み取る能力)
  • いままで知り得なかった「情報」を知ることが
    できる
  • 新たな「興味」を発掘することができる
レコメンデーションの精度・性能を測るには?
• 定性的評価
 • 被験者にレコメンデーション結果の良し悪
   しを評価してもらう
• 定量的評価
 • 正解アイテムの数に着目する
   (Precision, Recall)
 • 評点(レーティング)の誤差に着目する
   (MAE, RMSE)
 • レコメンデーション結果の提示順序を
   含めた質を測る (MAP, nDCG)
Precision, Recall (適合率、再現率)
• 定義
 • N…レコメンドされたアイテムの集合
 • C…ユーザにとっての正解アイテムの集合
 • R…N に含まれる正解アイテムの集合
                          
 •  =
                          
                    
 •  =
MAE, RMSE
(Mean absolute error, Root mean square error)
• 定義
  • …アイテムの個数
  •  …アイテム i に対する予測評点
  •  …アイテム i に対するユーザの評点
               1    
  •  =               − 
               
                     
                          ( − )2
  •  =
MAP (Mean average precision)
• 定義
  • () … レコメンデーション結果の上位 k 個
    における適合率
  • () … レコメンデーション結果の上位から
    k 番目のアイテムが正解の場合に 1、不正解
    なら 0
  • () … ユーザ u の平均適合率
                    
                    =1(() × ())
      =
                              
               ∈ ()
  •  =
2. レコメンデーションを
    実現する技術
言葉の定義
• アイテム
 • ユーザにより購入・消費される商品や
   コンテンツ
 • レコメンデーションの対象となる
• ユーザ
 • アイテムを購入・消費する存在
• 評点
 • レーティング、点数(Amazon の星の数)
• アクティブユーザ
 • アイテムのレコメンデーションを受けるユーザ
レコメンデーションを実現するには?
• ある「アイテム」に似ているほかの
  「アイテム」を探し出す
 • アクティブユーザが見ているアイテムに
   似ているアイテムを、レコメンドする
• アクティブユーザに似た(行動をとる)
  ほかのユーザを探し出す
 • アクティブユーザに似たユーザが購入・
   消費したアイテムを、レコメンドする
レコメンデーションに利用できる情報
• アイテムそのものの情報(内容)
 • ニュースの記事
• アイテムのメタデータ
 • 【例:書籍】タイトル、著者、ジャンル…
• ユーザ属性
 • 年齢、性別、家族構成、居住地、趣味…
• ユーザの行動履歴
 • 「ユーザ」と「アイテム」の関係性
 • レーティング、購買、視聴、閲覧履歴…
二つのアプローチ
• コンテンツベース
 • アイテムそのものの内容やメタデータを利用し、
   類似性・関連性を計算する
 • レコメンデーション結果がありきたりになりがち
• 協調フィルタリングベース
 • ユーザの行動履歴を利用し、類似度を計算する
 • 評点に基づく行動履歴であれば、類似度をもとに、
   アクティブユーザが付与するであろう予測評点を
   計算する
 • ユーザベースの手法とアイテムベースの
   手法が存在する
コンテンツベース・レコメンデーションの例

      「探偵ガリレオ」
       著者:東野 圭吾
       ジャンル:ミステリー、探偵モノ
コンテンツベース・レコメンデーションの例

        「探偵ガリレオ」
         著者:東野 圭吾
         ジャンル:ミステリー、探偵モノ




 容疑者Xの献身     さまよう刃      八つ墓村
(シリーズが同じ)   (著者が同じ)   (ジャンルが同じ)
協調フィルタリング
ユーザベースとアイテムベース (1/2)
• ユーザベース
 • ユーザを中心に考え、すべてのユーザ間
   の類似度を行動履歴をもとに算出する
 • 算出された類似度をもとに、特に類似度
   の高いユーザの持つアイテムを推薦する
• アイテムベース
 • アイテムを中心に考え、すべてのアイテ
   ム間の類似度を、ユーザの行動履歴をも
   とに算出する
協調フィルタリング
ユーザベースとアイテムベース (2/2)
          徳川   松平   山内    坂本
探偵ガリレオ    購入   購入
容疑者Xの献身   購入   購入   購入
さまよう刃               購入    購入
八つ墓村           購入         購入
• ユーザベースだと…
 • 「徳川」と「松平」は二つの同じ商品を購入しているから、
   二人のユーザは類似しているだろう
• アイテムベースだと…
 • 「探偵ガリレオ」と「容疑者Xの献身」を両方とも購入して
   いる二人のユーザがいるから、二つのアイテムは類似してい
   るだろう
ユーザベースの協調フィルタリング (1/2)
ユーザ間の類似度を算出する
• 定義
 •  … ユーザ a とユーザ u の行動履歴に共起するアイ
   テムの集合
 •  … ユーザ u がアイテム i に対して付与する評点
• コサイン類似度 (Cosine similarity)
                    ∈  
 •  =
                           2
                                          2
                                              
              ∈             ∈

• ピアソン相関係数 (Pearson correlation)
                      ∈ ( − )( − )
 •  =                             2                             2
              ∈   −          ∈  −
ユーザベースの協調フィルタリング (2/2)
予測評点を計算する
• 定義
 • (, ) … ユーザ a に類似しており、アイテ
   ム i を評点づけしているユーザの集合
• 評点の予測値算出式
 • コサイン類似度
                ∈(,)  
  • ′ =
                  ∈(,) 

 • ピアソン相関係数
                          ∈(,)  ( − )
  • ′ =  +
                                 ∈(,)
ユーザベース協調フィルタリングの例 (1/3)
サンプルデータ
映画タイトル           徳川      松平      山内
ロード・オブ・ザ・リング    ★★★★★   ★★★★★     ★
ハリー・ポッター        ★★★★    ★★★★★    ★★
フォレスト・ガンプ        ★★★     ★★★     ★★★
ダイ・ハード           ★★       ★     ★★★★
ソウ                ★       ★     ★★★★★
13日の金曜日           ?       ★     ★★★★★
ナルニア国物語           ?     ★★★★★     ★


               徳川さんにおすすめするべき
               映画はどちらが好ましいか?
                 予測評点を算出して
                 比較してみましょう
ユーザベース協調フィルタリングの例 (2/3)
ユーザ間類似度を計算する
映画タイトル          徳川        松平      山内
ロード・オブ・ザ・リング   ★★★★★     ★★★★★     ★
ハリー・ポッター       ★★★★      ★★★★★    ★★
フォレスト・ガンプ      ★★★        ★★★    ★★★
ダイ・ハード          ★★
                       徳川さんと行動履歴が類似する
                           ★      ★★★★
                          ユーザは松平さん。
ソウ              ★          ★     ★★★★★
                       ピアソン相関係数の方がより
13日の金曜日         ?          ★     ★★★★★
                         明らかな結果となる。
ナルニア国物語         ?        ★★★★★     ★
徳川さんとの類似度
(コサイン類似度)                0.984   0.636
徳川さんとの類似度
(ピアソン相関係数)               0.949   -1.000
ユーザベース協調フィルタリングの例 (3/3)
評点予測値を計算する

     映画タイトル             松平      山内
 13日の金曜日                 ★     ★★★★★
 ナルニア国物語             ★★★★★       ★
 徳川さんとの類似度(コサイン)       0.984    0.636
 徳川さんとの類似度(ピアソン)       0.949    -1.000



  映画タイトル    予測値       予測値
           (コサイン)   (ピアソン)
                                 徳川さんには
 13日の金曜日    2.570    1.000
                               「ナルニア国物語」
 ナルニア国物語    3.429    5.000       がオススメ!
協調フィルタリングのいいところ
• アイテムのメタデータなどが要らない
 • メタデータを充実させるにはコストや手
   間がかかる
• 「ありきたり」ではないレコメンデー
  ションができる
 • 常識にとらわれない、意外性のあるレコ
   メンデーション
協調フィルタリングのダメなところ
• 計算量・オンライン処理
 • ユーザ・アイテムの規模が大きくなると、ナイーブ実装では
   計算量的にオンライン処理ができなくなる
• コールドスタート問題
 • 十分な行動履歴がないと、まともな推薦ができない
 • サービス開始直後や、新規ユーザ・新規アイテムの登録時に
   発生する
 • コンテンツベースの手法と組み合わせて改善可能
• スパース問題
 • アイテム数が多すぎて、ユーザ間・アイテム間の関係性が疎
   になってしまう
 • Random walk を取り入れることで改善可能
   http://www.slideshare.net/komiyaatsushi/tokyo-webmining-
   8cfrwr
そのほかの協調フィルタリング手法
• アイテムベース
 • Amazon の手法だと、オフラインの前処理が
   必要になるものの、オンラインでのレコメ
   ンデーションが可能になる
    • http://blog.k11i.biz/2011/06/amazon-item-to-item-
      cf.html
• Slope one
 • オンラインでのレコメンデーションが可能
   で、行動履歴の変更にもすぐに追従できる
    • http://lemire.me/fr/documents/publications/lemir
      emaclachlan_sdm05.pdf
Apache Mahout
協調フィルタリングの各種実装を提供
• スケーラブルであることを目指した
  機械学習ライブラリ
• 協調フィルタリングの下記実装を提供する
 • ユーザベース
 • アイテムベース
 • Slope One
• 独自に協調フィルタリングを実装する前に、
  まず利用を検討してみましょう
3. 実サービスへの適用

     ※注意!
ここから先の説明は、発表者の主観が特に
 強く現れていますのでご注意ください。
実サービスに適用するその前に!
• 「Mahout 使えば(レコメンデーションな
  んて)簡単だよね」
 • 本当にそうでしょうか?
 • 機械が計算して出した予測(レコメンデー
   ション)を、そのまま信じてユーザに提示
   していいの? ユーザは本当に喜ぶの?
• アイテムの内容やユーザの嗜好を考慮して、
  結果を取捨選択したり、レコメンデーショ
  ンエンジンのチューニングをする必要があ
  る
実サービスに適用する上で気をつけるべきこと

• ユーザ視点
 • レコメンドされてうれしいもの
 • ユーザの気分を損なわせない
 • レコメンデーションの理由付け
• サービス提供者視点
 • レコメンドする状況・タイミング
レコメンドされてうれしいもの (1/2)
• レコメンドされたアイテムが、アクティブ
  ユーザにとって妥当か?
 • アクション映画大好きなユーザに、
   「ダイ・ハード」を推薦したとして、果たして喜
   ぶだろうか?
• レコメンデーションの妥当性とは?
 • 「見当違い」であってはならない
 • でも、「当たり前」であってもダメ
• アクティブユーザにとって「意外」だったり
  「新鮮」なレコメンデーションであるべき
レコメンドされてうれしいもの (2/2)
• シリーズもののアイテム(コミック、TV
  ドラマの DVD など)を推薦する場合
 • 途中まで購入・消費しているユーザに、最
   終巻・最終回のアイテムを推薦する?
 • まったく購入・消費していないユーザに対
   して、シリーズ途中の(人気の高い)アイ
   テムを推薦する?
• ユーザの購入・消費状況を考慮したレコメ
  ンデーションをすることが必要
ユーザの気分を損なわせない
• アイテムによっては、ターゲットとしてい
  る客層が存在する
 • 成人男性向け、幼児・キッズ向け…
• 客層を無視してレコメンデーションをして
  しまうと
 • ユーザの気分を不快にさせてしまう
 • 「レコメンデーション」というシステムに
   悪印象を与えてしまう
• ユーザのプロファイルを参考に、レコメン
  デーション結果をフィルタリングする
レコメンデーションの理由付け
• 協調フィルタリングでは、ときに突飛なレコ
  メンデーションが行われてしまうことも
 • ユーザにしてみると、なぜレコメンドされたのか
   がわからず、自分に価値のあるアイテムかどうか
   判断できない
• レコメンデーションの妥当性・納得感をユー
  ザに与える「理由」「背景」を添えることで、
  突飛な印象を幾分和らげることができる
 • 「この商品を買った人は、こんな商品も買ってい
   ます」
 • 「この商品を見た後に買っているのは?」
レコメンドする状況・タイミング
• サービス提供者として、どの状況でレコメ
  ンデーションをしたいのか?
 • サービスにユーザがログインしているとき
   だけ?
 • サインアップ前のユーザに対してもレコメ
   ンデーションしたい?
• 状況・シーンにより、利用できる手法が限
  られる
 • 前者の状況であればユーザベースの手法が
   使えるが、後者はアイテムベースの手法し
   か使えない
5. 本日の発表のまとめ
今日お話しした内容
レコメンデーション … ユーザにとって価値のある情報を提示すること

コンテンツベースのレコメンデーション … アイテムの内容やメタデータ
を利用して、アイテムを推薦する


協調フィルタリング … ユーザの行動履歴を利用して、類似するユー
ザ・アイテムを探し出す

 ユーザベースの手法 … ユーザ間の類似度を計算し、類似するユーザ
 が消費したアイテムを推薦する


 アイテムベースの手法 … アイテム間の類似度を計算し、アクティブ
 ユーザが消費したアイテムに類似する別のアイテムを推薦する
ご清聴
 ありがとう
ございました

Introduction to Recommender Systems 2012.1.30 Zansa #3