More Related Content Similar to 協調フィルタリングを利用した推薦システム構築 (7) More from Masayuki Ota (6) 協調フィルタリングを利用した推薦システム構築2. 自己紹介
大田 昌幸 江田 周平
3
早稲田大学大学院にて
ネットワークセキュリティを専攻
大量のパケットデータを解析し
IPアドレスを偽装したパケットを
判別する手法を研究
大量のデータから特徴を見つ
けるのが好き
マイクロソフト入社後
サポートエンジニアを経て
テクニカルエバンジェリスト
データ解析系案件対応増加中
大阪大学大学院にて
計画数理工学を専攻
Smart Warehouse 等で稼働す
る数百台の搬送ロボットの経
路の最適化する手法を研究。
マイクロソフト入社後
サポートエンジニアとして、主
に Office のデータ解析系の
ツールをサポート。
6. データ活用領域
Hindsight
(見える化)
データ活用度
種類
規模
Insight
(気づき)
Foresight
(予測)
単独システムのデータ 複数システムのデータ 社外データとの連携
② 手軽に始めるクラウドベースの機械学習
• 豊富なアルゴリズムを用いて機械学習を試せる環境を時間単位で手軽に利用可能
• 構築したモデルを他のシステムと連携(API 公開)により直ぐに利用可能
API公開
Azure Machine Learning
① Excel ベースの強力な BI
使い慣れた Excel ベースの UI のため、どの
ユーザー部門でも容易に活用ができ、レポー
ト表示・項目変更もユーザー主導で
Power BI ③-2 データ種類・場所に依存しない Hybrid なデータ結合・共有
• 社内のオンプレ・クラウド環境の構造・非構造データや、
外部のデータを容易に結合できる ETL 機能
• クラウドベースのデータ共有環境(SharePoint OL)
Azure Data Factory
SQL Server Integration Service
③-1 パフォーマンスを最適化するアーキテクチャ
• 最新のインメモリ技術等によるパフォーマンスの最大化
• 大量データの収集(Data Lake)から適切な形での保管
(Data Warehouse)、容易な取り出し(Data Mart)
までを容易に実現できる基盤 Data Lake Data
Warehouse
Data
Mart
14. 15
Excel ベースの顧客分析基盤を幅広い部門へ開放
使い慣れた Excel ベースの UI で
店長やエリアマネージャー、販売部、
商品部等幅広い部門に開放
大量の明細レベルでも快適に
検索・分析可能な基盤を構
築
顧客購買行動を明細レベル
で分析し、適切なタイミングで
オファー・メッセージを送付
ネットとリアルの区別なく、購
入履歴やチェックイン、検索、
SNS・口コミを集約・分析
ログ収集
レコメン
(クラウド)
実店舗
ネットストア
モバイル端末
IDとして利用
オウンドメディア
閲覧ログ
商品閲覧
購入
チェックイン
データ
商品マスタ
店舗マスタ
顧客マスタ
在庫データ
MDシステム
販売データ
マイルデータ
ポイントデータ
DWH
(データ格納場所)
ネットストア
モバイル端末
メール
Marketing Automation
Engine
(将来実装)
口コミ、
ご要望
データソース 蓄積・統合 分析・企画 アプローチ先
マイルサービス
管理システム
アドホック分析
定型レポーティング
(Power BI)
機械学習
(Azure Machine Learning)
オファー
(割引など)
レコメン
SQL Server
17. 推薦システムの全体像
18
• 大きく4 種類の推薦システムが存在する
レコメンド方式 ルールベース コンテンツベース 協調フィルタリング ベイジアンネットワーク
分析情報 過去の実績
マーケティングデータ
アイテム間の関係性 ユーザーの購買履歴 コンテンツ属性
行動履歴
ロジック 独自ルールに基づき
推薦。
コンテンツ属性を事前
に分析・分類し、関連
性を元に推薦。
購買履歴を自動的に
解析し、ユーザーの嗜
好に応じたアイテムを
推薦。
ユーザーが行動モデ
ルを作成し、確率を計
算した上で、推薦。
メリット 運営者、経営者の意
思を反映しやすい
コンテンツ属性を決定
する際に推薦するもの
を調整できる。
運営者の手間が少な
い。
セレンティビティあり。
目的に応じて、精度の
高い推薦ができる。
デメリット ユーザーの意思が反
映されにくい。
運営者の手間大
セレンティビティなし。
運営者の手間大。
ユーザーの購買履歴
を一定数収集する必
要がある。
計算結果を得られるた
めに時間がかかる。
18. レコメンド方式 ルールベース コンテンツベース 協調フィルタリング ベイジアンネットワーク
分析情報 過去の実績
マーケティングデータ
アイテム間の関係性 ユーザーの購買履歴 コンテンツ属性
行動履歴
ロジック 独自ルールに基づき
推薦。
コンテンツ属性を事前
に分析・分類し、関連
性を元に推薦。
購買履歴を自動的に
解析し、ユーザーの嗜
好に応じたアイテムを
推薦。
ユーザーが行動モデ
ルを作成し、確率を計
算した上で、推薦。
メリット 運営者、経営者の意
思を反映しやすい
コンテンツ属性を決定
する際に推薦するもの
を調整できる。
運営者の手間が少な
い。
セレンティビティあり。
目的に応じて、精度の
高い推薦ができる。
デメリット ユーザーの意思が反
映されにくい。
運営者の手間大
セレンティビティなし。
運営者の手間大。
ユーザーの購買履歴
を一定数収集する必
要がある。
計算結果を得られるた
めに時間がかかる。
推薦システムの全体像
19
• 大きく4 種類の推薦システムが存在する
19. 推薦システムの全体像
20
協調フィルタリングの代表的な判別属性は 2 種類
協調フィルタリングの判別属性
1. ユーザーベース
ユーザーの行動履歴を元にユーザー毎の嗜好の類似値を解析し、
他のユーザーが購入した他のアイテムを推薦する。
2. アイテムベース
ユーザーの行動履歴を元にアイテム間の類似値を解析し関連性の高いアイテムを推薦。
参考資料
• http://www.slideshare.net/takahirokubo7792?utm_campaign=profiletracking&utm_med
ium=sssite&utm_source=ssslideview
• http://japan.zdnet.com/article/20373064/
• http://japan.zdnet.com/article/20374062/
21. ユーザーベースの協調フィルタリング
推薦のために必要な処理 工夫できるポイント
1.ユーザーどうしの類似性スコアを算出する
1.1 何をもって類似しているとするか定義する
1.2 定義に合わせてデータを準備する
1.3 定義に合わせて算出手法を選定し実装する
1.4 実際に類似性スコアを算出する
• 1.1 類似性の定義 : ビジネス状況・仮説に合わせて定義
• 同じ商品を購入している
• 同じ商品を高く(低く)評価している..etc
• 1.3 類似性スコアの算出方法 : いくつかの手法を比較し、
自社にとって望む結果を算出する算出方法を採用する
• クロス集計
• ユークリッド距離
• ピアソン相関係数..etc
2.類似性スコアで重みをつけて推薦をする
重みをつける : 似ているユーザーの影響度を大きくする
2.1 類似性スコアで重みづけの演算をする
2.2 正規化する
2.3 適切にソーティングして結果を表示 (スコア高い順)
• 2.1 サービスに合わせたゆらぎの挿入
• キャンペーン中は特定商品を優先して推薦する
• 意外性が出るように類似性の低いユーザーのスコア
も使用する
22
ユーザーどうしの類似性を元に他のユーザーへの推薦を行う
23. 江田
南野
大田 砂金
0
1
2
3
4
5
6
0 1 2 3 4 5 6
ユニコーンガンダム
This is it
1.ユーザーどうしの類似性スコアを算出する
いくつかの方法があるが、例として理解しやすいユークリッド距離を使用
24
1.3 算出方法を選定
1
3 2
大田 (2,5) と 砂金(3,5) の距離 : 1
大田 (2,5) と 江田 (5,2) の距離 :
2 − 5 2 + (5 − 2)2= 9 + 9 = 18 = 3 2
2次元のユークリッド距離は上記のとおり単純な三角比計算
多次元の場合にも同じで、下記のような数式で計算
𝑝1 − 𝑞1
2 + 𝑝2 − 𝑞2
2 + ⋯ + (𝑝 𝑛 + 𝑞 𝑛)2
=
𝑖=1
𝑛
(𝑝𝑖−𝑞𝑖)2
32. 2.類似性スコアで重みをつけて推薦をする
33
2.2 正規化する
類似性 Z ガンダム Z ガンダム
(重みづけ)
ワンピース ワンピース
(重みづけ)
砂金 0.5 5.0 2.5 - -
江田 0.071 1.0 0.071 5.0 0.355
南野 0.055 2.0 0.11 4.0 0.44
合計 2.681 0.795
類似性の合計
スコア
多くの人に評価されるアイテムの点数が高くなる
これを正すための正規化が必要
合計点数を、評価者の類似度の合計で割ります
33. 2.類似性スコアで重みをつけて推薦をする
34
2.2 正規化する
類似性 Z ガンダム Z ガンダム
(重みづけ)
ワンピース ワンピース
(重みづけ)
砂金 0.5 5.0 2.5 - -
江田 0.071 1.0 0.071 5.0 0.355
南野 0.055 2.0 0.11 4.0 0.44
合計 2.681 0.795
類似性の合計 0.626 0.126
スコア
評価者の類似性スコアの合計を出す
0.5 + 0.071 + 0.055 = 0.626
評価者の類似性スコアの合計を出す
0.071+0.055 = 0.126
34. 2.類似性スコアで重みをつけて推薦をする
35
2.2 正規化する
類似性 Z ガンダム Z ガンダム
(重みづけ)
ワンピース ワンピース
(重みづけ)
砂金 0.5 5.0 2.5 - -
江田 0.071 1.0 0.071 5.0 0.355
南野 0.055 2.0 0.11 4.0 0.44
合計 2.681 0.795
類似性の合計 0.626 0.126
スコア 4.282 6.3
正規化
2.681/0.626 = 4.282
正規化
0.795/0.126 = 6.30
35. 2.類似性スコアで重みをつけて推薦をする
36
2.3 適切にソーティングして結果を表示 (スコア高い順)
類似性 Z ガンダム Z ガンダム
(重みづけ)
ワンピース ワンピース
(重みづけ)
砂金 0.5 5.0 2.5 - -
江田 0.071 1.0 0.071 5.0 0.355
南野 0.055 2.0 0.11 4.0 0.44
合計 2.681 0.795
類似性の合計 0.626 0.126
スコア 4.282 6.3
スコアの高い順に作品を紹介
1. ワンピース (6.3)
2. Z ガンダム (4.2)
今回は大田の好きなガンダムシリーズは最上位で推薦されなかった
この「良し悪し」を決めるのはサービス提供者で下記の調整も可能
意外性を求めるのであれば、計算時に類似性低い人を多めに混ぜる
堅実に行きたいのであれば、計算時に類似性高い人を多めに混ぜる
37. アイテムベースの協調フィルタリング
推薦のために必要な処理 工夫できるポイント
1.アイテムどうしの類似性を算出する
1.1 何をもって類似しているとするか定義する
1.2 定義に合わせてデータを準備する
1.3 定義に合わせて算出手法を選定し実装する
1.4 実際に類似性スコアを算出する
• 1.1 類似性の定義 : ビジネス状況・仮説に合わせて定義
• いつも組み合わせて購入されている
• 評価のされ方の傾向が似ている
• 1.3 類似性スコアの算出方法 : いくつかの手法を比較し、
自社にとって望む結果を算出する算出方法を採用する
• クロス集計
• ユークリッド距離
• ピアソン相関係数..etc
2.類似性スコアで重みをつけて推薦をする
重みをつける : 似ているユーザーの影響度を大きくする
2.1 類似性スコアで重みづけの演算をする
2.2 正規化する
2.3 適切にソーティングして結果を表示 (スコア高い順)
• 2.1 サービスに合わせたゆらぎの挿入
• キャンペーン中は特定商品を優先して推薦する
• 人気商品に偏らないように、表示前に癖のある
ソーティングをする
38
アイテムどうしの類似性を元にユーザーへの推薦を行う
39. Zガンダム
マクロス
ブリーチ
ワンピース
This is it
Top of UK
0
1
2
3
4
5
6
0 1 2 3 4 5 6
江田
大田
例として理解しやすいユークリッド距離を使用
1.アイテムどうしの類似性を算出する
40
1.3 算出方法を選定
1
Zガンダム(5,2) とマクロス(5,1) の距離 : 1
アイテムベースと同じく下記のような数式で計算します
=
𝑖=1
𝑛
(𝑝𝑖−𝑞𝑖)2
また、逆数をとってスコアを出します
𝑆𝑐𝑜𝑟𝑒 = 1
(1 + ユークリッド距離)
評価のされ方が似ている
48. ユーザーベース vs アイテムベース
• ユーザーベースの協調フィルタリングが向いているシナリオ
• メモリに収まるサイズで変更が頻繁に行われるデータセットが対象
• ユーザーの趣向が独自の値を持っている
• リンクを共有するサイト
• 音楽を推薦するサイト
• 巨大なデータが対象の場合はアイテムベースの協調フィルタリング
の方が良い結果を生み出す
• アイテムが多いと「ユーザー同士」の類似度を出すことが難しいため
• アイテム同士の類似度は事前に計算可能なので、運用環境での推薦が高速なため
• アイテム同士の類似度は変化しづらいので再計算が少なくて済むため
49
49. 推薦システムの構築方針
方針 独自実装 ツールを使った実装
方法 (例) Python, R を使った独自実装 Azure Machine Learning (Azure ML) を使った実装
シナリオ 統計・機械学習のプロを雇い独自実装(内製)
データ解析会社への外注
ツールのサポートを受けながら独自実装(半内製)
データ解析会社への外注
メリット • 自社製品に合わせたカスタマイズが可能
• 学習材料(書籍・サンプルコード)が豊富
• 豊富なライブラリ
• NumPy, SciPy
• 豊富な開発環境
• PyCharm, Visual Studio, Canopy
• 独自のモデルの研究・開発が不要
• Microsoft Research の高度な研究成果を活用可能
• 定期的にモデルが追加され、コストをかけずに
機械学習を活用した新しい製品を開発できる
• データの操作/可視化が容易
• Python, R の独自プログラムを挿入可能
• Web API としての公開が可能
デメリット • 学習コストが非常に高い
• 高度な統計ヘの理解
• 実装言語・ライブラリの使用方法の学習
• 必要なすべてのフローの実装が必要
• データの加工・可視化
• 提供されているモデルの内部を理解することは難解
• データの表示はあらかじめ提供される方式で表示
50
推薦システムの構築方針は2つあります
51. Pythonの特徴
• 簡潔で可読性が高い
• 拡張性が高い
• 豊富な数学・科学系ライブラリ
• データの取得、パース、計算、描画用のライブラリ
• マルチプラットフォーム
• Windows, Linux, Mac
• マルチパラダイム
• オブジェクト指向、手続き型、関数型
• 機械学習勉強用のサンプルコードが多い
52
エクセレントな高水準言語
54. Pythonの開発環境(IDE)
55
優れた開発環境の紹介
PyCharm
• Jet BRAINS社製のIDE。開発元が同じIntelliJ などと使用感が似ている
• プロジェクト管理、コード補完、対話型ウィンドウなど十分な機能が搭載されている
• Community Editionを無料で使用可能(https://www.jetbrains.com/pycharm/download/)
Visual Studio + Visual Studio tools for Python
• Microsoft社製のIDE+オープンソースのプラグイン(https://pytools.codeplex.com/)
• Visual Studio のパワフルな機能でPython開発を強力にサポート
• Community Editionを無料で使用可能
Canopy
• ENTHOUGH社製のIDE
• NumPy等の科学系パッケージを同時にインストールしてくれるため、解析用環境を容易に構築可能
• EXPRESS Editionを無料で使用可能(https://store.enthought.com/downloads/)
58. Azure MLの紹介
• Microsoft Azure 上にホスト
されており環境構築が不要
• Microsoft Research の開発
した高度なモデルを無償で利
用可能
• Python, R で開発した独自プ
ログラムで拡張可能
• Web API として公開可能
59
GUI ベースの機械学習ソリューション
59. Training
Data
Web
Service
Azure Machine Learning
Microsoft Azure
Webシステム
Azure Blob
ストレージ
Hive
Azure SQL Database
Azure テーブル
業務システム
HDInsight
( Hadoop )
他システム
Power View 等の
データ分析・可視化
ツール
Azure Blob
ストレージ
Azure SQL
Database
Batch Execution
Service
Request-Response
Service
評価モデル作成
(Training)
60
63. オススメの学習資料
• 統計系基礎
• 「Head First Statistics」Dawn Griffiths 著
• 解析系基礎
• 「Head First データ解析」Michael Milton 著
• 解析用データの収集
• 「入門ソーシャルデータ」Matthew A. Russell 著
• 機械学習プログラミング
• 「実践機械学習システム」 Willi Richert, Luis Pedro Coelho 著
• Q&A
• Cross Validated : http://stats.stackexchange.com/
64
今後の自習時に役立つ学習資料