Upgrade to Pro — share decks privately, control downloads, hide ads and more …

意外と簡単!「この商品を買った人はこんな商品も買っています」を作ってみよう

yuta ishizaka
September 08, 2016

 意外と簡単!「この商品を買った人はこんな商品も買っています」を作ってみよう

勉強会資料です。
テストデータなどはイベント開催ページにて。
http://d-cube.connpass.com/event/39131/

yuta ishizaka

September 08, 2016
Tweet

More Decks by yuta ishizaka

Other Decks in Technology

Transcript

  1. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. アジェンダ

    • ⾃自⼰己紹介 • レコメンドとは – 代表的なレコメンド⼿手法 • 作ってみよう – 環境作り – 実際に作ってみる 7
  2. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. ⾃自⼰己紹介

    名前: ⽯石坂優太 職歴: 2008/4-‐‑‒2015/5 パイオニア(PM、アーキテクト) 2015/5-‐‑‒now ビズリーチ(企業向けサービスのグロース) スキル: C++,  Java,  Python,  Rails,  iOSApp,  etc... 8
  3. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. レコメンドとは

    • レコメンド(recommend)とは? 11 おすすめする
  4. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 有名なレコメンド

    • Amazon – ある商品を買った⼈人に、おすすめ商品を表⽰示することで、更更なる購⼊入を誘う – テンション・リダクション効果を狙っている • YouTube – ある動画を観た⼈人に、おすすめ動画を表⽰示することで、更更に視聴を促す 12
  5. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. レコメンドの効果

    • 趣味嗜好に合わせた選択肢を提⽰示するので、コンバージョン率率率が⾼高い – 特に協調フィルタリングは好みを考慮するので効果が⾼高い • 利利⽤用者が思いつかない選択肢を提⽰示できる – 検索索では、利利⽤用者が思いつく選択肢にしかたどり着けない 13
  6. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 代表的なレコメンドの⼿手法

    • コンテンツ(内容)ベース – テキスト情報や属性情報などの内容で近さを評価し、内容が近いものをオ ススメする • 協調フィルタリング – 購⼊入者同⼠士の好みの類似性で近さ評価し、好みが近い⼈人が好きな商品をレ コメンドする 14
  7. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 代表的なレコメンドの⼿手法

    • コンテンツ(内容)ベース – テキスト情報や属性情報などの内容で近さを評価し、内容が近いものをオ ススメする • 協調フィルタリング – 購⼊入者同⼠士の好みの類似性で近さ評価し、好みが近い⼈人が好きな商品をレ コメンドする → AmazonやYouTubeは基本的にこっち 15
  8. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. コンテンツベース

    16 ・新宿に住んでいる ・好きな食べものジャンルにカレーを登録している 新宿の飲み屋グループ 新宿のカレー屋グループ 原宿のカレー屋グループ ↓お店の情報をあらかじめ分析してグルーピング
  9. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. コンテンツベース

    17 ・新宿に住んでいる ・好きな食べものジャンルにカレーを登録している 新宿の飲み屋グループ 新宿のカレー屋グループ 原宿のカレー屋グループ
  10. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. コンテンツベース

    18 ・新宿に住んでいる ・好きな食べものジャンルにカレーを登録している 新宿の飲み屋グループ 新宿のカレー屋グループ 原宿のカレー屋グループ 内容が近いのでオススメする
  11. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 作ってみよう

    • AmazonやYouTubeで使われている「協調フィルタリング」のレコメンド を作ります – 近さの評価の仕⽅方は⾊色々ありますが、⼀一番シンプルなやつをつくりま す • Pythonで作ります – Pythonはデータ分析系のライブラリが充実しているので、レコメンド や機械学習に向いている 24
  12. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 開発環境を作る

    • Windowsの場合 http://qiita.com/koara-‐‑‒local/items/8d48d0306c85c61aed97 ※⼿手順4で pip  install  pandas  もやる 25
  13. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 開発環境を作る

    • Macの場合 1. pythonのバージョン確認 python  -‐‑‒-‐‑‒version 2. jupyterのインストール sudo pip  install  jupyter 3. pandasのインストール sudo pip  install  pandas 4. jupyter起動 jupyter notebook 26
  14. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 実際に作ってみる

    • とあるECサイトのユーザーのAさんが買い物をした時に、オススメの商品を5件表⽰示 する 27 購入! おすすめ!
  15. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 実際に作ってみる

    1. 購⼊入履履歴データを読み込む testdata.csv を⽤用意しました。 2. 購⼊入履履歴データを各お客さんごとにまとめる 後の計算をわかりやすくするためにデータを整形します。 {“Aさん”  :  [“商品A”,  “商品B”,  “商品C”],  “Bさん”  :  [“商品B”]・・・} のようなデータに整形します。 3. レコメンドしたい対象(Aさん)とその他の共起数をとる 共起数 =  購⼊入したものが⼀一致している数 4. 共起数が⾼高い順にオススメとして表⽰示する 購⼊入したものの⼀一致数が多いほど、好みが近いため、優先的に表⽰示しましょう。 28
  16. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. ⾏行行動データの読み込み

    30 conversionsには、 [(‘Aさん’,’商品A’), (‘Aさん’,  ‘商品B’),  (‘Bさん’,  ‘商品C’),  (‘Bさん’,  ‘商品G’)・・・] のようなデータが入ってきます。 これを {“Aさん”  :  [“商品A”,“商品B”],  “Bさん”  :  [“商品B”,“商品C”]・・・} のようなデータに一度変換します。
  17. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 共起

    31 1個被ってる ので、共起1 2個被ってる ので、共起2
  18. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. レコメンドの⼿手法

    • 協調フィルタリングの弱点 – 特定の商品が集中してレコメンドされやすい • 誰からも好みと思われなかった商品はレコメンドされない • Amazonのようなレコメンドでは、商品数が無制限なので、ひとつの商品が集中 してレコメンドされても問題にならない(みんな買える) • Pairsのような⼈人材マッチングだと問題になる(1000⼈人の⼥女女性に1⼈人のモテ男性を 薦めても、マッチング成⽴立立するのは1⼈人だけなので、効率率率が悪いし、成⽴立立しない マッチングを薦めるのは顧客体験を損ねる) – ⾏行行動をベースにするので、⾏行行動がなければレコメンドできない • つまり、新規のお客さんにはレコメンドできないので、⼯工夫が必要 → コールドスタート問題 と⾔言います 32
  19. Copyright  ©  2016  BizReach Inc.    All  Right  Reserved. 付録

    • Pythonのデータ分析等でよく使うライブラリ – Numpy – scikit-‐‑‒learn 33