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