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

32
takemikami’s note – http://takemikami.com/ 三上 威 (株式会社フロムスクラッチ) twitter: @takemikami レコメンドアルゴリズムの基礎と B-Dash」におけるシステム構成のご紹介 レコメンデーションのアルゴリズムとシステム構成例 1 機械学習 レコメンド B-Dash 2016.7.23 2Machine Learning 15minutes! Copyright (C) 2016 Takeshi Mikami. All rights reserved.

Upload: takeshi-mikami

Post on 07-Feb-2017

1.644 views

Category:

Technology


0 download

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.

付録

本資料作成にあたって参考にした文献リストです。