集合知プログラミング Programming Collective Intelligence (Ch.2 推薦を行う) 2010/01/11 id:shiumachi
Agenda <ul><li>2.1  協調フィルタリング
2.2  嗜好の収集
2.3  似ているユーザを探し出す
2.4  アイテムを推薦する
2.5  似ている製品
2.6 del.icio.us  のリンクを推薦するシステムを作る
2.7  アイテムベースのフィルタリング
2.8 MovieLens  のデータセットを使う
2.9  ユーザベース  VS  アイテムベース
2.10  練習問題 </li></ul>
2.1  協調フィルタリング
協調フィルタリングとは? <ul><li>“協調フィルタリング(Collaborative Filtering, CF)は、多くのユーザの嗜好情報を蓄積し、あるユーザと嗜好の類似した他のユーザの情報を用いて自動的に推論を行う方法論である” (w...
1992年、Xerox PARC の David Goldberg の論文で初めて使われた用語 </li></ul>
協調フィルタリングの例 3 人とも好き 自分と趣味が似てる 似てる二人が好き ↓ じゃあ自分も気に入るかも!
2.2  嗜好の収集
基本はデータ <ul><li>データがないと話にならない
必要なデータは次の3つ </li><ul><li>ユーザ
アイテム
スコア </li></ul><li>スコアは Y/N を 1/0 に変換するなどしてもいい。(ソーシャルブックマークなどではこの手法を使う) </li></ul>
スコアの分類 <ul><li>スコアがたくさん出てくるから混乱しないよう注意
アイテムのスコア </li><ul><li>前述のスコア </li></ul><li>類似性スコア </li><ul><li>ユーザ間、アイテム間の類似性を表す指標 </li></ul><li>推薦スコア(shiumachiの造語) </li>...
2.3  似ているユーザを探し出す
類似性スコアの算出方法 <ul><li>協調フィルタリングのキモだが、方法はたくさんある </li><ul><li>http://ja.wikipedia.org/wiki/距離空間  を参照のこと
テキストで取り上げているのは以下の2つ </li><ul><li>ユークリッド距離
ピアソン相関 </li></ul></ul><li>ここでいいスコアが出たユーザの嗜好を推薦するのがレコメンデーションの第一歩となる </li></ul>
ユークリッド距離 <ul><li>ごく普通の距離。
ユーザ間の、アイテムごとのスコアの差の2乗の和の平方根。
データが正規化されていないと正しい類似性が得にくい。 </li></ul>
ピアソン相関係数 <ul><li>ユーザ間のスコアをそれぞれ x,y とおき、標準偏差をσ(x), 共分散を V(x,y) とすると、ピアソン相関係数は V(x,y)/σ(x)σ(y) となる。
-1 ~ 1 の値をとる。
Upcoming SlideShare
Loading in …5
×

Programming Collective Intelligence 100111

2,972 views

Published on

"Programming Collective Intelligence" reading party, Chapter 2: Recommendation

Published in: Technology
  • Be the first to comment

Programming Collective Intelligence 100111

  1. 1. 集合知プログラミング Programming Collective Intelligence (Ch.2 推薦を行う) 2010/01/11 id:shiumachi
  2. 2. Agenda <ul><li>2.1 協調フィルタリング
  3. 3. 2.2 嗜好の収集
  4. 4. 2.3 似ているユーザを探し出す
  5. 5. 2.4 アイテムを推薦する
  6. 6. 2.5 似ている製品
  7. 7. 2.6 del.icio.us のリンクを推薦するシステムを作る
  8. 8. 2.7 アイテムベースのフィルタリング
  9. 9. 2.8 MovieLens のデータセットを使う
  10. 10. 2.9 ユーザベース VS アイテムベース
  11. 11. 2.10 練習問題 </li></ul>
  12. 12. 2.1 協調フィルタリング
  13. 13. 協調フィルタリングとは? <ul><li>“協調フィルタリング(Collaborative Filtering, CF)は、多くのユーザの嗜好情報を蓄積し、あるユーザと嗜好の類似した他のユーザの情報を用いて自動的に推論を行う方法論である” (wikipedia より)
  14. 14. 1992年、Xerox PARC の David Goldberg の論文で初めて使われた用語 </li></ul>
  15. 15. 協調フィルタリングの例 3 人とも好き 自分と趣味が似てる 似てる二人が好き ↓ じゃあ自分も気に入るかも!
  16. 16. 2.2 嗜好の収集
  17. 17. 基本はデータ <ul><li>データがないと話にならない
  18. 18. 必要なデータは次の3つ </li><ul><li>ユーザ
  19. 19. アイテム
  20. 20. スコア </li></ul><li>スコアは Y/N を 1/0 に変換するなどしてもいい。(ソーシャルブックマークなどではこの手法を使う) </li></ul>
  21. 21. スコアの分類 <ul><li>スコアがたくさん出てくるから混乱しないよう注意
  22. 22. アイテムのスコア </li><ul><li>前述のスコア </li></ul><li>類似性スコア </li><ul><li>ユーザ間、アイテム間の類似性を表す指標 </li></ul><li>推薦スコア(shiumachiの造語) </li><ul><li>推薦対象のユーザに対してどれだけ強く推薦するかを表す指標 </li></ul></ul>
  23. 23. 2.3 似ているユーザを探し出す
  24. 24. 類似性スコアの算出方法 <ul><li>協調フィルタリングのキモだが、方法はたくさんある </li><ul><li>http://ja.wikipedia.org/wiki/距離空間  を参照のこと
  25. 25. テキストで取り上げているのは以下の2つ </li><ul><li>ユークリッド距離
  26. 26. ピアソン相関 </li></ul></ul><li>ここでいいスコアが出たユーザの嗜好を推薦するのがレコメンデーションの第一歩となる </li></ul>
  27. 27. ユークリッド距離 <ul><li>ごく普通の距離。
  28. 28. ユーザ間の、アイテムごとのスコアの差の2乗の和の平方根。
  29. 29. データが正規化されていないと正しい類似性が得にくい。 </li></ul>
  30. 30. ピアソン相関係数 <ul><li>ユーザ間のスコアをそれぞれ x,y とおき、標準偏差をσ(x), 共分散を V(x,y) とすると、ピアソン相関係数は V(x,y)/σ(x)σ(y) となる。
  31. 31. -1 ~ 1 の値をとる。
  32. 32. 相関の強さで類似性を判断するので、ユーザ間のスコアの絶対値が大きく違う場合に有用。 </li></ul>
  33. 33. 2.4 アイテムを推薦する
  34. 34. アイテムの推薦 <ul><li>協調フィルタリングで説明した通り、自分との類似性スコアの高いユーザを選び出し、彼らのアイテムに対するスコアを抽出するのが基本
  35. 35. テキストでは重みつき平均(後述)を使っているが、単なる平均なり中間値なり、状況に応じて推薦スコアを算出する必要があるだろう </li></ul>
  36. 36. 重みづけスコアリング <ul><li>自分と似ているユーザだけだと情報が少ない
  37. 37. 似てないユーザの情報もとるとノイズが多い
  38. 38. そこで重みづけを行う(加重平均) </li><ul><li>類似性スコアを1に正規化してアイテムのスコアにかけるのが簡単なやり方
  39. 39. あるアイテムに対して、自分と似ているユーザ10人が最低点をつけているとしても、似ていない残り90人が満点をつけていればかなりいい点が期待できる </li></ul></ul>
  40. 40. 2.5 似ている製品
  41. 41. アイテムの類似性スコア <ul><li>似ているユーザでなく似ている製品を調べたいが、どうすれば?
  42. 42. 単純に今まで使ってたユーザとアイテムの関係を逆転させればいいだけ。 </li></ul>
  43. 43. 2.6 del.icio.us のリンクを 推薦するシステムを作る
  44. 44. SBMで学ぶ実例 <ul><li>ユーザ:ユーザ
  45. 45. アイテム:URL
  46. 46. スコア:ブックマークしていれば 1、そうでなければ 0
  47. 47. 全部を取り出すのは不可能なので、うまくユーザを選出する </li></ul>
  48. 48. サンプルプログラム twitter のフォロワーを推薦する <ul><li>ユーザ:ユーザ
  49. 49. アイテム:ユーザ
  50. 50. スコア:フォローしていれば 1、そうでなければ 0
  51. 51. ユーザの選出は自分(shiumachi)のフォロワーから適当に
  52. 52. 類似性スコア算出にはユークリッド距離を使用 </li><ul><li>多分 Tanimoto 係数使う方がいい </li></ul></ul>
  53. 53. 上位10個の組み合わせ ユーザ1 ユーザ2 類似性スコア yosuke__ tilfin 0.00730 daisukebe_ yosuke__ 0.00621 daisukebe_ tilfin 0.00513 yosuke__ ARAMAKI 0.00510 shiumachi yosuke__ 0.00495 yosuke__ noritada 0.00493 yosuke__ ranha 0.00493 tilfin ARAMAKI 0.00467 tilfin ranha 0.00457 tilfin noritada 0.00457
  54. 54. 結果の考察 <ul><li>仲のいい友人同士( shiumachi, yosuke__, daisukebe)などは互いに共通のフォロワーを持っているので類似度が高く出た
  55. 55. フォロワーの差が大きいと類似度は低く出る </li><ul><li>marqsとの類似度が低く出るのは、彼だけフォロワーが上記メンバーより多いため </li></ul></ul>
  56. 56. 2.7 アイテムベースの フィルタリング
  57. 57. アイテムベースの利点 <ul><li>アイテムはユーザに比べてスコアの変化が少ない
  58. 58. 情報の更新にリアルタイム性が必要ないので、夜間バッチ等で十分対応できる
  59. 59. (2.5 の話がここと分離している理由がよくわからない) </li></ul>
  60. 60. 2.8 MovieLens のデータセットを 使う
  61. 61. Movie Lens とは <ul><li>ミネソタ大学 Group Lens プロジェクトによって作られた、映画の評価に関するデータセット
  62. 62. http://www.grouplens.org/node/73 から入手可能。 </li></ul>
  63. 63. 2.9 ユーザベース VS アイテムベース
  64. 64. どっちがいいの? <ul><li>アイテムベース </li><ul><li>ユーザから離れたシステムでゆっくりスコアリング処理ができる
  65. 65. 疎集合データに強い(密集合の場合はユーザベースと大して変わらない) </li></ul><li>ユーザベース </li><ul><li>シンプル
  66. 66. 変更が頻繁に行われる場合はこちらが便利
  67. 67. ユーザごとの嗜好がバラバラな場合も向いている </li><ul><li>SBMや音楽推薦サイトなど </li></ul></ul></ul>
  68. 68. 2.10 練習問題
  69. 69. Tanimoto係数 <ul><li>2 つの集合の類似度を計る指標。
  70. 70. Jaccard 係数の拡張。
  71. 71. ベクトル A, B があり、 A の大きさを ||A|| とするとき、 Tanimoto 係数は以下の式で表される。 </li></ul><ul><li>参考: http://en.wikipedia.org/wiki/Jaccard_index
  72. 72. テキスト巻末に載っている式は Jaccard 係数だと思われる。 ( 積集合の要素数 ) / ( 和集合の要素数 ) </li></ul>A ・ B / ( ||A||^2 + ||B||^2 – A ・ B )
  73. 73. Thank you !

×