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.

LT13(前半)Workshipにおけるレコメンドエンジン実装

248 views

Published on

Workshipにおけるレコメンドエンジン実装を公開
※ 株式会社GIGでは毎月社内勉強会を実施しています

GIG inc.
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.

テクノロジーとクリエイティブでセカイをより良くする。小さなチームからスタートした多くの先人達が、世界をより豊かなモノに変革してきました。通信、UX、デバイス、技術の変化と共に世界はまだまだ加速度的に変わります。

Good is good. いいものはいい。GIGは、関わったユーザーやクライアントが前に進める“きっかけ”をつくりつづけます。

■ お問い合せ
https://giginc.co.jp/contact/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

LT13(前半)Workshipにおけるレコメンドエンジン実装

  1. 1. Workshipにおける レコメンドエンジン実装 Shogo Ishikura @issy_s16
  2. 2. 自己紹介 石倉 彰悟 バックエンドエンジニア / 株式会社GIG CakePHPをごりってやってます。 個人でこんなサービスも作ってます ● QiitaDeck: https://qiitadeck.com ● inazuma: https://inazuma.tech https://issys16.info
  3. 3. ( 協調フィルタリングを用いた ) レコメンドエンジンの仕組み理解 発表の目的
  4. 4. アジェンダ 1. Workshipについて 2. 要件定義フェーズ a. レコメンド機能を実装したい 3. 実現方法の検討フェーズ a. どんなレコメンドが理想か考える b. 各種レコメンド方式と説明 4. 実装フェーズ a. 協調フィルタリングの仕組み b. Workshipにおける実装 c. 意識すべき点と工夫 5. まとめ
  5. 5. Workshipについて
  6. 6. Workshipについて 「コラボレーションを加速させる、フリーランス プラットフォーム」 https://goworkship.com
  7. 7. 要件定義フェーズ
  8. 8. いかにベストなマッチングを増やすか また、多い情報の中で埋もれないようにするか 要件定義フェー ズレコメンド機能を実装したい
  9. 9. ユーザが「気になる!」を押しそうな 求人をレコメンドしたい レコメンド機能を実装したい 要件定義フェー ズ
  10. 10. ユーザが「気になる!」を押しそうな 求人をレコメンドしたい = ユーザが興味を唆られるような 求人をレコメンドしよう レコメンド機能を実装したい 要件定義フェー ズ
  11. 11. 実装方法の検討フェーズ
  12. 12. 「興味を唆られる」とは何か? 実装方法の検討フェーズ どんなレコメンドが理想か考える ユーザが興味を唆られるような 求人をレコメンドしよう
  13. 13. どんなレコメンドが理想か考える 例えば 1. 職種が同じで、高単価 1. 気になる!した求人に特徴が近い求人 1. 自分と趣向が似ているユーザが閲覧した求人 実装方法の検討フェーズ
  14. 14. それぞれ違ったレコメンド方式 1. 職種が同じで、高単価 1. 気になる!した求人に特徴が近い求人 1. 自分と趣向が似ているユーザが閲覧した求人 どんなレコメンドが理想か考える 実装方法の検討フェーズ
  15. 15. レコメンド方式一覧 各種レコメンド方式と説明 引用: https://www.slideshare.net/masayuki1986/recommendation- ml 実装方法の検討フェーズ
  16. 16. レコメンド方式一覧 各種レコメンド方式と説明 引用: https://www.slideshare.net/masayuki1986/recommendation- ml 実装方法の検討フェーズ
  17. 17. 実装フェーズ
  18. 18. 実装フェーズ 協調フィルタリングの仕組み 1. そのユーザと似ているユーザを見つける(類似度計算,相関分析) 1. 似ているユーザを基に、よく見られている求人などを計算し そのユーザにレコメンドする求人を決める
  19. 19. 1. そのユーザと似ているユーザを見つける(類似度計算,相関分析) 1. 似ているユーザを基に、よく見られている求人などを計算し そのユーザにレコメンドする求人を決める 実装フェーズ 協調フィルタリングの仕組み 実装前に決めないといけないこと 何を基に似ていると判断するか どの位似ているユーザの影響を結果に反映するか
  20. 20. 実装フェーズ Workshipにおける実装 何を基に似ていると判断するか どの位似ているユーザの影響を結果に反映するか 気になる!した求人、閲覧した求人 全員の履歴を参照して似ているユーザほど重み付けするのではなく、 全ユーザの中から自分と傾向が似ている上位10%のみを採用
  21. 21. 実装フェーズ Workshipにおける実装 1. そのユーザと似ているユーザを見つける(類似度計算,相関分析) 求人A 求人B 求人C 求人D Aさん 気になる! 気になる! Bさん 気になる! Cさん 気になる! 気になる! Dさん 気になる! 気になる! 気になる!
  22. 22. 実装フェーズ Workshipにおける実装 1. そのユーザと似ているユーザを見つける(類似度計算,相関分析) 求人A 求人B 求人C 求人D Aさん 気になる 気になる Bさん 気になる Cさん 気になる 気になる Dさん 気になる 気になる 気になる Aさん Bさん Cさん Dさん Aさん - 0/4 1/4 2/4 Bさん 0/4 - 0/4 0/4 Cさん 1/4 0/4 - 2/4 Dさん 2/4 0/4 2/4 - Jaccard係数を使った J(A,B)= |A∩B ||A∪B|
  23. 23. 実装フェーズ Workshipにおける実装 1. そのユーザと似ているユーザを見つける(類似度計算,相関分析) Aさん Bさん Cさん Dさん Aさん - 0.00 0.25 0.50 Bさん 0.00 - 0.00 0.00 Cさん 0.25 0.00 - 0.50 Dさん 0.50 0.00 0.50 - Jaccard係数を使った J(A,B)= |A∩B ||A∪B| 求人A 求人B 求人C 求人D Aさん 気になる 気になる Bさん 気になる Cさん 気になる 気になる Dさん 気になる 気になる 気になる
  24. 24. 実装フェーズ Workshipにおける実装 1. そのユーザと似ているユーザを見つける(類似度計算,相関分析) Aさん Bさん Cさん Dさん Aさん - 0.00 0.25 0.50 Bさん 0.00 - 0.00 0.00 Cさん 0.25 0.00 - 0.50 Dさん 0.50 0.00 0.50 -
  25. 25. 実装フェーズ Workshipにおける実装 2. 似ているユーザを基に、よく見られている求人などを計算し そのユーザにレコメンドする求人を決める 求人A 求人B 求人C 求人D Aさん 気になる! 気になる! Bさん 気になる! Cさん 気になる! 気になる! Dさん 気になる! 気になる! 気になる!
  26. 26. 実装フェーズ 意識すべき点と工夫 ユーザが増えれば増えるほど、計算量が乗数で増えていく ユーザ数のループだけでも ユーザ数が100人なら、100*100 = 10,000ループ ユーザ数が10,000人なら、10000*10000 = 100,000,000ループ ※しかもそこから履歴を参照する・・・。 ISSUE
  27. 27. 実装フェーズ 意識すべき点と工夫 全ユーザ分見なくていいように、INDEXを用意した SOLUTION KEY_userId VALUE(jobIds) index_likejob_1 [1,3] index_likejob_2 [2] index_likejob_3 [1,4] index_likejob_4 [1,3,4] 気になるした求人リスト KEY_jobId VALUE(userIds) index_likeuser_1 [1,3,4] index_likeuser_2 [2] index_likeuser_3 [1,4] index_likeuser_4 [3,4] 求人を気になるしたユーザリスト
  28. 28. まとめ
  29. 29. まと め 参考になりました ■協調フィルタリングとは https://www.albert2005.co.jp/knowledge/marketing/recommendation_basics/coll aborative_filtering ■協調フィルタリング型レコメンドエンジン開発のため仕様について考える https://qiita.com/haminiku/items/ca7eec8ed09982aec9b5 ■【レコメンド】内容ベースと協調フィルタリングの長所と短所・実装方法まとめ https://qiita.com/haminiku/items/f5008a57a870e0188f63
  30. 30. 有難うございました
  31. 31. Good is good. We provide opportunities to the SEKAI by fusing technology and ideas. テクノロジーとクリエイティブでセカイをより良くする のこと

×