レコメンドアルゴリズムの基礎と「B-dash」におけるシステム構成の紹介

1,582 views

Published on

本資料では、レコメンドアルゴリズム(協調フィルタリング)とマーケティングプラットフォーム「B-dash」のシステム構成概要を説明します。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,582
On SlideShare
0
From Embeds
0
Number of Embeds
567
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

レコメンドアルゴリズムの基礎と「B-dash」におけるシステム構成の紹介

  1. 1. takemikami’s note – http://takemikami.com/ 三上 威 (株式会社フロムスクラッチ) twitter: @takemikami レコメンドアルゴリズムの基礎と 「B-Dash」におけるシステム構成のご紹介 レコメンデーションのアルゴリズムとシステム構成例 1 機械学習 レコメンド B-Dash 2016.7.23 第2回 Machine Learning 15minutes! Copyright (C) 2016 Takeshi Mikami. All rights reserved.
  2. 2. takemikami’s note – http://takemikami.com/ アジェンダ • レコメンドとは – マーケティングデータ分析の全体像と機械学習 – レコメンドの手法 • パーソナライズ • 協調型・内容ベース型 • リアルタイム・バッチ処理 • 協調フィルタリングのアルゴリズム – 協調フィルタリング(ユーザベース) – 協調フィルタリング(アイテムベース) – 交互最小二乗法による協調フィルタリング • 協調フィルタリングの応用例 • 「B-Dash」におけるシステム構成 – 「B-Dash」とは – 「B-Dash」のレコメンドシステム構成 • 参考文献リスト 2Copyright (C) 2016 Takeshi Mikami. All rights reserved.
  3. 3. takemikami’s note – http://takemikami.com/ マーケティングデータ分析の全体像と機械学習 3Copyright (C) 2016 Takeshi Mikami. All rights reserved. レコメンドとは マーケティングデータ分析における、機械学習の位置づけを示します。 顧客との チャネル データ分析 顧客 社会・ 業界 リアル広告 イベント ・・・ Data Lake SNS 収集施策 実店舗 収 集 DWH データサイエンティスト マーケター Web広告ECサイト 機械学習 施策の検討・意思決定を機械学習で支援
  4. 4. takemikami’s note – http://takemikami.com/ レコメンドエンジンとは • レコメンドエンジンとは、 4Copyright (C) 2016 Takeshi Mikami. All rights reserved. レコメンドとは 「対象ユーザに対し、その嗜好を予測し、アイテムを推薦するシステム」 レコメンドエンジンの説明、パーソナライズについて示します。 Amazon Googleニュース 閲覧中の本を買った人が、 買ったことがある本 地域に合わせたニュース ユーザ属性や行動に あわせたニュース
  5. 5. takemikami’s note – http://takemikami.com/ レコメンドの手法:パーソナライズ 5Copyright (C) 2016 Takeshi Mikami. All rights reserved. レコメンドとは パーソナライズ 非パーソナライズ 説明 ユーザの特徴にもとづいた推薦 →ユーザ毎に推薦されるアイテムが異なる 万人に向けたおすすめ →全ユーザに同じアイテムが推薦される アルゴ リズム 協調フィルタリング 内容ベース型フィルタリング 閲覧履歴 etc ベストセラー 新着 販売店担当者のおすすめ etc レコメンドの手法「パーソナライズ」について説明します。 レコメンドというとパーソナライズを指すことが多いが、 ユーザ属性不明の場合などに対応する為、非パーソナライズの手法も組み合わせる。
  6. 6. takemikami’s note – http://takemikami.com/ レコメンドの手法:協調型・内容ベース型 6Copyright (C) 2016 Takeshi Mikami. All rights reserved. レコメンドとは 協調型 (collaborative filtering) 内容ベース型 (content based filtering) 説明 他のユーザの嗜好行動を元に、 対象ユーザへのアイテムを推薦 アイテムの特徴・説明と、 ユーザの特徴・行動を用いて推薦 イメージ 他のユーザの嗜好から、 対象ユーザへアイテムを推薦 アイテム・ユーザの特徴を用いて推薦 課題 ある程度の量の他のユーザのデータが必要 新規アイテム・ユーザに適切な推薦ができない アイテムの特徴データのメンテナンスが必要 ・・・ ○ × × × × ○ ○ ○ ? 特徴A 特徴B 特徴C 特徴A’ →各手法に課題があるため、これらを組み合わせたハイブリッドアプローチをとることも多い。 レコメンドの手法「協調型」と「内容ベース型」の違いについて説明します。 コールドスタート問題
  7. 7. takemikami’s note – http://takemikami.com/ レコメンドの手法:リアルタイム・バッチ処理 7Copyright (C) 2016 Takeshi Mikami. All rights reserved. レコメンドとは バッチ処理 リアルタイム 説明 ユーザ・アイテムの特徴・行動を元に、 事前に推薦アイテムのリストを作成しておく ユーザの行動を元にして、 リアルタイムにアイテムを推薦する 適用例 パーソナライズおすすめアイテムメール マイページでのおすすめアイテム掲出 etc はじめて訪問したユーザへのおすすめアイテ ム掲出 etc レコメンドの手法「リアルタイム」「バッチ処理」について説明します。 特徴A 特徴B 特徴C 特徴収集 特徴A’ 推 薦 事前に処理 インタラクション 特徴A 特徴B 特徴C 特徴A’
  8. 8. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)のイメージ 8Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムA アイテムB アイテムC アイテムD アイテムE 対象ユーザ 5 3 4 4 ? ユーザ1 3 1 2 3 3 ユーザ2 4 3 4 3 5 ユーザ3 3 3 1 5 4 ユーザ4 1 5 5 2 1 ユーザベースの協調フィルタリングのイメージを示します。 1(最も好まない)〜5(最も好む) やりたいこと: 「ユーザ1〜4のアイテムの評価」と「対象ユーザのアイテムA〜Dの評価」 →「対象ユーザのアイテムEの評価」を予測 予測
  9. 9. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 9Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングを行う手続きを示します。 • 対象ユーザ以外のユーザに対して、 対象ユーザとの類似度を求める • 類似するユーザを選ぶ • 類似ユーザの対象アイテムの評価から、加重平均を算出 →次のスライドから、 ユーザベースの協調フィルタリングで予測を行う流れをイメージで示します。
  10. 10. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 〜イメージ1 10Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムA アイテムB アイテムC アイテムD アイテムE 類似度 対象ユーザ 5 3 4 4 ? 1 ユーザ1 3 1 2 3 3 0.85 ユーザ2 4 3 4 3 5 0.70 ユーザ3 3 3 1 5 4 0.00 ユーザ4 1 5 5 2 1 -0.79 ユーザベースの協調フィルタリングのイメージ アイテムA〜Dの評価値を使って、 対象ユーザとの類似度を計算 ※ここでは、ピアソンの相関係数(Pearson correlation coefficient)を使って類似度を計算しています。
  11. 11. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 〜イメージ2 11Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムA アイテムB アイテムC アイテムD アイテムE 類似度 対象ユーザ 5 3 4 4 ? 1 ユーザ1 3 1 2 3 3 0.85 ユーザ2 4 3 4 3 5 0.70 ユーザ3 3 3 1 5 4 0.00 ユーザ4 1 5 5 2 1 -0.79 ユーザベースの協調フィルタリングのイメージ 類似度をみて、 類似するユーザを選ぶ
  12. 12. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 〜イメージ3 12Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムA アイテムB アイテムC アイテムD アイテムE 類似度 対象ユーザ 5 3 4 4 4.87 1 ユーザ1 3 1 2 3 3 0.85 ユーザ2 4 3 4 3 5 0.70 ユーザ3 3 3 1 5 4 0.00 ユーザ4 1 5 5 2 1 -0.79 ユーザベースの協調フィルタリングの具体的な計算 類似ユーザの「アイテムEの評価」と「類似度」 から加重平均を計算し →対象ユーザのアイテムEの評価を予測
  13. 13. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)のイメージ 13Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 旅行者1 2 1 0 0 旅行者2 1 0 0 0 旅行者3 0 0 3 2 旅行者4 2 3 1 0 旅行者5 1 0 2 5 アイテムベースの協調フィルタリングのイメージを示します。 旅行回数 やりたいこと: 「旅行者1〜5の旅先別の旅行回数」と「対象ユーザの旅先別の旅行回数」 →「対象ユーザが行く可能性が旅先」を予測 行く可能性が 高い 旅先を予測 基本的にやりたいことは ユーザベースと同じ
  14. 14. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)の手続き 14Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングを行う手続きを示します。 • 対象ユーザ以外のユーザの評価値から、 各アイテム間の類似度を求め、類似度行列を算出する • 対象ユーザの評価値と類似度行列の積を求める →次のスライドから、 アイテムベースの協調フィルタリングで予測を行う流れをイメージで示します。
  15. 15. takemikami’s note – http://takemikami.com/ 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 旅行者1 2 1 0 0 旅行者2 1 0 0 0 旅行者3 0 0 3 2 旅行者4 2 3 1 0 旅行者5 1 0 2 5 台北との 類似度 1 0.8 0.34 0.29 協調フィルタリング(アイテムベース)の手続き 〜イメージ1 15Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ ※ここでは、コサイン類似度(cosine similarity)を使って類似度を計算しています。 旅行者1〜5の旅行回数を使って、 台北との類似度を計算
  16. 16. takemikami’s note – http://takemikami.com/ 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 旅行者1 2 1 0 0 … … … … … 旅行者5 1 0 2 5 台北 1 0.8 0.34 0.29 バンコク 0.8 1 0.25 0.25 ホノルル 0.34 0.25 1 0.79 グァム 0.29 0.0 0.79 1 協調フィルタリング(アイテムベース)の手続き 〜イメージ2 16Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 同様に、 バンコク,ホノルル,グァムについても計算 類似度行列が出来る
  17. 17. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)の手続き 〜イメージ3 17Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 台北 1 0.8 0.34 0.29 バンコク 0.8 1 0.25 0.25 ホノルル 0.34 0.25 1 0.79 グァム 0.29 0.0 0.79 1 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 × = 台北 0.8 バンコク 1 ホノルル 0.25 グァム 0.0 「対象ユーザの旅先訪問回数」 「類似度行列」の積 訪問したことがあるバンコクを除くと、 台北を旅先に選ぶ可能性が高い
  18. 18. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)のメリット 18Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのメリットを説明します。 台北 バンコク ホノルル グァム 台北 1 0.8 0.34 0.29 バンコク 0.8 1 0.25 0.25 ホノルル 0.34 0.25 1 0.79 グァム 0.29 0.0 0.79 1 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 × = 台北 0.8 バンコク 1 ホノルル 0.25 グァム 0.0 アイテム間の「類似度行列」は、 事前にバッチで作成が可能 新たなユーザに対しても、 類似度行列の再作成なしに、レコメンドが可能
  19. 19. takemikami’s note – http://takemikami.com/ ピアソンの相関係数 コサイン類似度 式 説明 ユーザベース向きの尺度 アイテムベース向きの尺度 データをベクトルで表現した時の 角度の近さ ※一部の変数の大きさの偏りに影響を受けない 類似度の計算 19Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 協調フィルタリングの手続きで用いた類似度について説明します。 X: 評価値行列 ρ: 要素数 Xa, Xb: 類似度の比較対象
  20. 20. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最二自乗法)のイメージ 20Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングのイメージを示します。 A B C D E 1 2 3 4 A B C D E 1 2 3 4 やりたいこと: 「評価値行列」を使って、ユーザとアイテムをk個の特徴量で表す 評価値行列 アイテムの 特徴量行列 ユーザの 特徴量行列 ユーザ アイテム 「評価値行列」から、 ユーザ・アイテムの特徴量行列を求める (k個の因子でユーザ・アイテムを説明したい)
  21. 21. takemikami’s note – http://takemikami.com/ 最小二乗法について 〜『交互』最小自乗法の前に • 最小二乗法とは 「残差の二乗和が最小になる係数を決定する手法」 21Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 最小二乗法について説明します。 標本回帰直線からの残差の二乗和 これを最小にする、a,bを求める 線形回帰の例
  22. 22. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最小二乗法)の手続き • 特徴量の数を決める • アイテムの特徴量行列を初期化する • 収束するまで以下を繰り返す – 評価値行列・アイテムの特徴量行列から、 ユーザの特徴量を最小自乗法で計算 – 評価値行列・ユーザの特徴量行列から、 アイテムの特徴量を最小自乗法で計算 22Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングの手続きを示します。 →次のスライドから、 交互最小自乗法による協調フィルタリングの流れをイメージで示します。
  23. 23. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最小二乗法)の手続き 〜イメージ1 23Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値行列 アイテムの 特徴量行列 ユーザの特徴量行列 列数 特徴量の数を決める行数
  24. 24. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最小二乗法)の手続き 〜イメージ2 24Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値行列 アイテムの 特徴量行列 ユーザの特徴量行列 アイテム毎の評価値の平均を算出 十分に小さい値で乱数をふる
  25. 25. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最小二乗法)の手続き 〜イメージ3 25Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値行列 アイテムの 特徴量行列 ユーザの 特徴量行列 × = 以下の誤差が最小になるようにユーザの特徴量を計算 ・「ユーザの特徴量行列」と「アイテムの特徴量」の積 ・「評価値行列」 線形回帰の例で「y」にあたる線形回帰の例で「x」にあたる線形回帰の例で「a,b」にあたる
  26. 26. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最小二乗法)の手続き 〜イメージ4 26Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値行列 アイテムの 特徴量行列 ユーザの 特徴量行列 × = 以下の誤差が最小になるようにアイテムの特徴量を計算 ・「ユーザの特徴量行列」と「アイテムの特徴量」の積 ・「評価値行列」 線形回帰の例で「y」にあたる線形回帰の例で「a,b」にあたる線形回帰の例で「x」にあたる
  27. 27. takemikami’s note – http://takemikami.com/ 協調フィルタリング(交互最小二乗法)の手続き 〜イメージ5 27Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングのアルゴリズム 交互最小二乗法による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値行列 アイテムの 特徴量行列 ユーザの 特徴量行列 × = 誤差が収束するまで、 これらの特徴量の再計算を繰り返す 誤差が収束するまで、 これらの特徴量の再計算を繰り返す
  28. 28. takemikami’s note – http://takemikami.com/ 協調フィルタリングの応用例 アイテムベースの組み合わせ • 海外旅行航空券の推薦 – 目的地と出発空港を組み合わせたアイテムベースの協調フィルタリング – 手続き • 事前に、過去のユーザの渡航履歴から以下を算出 – 出発空港利用履歴の類似度行列 – 目的地利用履歴の類似度行列 • サイトに訪問したユーザの出発空港利用履歴と目的地利用履歴を取得 • 以下を計算 – 出発空港利用履歴と出発空港利用履歴の類似度行列の積 – 目的地利用履歴と目的地利用履歴の類似度行列の積 • スコアの高い目的地順に並べ、 その目的地に対してスコアが最も高い出発空港を紐付け、 さらに最も価格が安い航空券の情報を推薦 28Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングの応用例 協調フィルタリングの応用例を示します。 →アイテムではなく「属性」の類似度行列を作ることで、 類似度行列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
  29. 29. takemikami’s note – http://takemikami.com/ 協調フィルタリングの応用例 メルマガタイトルの最適化 • メルマガタイトルの最適化 – メルマガ内に掲載されているアイテムの中で もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む – 手続き • 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く • 協調フィルタリングで、 メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出 • 推薦スコアがトップの商品名をメルマガタイトルに差し込む 29Copyright (C) 2016 Takeshi Mikami. All rights reserved. 協調フィルタリングの応用例 協調フィルタリングの応用例を示します。 →ライターが作成したコンテンツの見やすさ・わかりやすさなどを生かしたまま、 パーソナライズによって、よりユーザの関心を引く方法の例 ※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が見込める
  30. 30. takemikami’s note – http://takemikami.com/ 「B-Dash」とは 30Copyright (C) 2016 Takeshi Mikami. All rights reserved. 「B-Dash」におけるシステム構成 マーケティングプラットフォーム『B-Dash』を紹介します。 顧客とのチャネル等から 得られた情報を取り込み レコメンド等の マーケティング施策に活用 「マーケティング」に関するデータを集約・管理し、 レコメンド等の各種マーケティング施策に活用する為のプラットフォーム
  31. 31. takemikami’s note – http://takemikami.com/ 「B-Dash」のレコメンドシステム構成 31Copyright (C) 2016 Takeshi Mikami. All rights reserved. 「B-Dash」におけるシステム構成 『B-Dash』のレコメンドシステム構成の概要を紹介します。 Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 行動 ログ 行動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度行列 アイテム情報 レコメンド サーバ アイテム 類似度計算 ログ・売上 集計 以下のデータを組み合わせレコメンド ・ユーザインタラクション ・バッチで生成した情報
  32. 32. takemikami’s note – http://takemikami.com/ 参考文献リスト • 書籍 – Dietmar Jannach・Markus Zanker・Alexander Felfernig・Gerhard Friedrich・田中克己・角谷和俊「情報 推薦システム入門〜理論と実践」 共立出版 2012 – Sean Owen・Robin Anil・Ted Dunning・Ellen Friedman「Mahout in Action」 Manning Pubns Co. 2011 – 稲垣宣生・山根芳知・吉田光雄「統計学入門」 裳華房 1992 • Webサイト – 奥健太「情報推薦システム入門:講義スライド」 http://www.slideshare.net/KentaOku/ss-50762836 – @soonraah「Apache Spark による推薦システム案件例」 https://speakerdeck.com/soonraah/apache-spark-niyorutui-jian-sisutemuan-jian-li – Bugra Akyildiz「Alternating Least Squares Method for Collaborative Filtering」 http://bugra.github.io/work/notes/2014-04-19/alternating-least-squares-method-for-collaborative- filtering/ 32Copyright (C) 2016 Takeshi Mikami. All rights reserved. 付録 本資料作成にあたって参考にした文献リストです。

×