Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

集合知プログラミング第2章推薦を行う

5,585 views

Published on

集合知プログラミング勉強会第2回推薦する発表資料

Published in: Education
  • Be the first to comment

集合知プログラミング第2章推薦を行う

  1. 1.  集合知プログラミング -Programming  Collective  Intelligence- 第2章  推薦を⾏行行う(前半) @millionsmile 16th  of  Oct,  2012,  集合知プログラミング勉強会
  2. 2.  2協調フィルタリング 協調フィルタリングとは、多くのユーザの嗜好情報を蓄積し、あ るユーザと嗜好の類似した他のユーザの情報を⽤用いて⾃自動的に推 論を⾏行行う⽅方法論である。[Wikipadiaより] 協調フィルタリングという⽤用語は1992年にXerox  PARCのDavid   Goldbergが書いた Using  collaborative  filtering  to  weave  an   information  tapestry という論⽂文で最初に使⽤用された。 協調フィルタリングの⼿手法 「ユークリッド距離」 「ピアソン相関」   他「マンハッタン係数」「Tanimoto係数」「Jaccard係数」等
  3. 3.  3データを⽤用意  ~  ディクショナリ型を使う 複数の⼈人々の嗜好情報を表現する⽅方法としてはpythonのディク ショナリ型を⽤用いるのがよい。 ディクショナリ型は要素間に順序がなく、インデックスで要素を 取り出すことはできない。その代わり各要素にはキーと呼ばれる 識別⼦子を値とあわせて登録する。[辞書オブジェクト] {キー1:値1,  キー2:値2,  ...}
  4. 4.  4映画の評者とその評点のディクショナリ 映画の評価者と映画に対する評価スコア(1~5)のデータを pythonのディクショナリをネストして表現する。 コードはこちら。https://gist.github.com/3887602
  5. 5.  5ディクショナリの検索や変更 ディクショナリで作ったデータを検索する >>  critics[Lisa  Rose][Lady  in  the  Water] 実⾏行行結果↓ >>  2.5 ディクショナリで作ったデータを変更する >>  critics[Toby][Snakes  on  a  Plane]=4.0 >>  critics[Toby] 実⾏行行結果 >>  {Snakes  on  a  Plane:  4.5,  Superman  Returns:  4.0,   You,  Me  and  Dupree:  1.0}
  6. 6.  6ユークリッド距離によるスコア ユークリッド距離とは、嗜好空間上の距離の近さによって類似度 を計算するもの。 映画Snakes 5 Toby                                 ユークリッド距離を0~1の値 LaSalle Matthews 4                                 にするために正規化。 Seymour Rose Puig 3                                 類似度= ユークリッド距離= 1 0                                0 1 2 3 4 映画 Dupree TobyとLasalleの映画SnakesとDupreeの類似度 >>  1/(1+sqrt(pow(4.5-4,2)+pow(1-2,2))) 0.47213595499957939
  7. 7.  7pythonでユークリド距離 2点(p1,p2,...)と(q1,q2,...)の場合のユークリッド距離の計算式 コードはこちら。https://gist.github.com/3887602
  8. 8.  8ピアソン相関によるスコア ピアソン相関係数は2つの変数にどの程度の相関があるかを測るた めの指標である。ある直線上にどの程度沿っているかを⽰示す。 1と-1との間に値を取り、完全に相関する場合は1となり、相関が ない場合には0になる。そして逆相関の場合には-1となる。 -  左のSeymourとLasalleの相関スコアは0.4 -  右のRoseとMatthewsの相関スコアは0.75
  9. 9.  9ピアソン相関によるスコア ピアソン相関係数ではある評者が他の評者と⽐比較して⾼高いスコアを つける傾向にあったとしても、その⼆二⼈人の間の差が⼀一貫していれば 完全な相関が現れる。評価の⾼高さ低さをならした計算をする。 データが正規化されていない場合はユークリッド距離よりもよい結 果を得られやすい。
  10. 10.  10pythonでピアソン相関係数 ピアソン相関係数の計算式 コードはこちら。https://gist.github.com/3887602
  11. 11.  11pythonで評者をランキング ⾃自分の好みに最も似ている映画の評者を探す。 コードはこちら。https://gist.github.com/3887602
  12. 12.  12アイテムを推薦する 評者のランキングの⽋欠点 -  ⾃自分と似た嗜好の⼈人を探し、その⼈人好きな映画から⾃自分のみ ていない映画を探すことはできるが回りくどい -  ⾃自分が好きであるはずの映画を観ていない評者を選ぶこと で、漏れが⽣生じる可能性がある -  他の全ての評者は低いスコアにも関わらず、ランキングで選 ばれた⼈人だけが⾼高いスコアを与えている場合もある アイテムの推薦では、⾃自分以外の評者のスコアを集め、それ ぞれの映画へのスコアと⾃自分との類似性に掛け合わせて推薦 する。
  13. 13.  13アイテムを推薦する ⾃自分が観ていない映画とそれぞれの評者によるスコア    S.xからはじまる列は評点を掛けあわせた類似度 Sim.Sumの⾏行行は映画をみた⼈人の類似度の合計 Total/Sim.Sumの⾏行行はその映画をみた評者によるスコア →Total/Sim.Sumがアイテムの推薦のスコアとなる
  14. 14.  14pythonでアイテムを推薦 コードはこちら。https://gist.github.com/3887602
  15. 15.  15pythonでアイテムを推薦の結果 コードはこちら。https://gist.github.com/3887602
  16. 16.  16似ている製品 製品同⼠士、似ているものを推薦するには、ディクショナリの 持ち⽅方を変更するだけで、特定の⼈人のための推薦の関数がそ のままつかえる ↓変更
  17. 17.  17pythonで似ている製品を推薦 コードはこちら。https://gist.github.com/3887602 Superman  Returnsに似ている映画をランキングする
  18. 18.  18製品同⼠士の負の相関 製品の推薦で、マイナスの相関スコアになっているのは、 Superman  Returnsが好きな⼈人は、Just  My  Luckのことを好 まない傾向であることを意味している
  19. 19.  19製品同⼠士の負の相関 製品の推薦で、マイナスの相関スコアになっているのは、 Superman  Returnsが好きな⼈人は、Just  My  Luckのことを好 まない傾向であることを意味している
  20. 20.  20推薦についてもっと詳しく知れる資料 『情報推薦システム⼊入⾨門-理論と実践』 「ソーシャルウェブとレコメンデーション」@hamadakoichi http://www.slideshare.net/hamadakoichi/ss-4113135

×