Weitere ähnliche Inhalte Mehr von Takeshi Mikami (20) レコメンドアルゴリズムの基礎と「B-dash」におけるシステム構成の紹介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. takemikami’s note – http://takemikami.com/
アジェンダ
• レコメンドとは
– マーケティングデータ分析の全体像と機械学習
– レコメンドの手法
• パーソナライズ
• 協調型・内容ベース型
• リアルタイム・バッチ処理
• 協調フィルタリングのアルゴリズム
– 協調フィルタリング(ユーザベース)
– 協調フィルタリング(アイテムベース)
– 交互最小二乗法による協調フィルタリング
• 協調フィルタリングの応用例
• 「B-Dash」におけるシステム構成
– 「B-Dash」とは
– 「B-Dash」のレコメンドシステム構成
• 参考文献リスト
2Copyright (C) 2016 Takeshi Mikami. All rights reserved.
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. 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. 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の評価を予測
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. 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. 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
「対象ユーザの旅先訪問回数」
「類似度行列」の積
訪問したことがあるバンコクを除くと、
台北を旅先に選ぶ可能性が高い
19. takemikami’s note – http://takemikami.com/
ピアソンの相関係数 コサイン類似度
式
説明 ユーザベース向きの尺度 アイテムベース向きの尺度
データをベクトルで表現した時の
角度の近さ
※一部の変数の大きさの偏りに影響を受けない
類似度の計算
19Copyright (C) 2016 Takeshi Mikami. All rights reserved.
協調フィルタリングのアルゴリズム
協調フィルタリングの手続きで用いた類似度について説明します。
X: 評価値行列
ρ: 要素数
Xa, Xb: 類似度の比較対象
22. takemikami’s note – http://takemikami.com/
協調フィルタリング(交互最小二乗法)の手続き
• 特徴量の数を決める
• アイテムの特徴量行列を初期化する
• 収束するまで以下を繰り返す
– 評価値行列・アイテムの特徴量行列から、
ユーザの特徴量を最小自乗法で計算
– 評価値行列・ユーザの特徴量行列から、
アイテムの特徴量を最小自乗法で計算
22Copyright (C) 2016 Takeshi Mikami. All rights reserved.
協調フィルタリングのアルゴリズム
交互最小二乗法による協調フィルタリングの手続きを示します。
→次のスライドから、
交互最小自乗法による協調フィルタリングの流れをイメージで示します。
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. 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」にあたる
28. takemikami’s note – http://takemikami.com/
協調フィルタリングの応用例 アイテムベースの組み合わせ
• 海外旅行航空券の推薦
– 目的地と出発空港を組み合わせたアイテムベースの協調フィルタリング
– 手続き
• 事前に、過去のユーザの渡航履歴から以下を算出
– 出発空港利用履歴の類似度行列
– 目的地利用履歴の類似度行列
• サイトに訪問したユーザの出発空港利用履歴と目的地利用履歴を取得
• 以下を計算
– 出発空港利用履歴と出発空港利用履歴の類似度行列の積
– 目的地利用履歴と目的地利用履歴の類似度行列の積
• スコアの高い目的地順に並べ、
その目的地に対してスコアが最も高い出発空港を紐付け、
さらに最も価格が安い航空券の情報を推薦
28Copyright (C) 2016 Takeshi Mikami. All rights reserved.
協調フィルタリングの応用例
協調フィルタリングの応用例を示します。
→アイテムではなく「属性」の類似度行列を作ることで、
類似度行列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
29. takemikami’s note – http://takemikami.com/
協調フィルタリングの応用例 メルマガタイトルの最適化
• メルマガタイトルの最適化
– メルマガ内に掲載されているアイテムの中で
もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む
– 手続き
• 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く
• 協調フィルタリングで、
メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出
• 推薦スコアがトップの商品名をメルマガタイトルに差し込む
29Copyright (C) 2016 Takeshi Mikami. All rights reserved.
協調フィルタリングの応用例
協調フィルタリングの応用例を示します。
→ライターが作成したコンテンツの見やすさ・わかりやすさなどを生かしたまま、
パーソナライズによって、よりユーザの関心を引く方法の例
※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が見込める
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.
付録
本資料作成にあたって参考にした文献リストです。