SlideShare a Scribd company logo

           集合知プログラミング
                 -Programming	
  Collective	
  Intelligence-



                              第2章  推薦を⾏行行う(前半)




                                         @millionsmile
    16th	
  of	
  Oct,	
  2012,	
  集合知プログラミング勉強会





                                                                                2
協調フィルタリング
 協調フィルタリングとは、多くのユーザの嗜好情報を蓄積し、あ
 るユーザと嗜好の類似した他のユーザの情報を⽤用いて⾃自動的に推
 論を⾏行行う⽅方法論である。[Wikipadiaより]

 協調フィルタリングという⽤用語は1992年にXerox	
  PARCのDavid	
  
 Goldbergが書いた Using	
  collaborative	
  filtering	
  to	
  weave	
  an	
  
 information	
  tapestry という論⽂文で最初に使⽤用された。

 協調フィルタリングの⼿手法
 「ユークリッド距離」
 「ピアソン相関」	
  
 他「マンハッタン係数」「Tanimoto係数」「Jaccard係数」等





                                         3
データを⽤用意	
  ~	
  ディクショナリ型を使う
 複数の⼈人々の嗜好情報を表現する⽅方法としてはpythonのディク
 ショナリ型を⽤用いるのがよい。

 ディクショナリ型は要素間に順序がなく、インデックスで要素を
 取り出すことはできない。その代わり各要素にはキーと呼ばれる
 識別⼦子を値とあわせて登録する。[辞書オブジェクト]
 {キー1:値1,	
  キー2:値2,	
  ...}





                                               4
映画の評者とその評点のディクショナリ
 映画の評価者と映画に対する評価スコア(1~5)のデータを
 pythonのディクショナリをネストして表現する。

 コードはこちら。https://gist.github.com/3887602





                                                                                          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
ユークリッド距離によるスコア
           ユークリッド距離とは、嗜好空間上の距離の近さによって類似度
           を計算するもの。
 映画
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
pythonでユークリド距離
 2点(p1,p2,...)と(q1,q2,...)の場合のユークリッド距離の計算式


 コードはこちら。https://gist.github.com/3887602





                                        8
ピアソン相関によるスコア
 ピアソン相関係数は2つの変数にどの程度の相関があるかを測るた
 めの指標である。ある直線上にどの程度沿っているかを⽰示す。
 1と-1との間に値を取り、完全に相関する場合は1となり、相関が
 ない場合には0になる。そして逆相関の場合には-1となる。
 -	
  左のSeymourとLasalleの相関スコアは0.4
 -	
  右のRoseとMatthewsの相関スコアは0.75





                                         9
ピアソン相関によるスコア
 ピアソン相関係数ではある評者が他の評者と⽐比較して⾼高いスコアを
 つける傾向にあったとしても、その⼆二⼈人の間の差が⼀一貫していれば
 完全な相関が現れる。評価の⾼高さ低さをならした計算をする。

 データが正規化されていない場合はユークリッド距離よりもよい結
 果を得られやすい。





                                               10
pythonでピアソン相関係数
 ピアソン相関係数の計算式


 コードはこちら。https://gist.github.com/3887602





                                               11
pythonで評者をランキング
 ⾃自分の好みに最も似ている映画の評者を探す。

 コードはこちら。https://gist.github.com/3887602





                                            12
アイテムを推薦する
 評者のランキングの⽋欠点
 -	
  ⾃自分と似た嗜好の⼈人を探し、その⼈人好きな映画から⾃自分のみ
 ていない映画を探すことはできるが回りくどい
 -	
  ⾃自分が好きであるはずの映画を観ていない評者を選ぶこと
 で、漏れが⽣生じる可能性がある
 -	
  他の全ての評者は低いスコアにも関わらず、ランキングで選
 ばれた⼈人だけが⾼高いスコアを与えている場合もある

 アイテムの推薦では、⾃自分以外の評者のスコアを集め、それ
 ぞれの映画へのスコアと⾃自分との類似性に掛け合わせて推薦
 する。





                                         13
アイテムを推薦する
 ⾃自分が観ていない映画とそれぞれの評者によるスコア




   


 S.xからはじまる列は評点を掛けあわせた類似度
 Sim.Sumの⾏行行は映画をみた⼈人の類似度の合計
 Total/Sim.Sumの⾏行行はその映画をみた評者によるスコア
 →Total/Sim.Sumがアイテムの推薦のスコアとなる





                                               14
pythonでアイテムを推薦
 コードはこちら。https://gist.github.com/3887602





                                               15
pythonでアイテムを推薦の結果
 コードはこちら。https://gist.github.com/3887602





                                     16
似ている製品
 製品同⼠士、似ているものを推薦するには、ディクショナリの
 持ち⽅方を変更するだけで、特定の⼈人のための推薦の関数がそ
 のままつかえる



 ↓変更





                                               17
pythonで似ている製品を推薦
 コードはこちら。https://gist.github.com/3887602
 Superman	
  Returnsに似ている映画をランキングする





                                                          18
製品同⼠士の負の相関
 製品の推薦で、マイナスの相関スコアになっているのは、
 Superman	
  Returnsが好きな⼈人は、Just	
  My	
  Luckのことを好
 まない傾向であることを意味している





                                                          19
製品同⼠士の負の相関
 製品の推薦で、マイナスの相関スコアになっているのは、
 Superman	
  Returnsが好きな⼈人は、Just	
  My	
  Luckのことを好
 まない傾向であることを意味している





                                                         20
推薦についてもっと詳しく知れる資料
 『情報推薦システム⼊入⾨門-理論と実践』

 「ソーシャルウェブとレコメンデーション」@hamadakoichi
 http://www.slideshare.net/hamadakoichi/ss-4113135

More Related Content

Viewers also liked

傾向スコアでみる ソーシャルネットワーク分析
傾向スコアでみる ソーシャルネットワーク分析傾向スコアでみる ソーシャルネットワーク分析
傾向スコアでみる ソーシャルネットワーク分析Hiroko Onari
 
Social network analysis for startups ch6
Social network analysis for startups ch6Social network analysis for startups ch6
Social network analysis for startups ch6
Hiroko Onari
 
Tokyo webmining 複雑ネットワークとデータマイニング
Tokyo webmining 複雑ネットワークとデータマイニングTokyo webmining 複雑ネットワークとデータマイニング
Tokyo webmining 複雑ネットワークとデータマイニング
Hiroko Onari
 
2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク
Hiroko Onari
 
はじめてのパターン認識勉強会 20130716
はじめてのパターン認識勉強会 20130716はじめてのパターン認識勉強会 20130716
はじめてのパターン認識勉強会 20130716
Hiroko Onari
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
Hiroko Onari
 
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Yohei Sato
 
Suicide ideation of individuals in online social networks tokyo webmining
Suicide ideation of individuals in online social networks tokyo webminingSuicide ideation of individuals in online social networks tokyo webmining
Suicide ideation of individuals in online social networks tokyo webmining
Hiroko Onari
 
20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro
Takaya Ishiguro
 
04 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r00104 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r001
cyberblack28 Ichikawa
 
傾向スコアの概念とその実践
傾向スコアの概念とその実践傾向スコアの概念とその実践
傾向スコアの概念とその実践
Yasuyuki Okumura
 
最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話
Kazuto Kusama
 
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
Atsushi KOMIYA
 
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
Masaaki Nagahara
 
Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -
Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -
Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -
Yohei Sato
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装takehikoihayashi
 
ヒューレットパッカード社の 社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
ヒューレットパッカード社の 社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
Tokoroten Nakayama
 
What is Serverless?
What is Serverless?What is Serverless?
What is Serverless?
Terui Masashi
 
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
Tokoroten Nakayama
 
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
Yota Ishida
 

Viewers also liked (20)

傾向スコアでみる ソーシャルネットワーク分析
傾向スコアでみる ソーシャルネットワーク分析傾向スコアでみる ソーシャルネットワーク分析
傾向スコアでみる ソーシャルネットワーク分析
 
Social network analysis for startups ch6
Social network analysis for startups ch6Social network analysis for startups ch6
Social network analysis for startups ch6
 
Tokyo webmining 複雑ネットワークとデータマイニング
Tokyo webmining 複雑ネットワークとデータマイニングTokyo webmining 複雑ネットワークとデータマイニング
Tokyo webmining 複雑ネットワークとデータマイニング
 
2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク
 
はじめてのパターン認識勉強会 20130716
はじめてのパターン認識勉強会 20130716はじめてのパターン認識勉強会 20130716
はじめてのパターン認識勉強会 20130716
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
 
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
 
Suicide ideation of individuals in online social networks tokyo webmining
Suicide ideation of individuals in online social networks tokyo webminingSuicide ideation of individuals in online social networks tokyo webmining
Suicide ideation of individuals in online social networks tokyo webmining
 
20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro
 
04 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r00104 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r001
 
傾向スコアの概念とその実践
傾向スコアの概念とその実践傾向スコアの概念とその実践
傾向スコアの概念とその実践
 
最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話
 
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
 
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
 
Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -
Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -
Rで学ぶ 傾向スコア解析入門 - 無作為割り当てが出来ない時の因果効果推定 -
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
 
ヒューレットパッカード社の 社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
ヒューレットパッカード社の 社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
 
What is Serverless?
What is Serverless?What is Serverless?
What is Serverless?
 
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
 
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
ディープラーニングでおそ松さんの6つ子は見分けられるのか? FIT2016
 

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

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