協調フィルタリングを利用した推薦システム構築

64
協調フィルタリングを利用した 推薦システム構築 2 日本マイクロソフト テクニカルエバンジェリスト 大田 昌幸 : @masota0517 江田 周平 : @shumach5

Upload: masayuki-ota

Post on 16-Jul-2015

5.416 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: 協調フィルタリングを利用した推薦システム構築

協調フィルタリングを利用した推薦システム構築

2

日本マイクロソフトテクニカルエバンジェリスト大田 昌幸 : @masota0517 江田 周平 : @shumach5

Page 2: 協調フィルタリングを利用した推薦システム構築

自己紹介

大田 昌幸 江田 周平

3

早稲田大学大学院にてネットワークセキュリティを専攻

大量のパケットデータを解析しIPアドレスを偽装したパケットを判別する手法を研究

大量のデータから特徴を見つけるのが好き

マイクロソフト入社後サポートエンジニアを経てテクニカルエバンジェリストデータ解析系案件対応増加中

大阪大学大学院にて計画数理工学を専攻

Smart Warehouse等で稼働す

る数百台の搬送ロボットの経路の最適化する手法を研究。

マイクロソフト入社後

サポートエンジニアとして、主に Officeのデータ解析系のツールをサポート。

Page 3: 協調フィルタリングを利用した推薦システム構築

本セッションの目的

•機械学習の概要理解

•推薦システムの基本的な仕組みの理解

•実装方針の把握

•自習教材の把握

4

Page 4: 協調フィルタリングを利用した推薦システム構築

アジェンダ

1. データ解析分野の全体像の把握

2. 機械学習の概要

• 機械学習概要

• 事例紹介

3. 推薦システムの基本的な仕組みの紹介

5

Page 5: 協調フィルタリングを利用した推薦システム構築

1. データ解析分野の全体像の把握

6

Page 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

WarehouseDataMart

Page 7: 協調フィルタリングを利用した推薦システム構築

2. 機械学習の概要

8

Page 8: 協調フィルタリングを利用した推薦システム構築

機械学習とは何か

アルゴリズムとして明示的に解法が与えられないタスクに対して、

そのタスクを遂行するための「進化するモデル」を、

学習データから構築すること

タスク : 対象とする問題

モデル : 人間の知的活動をパターン化したもの

学習データ : コンピューターが学習するために使用する実験データ

<出展 : フリーソフトで始める機械学習入門>

9

Page 9: 協調フィルタリングを利用した推薦システム構築

機械学習の要素 (学習時)データ

学習用データ/評価用データを分割する (例: 60% : 40%)

モデルの訓練(学習アルゴリズムの訓練)

モデル

学習データを使用して、最適な結果を出すモデルを作成する

データの正規化(不要・不正なデータの削除)

アウトプット/評価

実世界のデータ

10

Page 10: 協調フィルタリングを利用した推薦システム構築

機械学習の要素 (使用時)データ

学習用データ/評価用データを分割する (例: 60% : 40%)

モデルの訓練(学習アルゴリズムの訓練)

モデル

データの正規化(不要・不正なデータの削除)

アウトプット/評価

実世界のデータ

11

Page 11: 協調フィルタリングを利用した推薦システム構築

用語集今後学習を進めるうえで理解しておくと便利な用語解説

まず下記のような数式のことを、あるデータ群の性質を表す”モデル” と呼びます

y = ax1 + ax2 + ax3 …

y の部分を目的変数・結果変数などと呼びます

x の部分を予測変数・説明変数・特徴などと呼びます

複数の x を入力し、y の値が最適な値となるように適切な a を決定していくことをモデルの訓練(調整)と呼びます

12

Page 12: 協調フィルタリングを利用した推薦システム構築

機械学習の分類 (手法別)

機械学習

教師あり学習(正解データがある場合)

中間的手法教師なし学習

(正解データがない場合)

識別(カテゴリ分類)

回帰(数値推測)

モデル推定(クラスタリング)

パターンマイニング

データが正解つき/なしの組み合わせ 手法が正解つき/なしの組み合わせ

購買パターン発見音声/文字認識文章のP/N 判定

売り上げ予測 顧客の分類

ハンズオンの内容

13

Page 13: 協調フィルタリングを利用した推薦システム構築

14

行動履歴を機械学習で分析し最適なコンテンツ表示

これまで難解だった機械学習を簡単かつ短期間で導入できることを証明(2 週間で構築)

Web サイトの表示を改善し、新しいエクスペリエンスを提供

蓄積データを機械学習によって分析し最適な講座情報を発見

ビッグデータ(行動履歴)をクラウドに蓄積

Web サイト閲覧者

②蓄積

AzureMachine Learning

Web サイトでの行動履歴(講座閲覧履歴)を保存

③分析①収集

④反映

Azure SQL DBWeb サイト

閲覧履歴に基づいた講座のリコメンデーションを表示

Page 14: 協調フィルタリングを利用した推薦システム構築

15

Excel ベースの顧客分析基盤を幅広い部門へ開放

使い慣れた ExcelベースのUIで店長やエリアマネージャー、販売部、商品部等幅広い部門に開放

大量の明細レベルでも快適に検索・分析可能な基盤を構築

顧客購買行動を明細レベルで分析し、適切なタイミングでオファー・メッセージを送付

ネットとリアルの区別なく、購入履歴やチェックイン、検索、SNS・口コミを集約・分析

ログ収集

レコメン(クラウド)

実店舗

ネットストア

モバイル端末

IDとして利用

オウンドメディア

閲覧ログ

商品閲覧

購入

チェックインデータ

商品マスタ店舗マスタ顧客マスタ在庫データ

MDシステム

販売データマイルデータポイントデータ

DWH

(データ格納場所)

ネットストア

モバイル端末

メール

Marketing Automation

Engine

(将来実装)

口コミ、ご要望

データソース 蓄積・統合 分析・企画 アプローチ先

マイルサービス管理システム

アドホック分析

定型レポーティング(Power BI)

機械学習(Azure Machine Learning)

オファー(割引など)

レコメン

SQL Server

Page 15: 協調フィルタリングを利用した推薦システム構築

3.推薦システムの基本的な仕組みの紹介

16

Page 16: 協調フィルタリングを利用した推薦システム構築

推薦システムのビジネスメリット

• 売り上げを増やすための新たな接点を創出する• 同時購入を促すためのアイテム推薦

• ユーザーの興味を想起するニッチな商品の推薦

• ユーザー離脱を防ぐ• ゲームで負け続けているユーザーに特別なアイテムをプレゼントし離脱防止

17

ビジネスの機会創出を自動化できる

Page 17: 協調フィルタリングを利用した推薦システム構築

推薦システムの全体像

18

• 大きく4 種類の推薦システムが存在する

レコメンド方式 ルールベース コンテンツベース 協調フィルタリング ベイジアンネットワーク

分析情報 過去の実績マーケティングデータ

アイテム間の関係性 ユーザーの購買履歴 コンテンツ属性行動履歴

ロジック 独自ルールに基づき推薦。

コンテンツ属性を事前に分析・分類し、関連性を元に推薦。

購買履歴を自動的に解析し、ユーザーの嗜好に応じたアイテムを推薦。

ユーザーが行動モデルを作成し、確率を計算した上で、推薦。

メリット 運営者、経営者の意思を反映しやすい

コンテンツ属性を決定する際に推薦するものを調整できる。

運営者の手間が少ない。セレンティビティあり。

目的に応じて、精度の高い推薦ができる。

デメリット ユーザーの意思が反映されにくい。運営者の手間大

セレンティビティなし。運営者の手間大。

ユーザーの購買履歴を一定数収集する必要がある。

計算結果を得られるために時間がかかる。

Page 18: 協調フィルタリングを利用した推薦システム構築

レコメンド方式 ルールベース コンテンツベース 協調フィルタリング ベイジアンネットワーク

分析情報 過去の実績マーケティングデータ

アイテム間の関係性 ユーザーの購買履歴 コンテンツ属性行動履歴

ロジック 独自ルールに基づき推薦。

コンテンツ属性を事前に分析・分類し、関連性を元に推薦。

購買履歴を自動的に解析し、ユーザーの嗜好に応じたアイテムを推薦。

ユーザーが行動モデルを作成し、確率を計算した上で、推薦。

メリット 運営者、経営者の意思を反映しやすい

コンテンツ属性を決定する際に推薦するものを調整できる。

運営者の手間が少ない。セレンティビティあり。

目的に応じて、精度の高い推薦ができる。

デメリット ユーザーの意思が反映されにくい。運営者の手間大

セレンティビティなし。運営者の手間大。

ユーザーの購買履歴を一定数収集する必要がある。

計算結果を得られるために時間がかかる。

推薦システムの全体像

19

• 大きく4 種類の推薦システムが存在する

Page 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/

Page 20: 協調フィルタリングを利用した推薦システム構築

ユーザーベースの協調フィルタリング

21

Page 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

ユーザーどうしの類似性を元に他のユーザーへの推薦を行う

Page 22: 協調フィルタリングを利用した推薦システム構築

1.ユーザーどうしの類似性スコアを算出する

1.1 類似性の定義:同じ商品への評価が高い(低い)と類似性が高い

1.2 データの準備:ユーザーから各アイテムへの評価をリスト化

23

システムに合わせた類似性を定義しデータを用意する

ユニコーンガンダム This is it

砂金 5.0 3.0

江田 2.0 5.0

南野 1.0 4.0

大田 5.0 2.0

Page 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 − 𝑞12 + 𝑝2 − 𝑞2

2 +⋯+ (𝑝𝑛 + 𝑞𝑛)2

=

𝑖=1

𝑛

(𝑝𝑖−𝑞𝑖)2

Page 24: 協調フィルタリングを利用した推薦システム構築

1.ユーザーどうしの類似性スコアを算出する

• 類似している人物ほどユークリッド距離の値が小さくなる

• 類似している人物ほど高いスコアにしたいのため逆数を取る類似性が最大の人はユークリッド距離が0なので、1 を足す

𝑆𝑐𝑜𝑟𝑒 = 1 (1 +ユークリッド距離)

なお、Score は 0 から 1 までの値を返します

0 は全く類似しておらず、1は類似性が高いことを表します

25

1.3 算出方法を選定

Page 25: 協調フィルタリングを利用した推薦システム構築

1.ユーザーどうしの類似性スコアを算出する

26

• 1.4 実際に類似性スコアを算出する

大田との類似性スコア

砂金 0.5

江田 0.071

南野 0.055

大田に推薦する場合には、大田との類似性スコアを算出する

Page 26: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

27

2.1 類似性スコアで重みづけ演算をする

類似性 Zガンダム Zガンダム(重みづけ)

ワンピース ワンピース(重みづけ)

砂金 0.5

江田 0.071

南野 0.055

合計

類似性の合計

スコア

大田が見たことのないアイテムを計算対象とする(見たことのあるものを推薦対象とすることはないため)

Page 27: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

28

2.1 類似性スコアで重みづけ演算をする

類似性 Zガンダム Zガンダム(重みづけ)

ワンピース ワンピース(重みづけ)

砂金 0.5 5.0 -

江田 0.071 1.0 5.0

南野 0.055 2.0 4.0

合計

類似性の合計

スコア

各アイテムへのユーザーの評価を読み込むユーザーから評価されていないアイテムもある

Page 28: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

29

2.1 類似性スコアで重みづけの演算をする

類似性 Zガンダム Zガンダム(重みづけ)

ワンピース ワンピース(重みづけ)

砂金 0.5 5.0 2.5 -

江田 0.071 1.0 5.0

南野 0.055 2.0 4.0

合計

類似性の合計

スコア

重みづけした値を計算する

Page 29: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

30

2.1 類似性スコアで重みづけ演算をする

類似性 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

合計

類似性の合計

スコア その他の値も重みづけして算出

Page 30: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

31

2.1 類似性スコアで重みづけ演算をする

類似性 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

類似性の合計

スコア合計値を算出

Page 31: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

32

2.1 類似性スコアで重みづけ演算をする

類似性 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

類似性の合計

スコアその他の合計値も算出

Page 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

類似性の合計

スコア

多くの人に評価されるアイテムの点数が高くなる

これを正すための正規化が必要合計点数を、評価者の類似度の合計で割ります

Page 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

Page 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

Page 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)

今回は大田の好きなガンダムシリーズは最上位で推薦されなかったこの「良し悪し」を決めるのはサービス提供者で下記の調整も可能意外性を求めるのであれば、計算時に類似性低い人を多めに混ぜる堅実に行きたいのであれば、計算時に類似性高い人を多めに混ぜる

Page 36: 協調フィルタリングを利用した推薦システム構築

アイテムベースの協調フィルタリング

37

Page 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

アイテムどうしの類似性を元にユーザーへの推薦を行う

Page 38: 協調フィルタリングを利用した推薦システム構築

1.アイテムどうしの類似性を算出する

1.1 類似性の定義:評価のされ方が似ていると類似性が高い

1.2 データの準備:ユーザーから各アイテムへの評価をリスト化

39

システムに合わせた類似性を定義しデータを用意する

大田 江田

Zガンダム 5.0 2.0

マクロス 5.0 1.0

ブリーチ 4.0 3.0

・・・ ・・・ ・・・

ワンピース 4.0 4.0

This is it 2.0 5.0

Top of UK 2.0 4.0

Page 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 +ユークリッド距離)

評価のされ方が似ている

Page 40: 協調フィルタリングを利用した推薦システム構築

1.アイテムどうしの類似性を算出する

41

• 1.4 実際に類似性スコアを算出する

Zガンダム マクロス ・・・ Top of UK

Zガンダム - 0.182 0.012

マクロス 0.182 - 0.122

・・・

This is it 0.020 0.148 0.179

Top of UK 0.012 0.122 -

複数のユーザー、アイテムから算出した仮の値を表にしています

Page 41: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

42

2.1 類似性スコアで重みづけ演算をする

森川さんの評価

Zガンダム 4.5

ブリーチ 4.0

This is it 1.0

合計

スコア

今回は森川さんへの推薦をする

まず、森川さんのこれまで評価したアイテムとその評価を読み込む

Page 42: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

43

2.1 類似性スコアで重みづけ演算をする

森川さんの評価

マクロスの類似性

マクロス(重みづけ)

ワンピースの類似性

ワンピース(重みづけ)

Zガンダム 4.5 0.182 0.222

ブリーチ 4.0 0.103 0.091

This is it 1.0 0.148 0.4

合計

スコア

森川さんの見たことのないアイテムと評価済みアイテムとの類似性スコアを読み込む

類似性スコアはあらかじめ計算しておくことで、森川さんというユーザーに依存せず、全てのユーザーで活用できる

Page 43: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

44

2.1 類似性スコアで重みづけ演算をする

森川さんの評価

マクロスの類似性

マクロス(重みづけ)

ワンピースの類似性

ワンピース(重みづけ)

Zガンダム 4.5 0.182 0.818 0.222 0.999

ブリーチ 4.0 0.103 0.412 0.091 0.363

This is it 1.0 0.148 0.148 0.4 0.4

合計 1.378 1.764

スコア

重みづけの計算を行い、合計を算出する

Page 44: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

45

2.1 類似性スコアで重みづけの演算をする

森川さんの評価

マクロスの類似性

マクロス(重みづけ)

ワンピースの類似性

ワンピース(重みづけ)

Zガンダム 4.5 0.182 0.818 0.222 0.999

ブリーチ 4.0 0.103 0.412 0.091 0.363

This is it 1.0 0.148 0.148 0.4 0.4

合計 0.433 1.378 0.713 1.764

スコア

正規化のため類似性の合計を算出する

Page 45: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

46

2.2 正規化する

森川さんの評価

マクロスの類似性

マクロス(重みづけ)

ワンピースの類似性

ワンピース(重みづけ)

Zガンダム 4.5 0.182 0.818 0.222 0.999

ブリーチ 4.0 0.103 0.412 0.091 0.363

This is it 1.0 0.148 0.148 0.4 0.4

合計 0.433 1.378 0.713 1.764

スコア 3.183 2.473

正規化1.378/0.433 = 3.183

正規化1.764/0.713 = 2.473

Page 46: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

47

2.2 正規化する

森川さんの評価

マクロスの類似性

マクロス(重みづけ)

ワンピースの類似性

ワンピース(重みづけ)

Zガンダム 4.5 0.182 0.818 0.222 0.999

ブリーチ 4.0 0.103 0.412 0.091 0.363

This is it 1.0 0.148 0.148 0.4 0.4

合計 0.433 1.378 0.713 1.764

スコア 3.183 2.473

正規化1.378/0.433 = 3.183

正規化1.764/0.713 = 2.473

Page 47: 協調フィルタリングを利用した推薦システム構築

2.類似性スコアで重みをつけて推薦をする

48

2.3 適切にソーティングして結果を表示 (スコア高い順)

森川さんの評価

マクロスの類似性

マクロス(重みづけ)

ワンピースの類似性

ワンピース(重みづけ)

Zガンダム 4.5 0.182 0.818 0.222 0.999

ブリーチ 4.0 0.103 0.412 0.091 0.363

This is it 1.0 0.148 0.148 0.4 0.4

合計 0.433 1.378 0.713 1.764

スコア 3.183 2.473

スコアの高い順に作品を紹介1. マクロス (3.183)

2. ワンピース (2.473)

Page 48: 協調フィルタリングを利用した推薦システム構築

ユーザーベース vs アイテムベース

• ユーザーベースの協調フィルタリングが向いているシナリオ• メモリに収まるサイズで変更が頻繁に行われるデータセットが対象

• ユーザーの趣向が独自の値を持っている• リンクを共有するサイト

• 音楽を推薦するサイト

• 巨大なデータが対象の場合はアイテムベースの協調フィルタリングの方が良い結果を生み出す• アイテムが多いと「ユーザー同士」の類似度を出すことが難しいため

• アイテム同士の類似度は事前に計算可能なので、運用環境での推薦が高速なため

• アイテム同士の類似度は変化しづらいので再計算が少なくて済むため

49

Page 49: 協調フィルタリングを利用した推薦システム構築

推薦システムの構築方針

方針 独自実装 ツールを使った実装

方法 (例) Python, R を使った独自実装 Azure Machine Learning (Azure ML) を使った実装

シナリオ 統計・機械学習のプロを雇い独自実装(内製)データ解析会社への外注

ツールのサポートを受けながら独自実装(半内製)データ解析会社への外注

メリット • 自社製品に合わせたカスタマイズが可能• 学習材料(書籍・サンプルコード)が豊富• 豊富なライブラリ

• NumPy, SciPy• 豊富な開発環境

• PyCharm, Visual Studio, Canopy

• 独自のモデルの研究・開発が不要• Microsoft Research の高度な研究成果を活用可能• 定期的にモデルが追加され、コストをかけずに機械学習を活用した新しい製品を開発できる

• データの操作/可視化が容易• Python, R の独自プログラムを挿入可能• Web API としての公開が可能

デメリット • 学習コストが非常に高い• 高度な統計ヘの理解• 実装言語・ライブラリの使用方法の学習

• 必要なすべてのフローの実装が必要• データの加工・可視化

• 提供されているモデルの内部を理解することは難解• データの表示はあらかじめ提供される方式で表示

50

推薦システムの構築方針は2つあります

Page 50: 協調フィルタリングを利用した推薦システム構築

独自実装~ Pythonでの実装方法 ~

51

Page 51: 協調フィルタリングを利用した推薦システム構築

Pythonの特徴

• 簡潔で可読性が高い

• 拡張性が高い• 豊富な数学・科学系ライブラリ

• データの取得、パース、計算、描画用のライブラリ

• マルチプラットフォーム• Windows, Linux, Mac

• マルチパラダイム• オブジェクト指向、手続き型、関数型

• 機械学習勉強用のサンプルコードが多い

52

エクセレントな高水準言語

Page 52: 協調フィルタリングを利用した推薦システム構築

Pythonの導入

• 公式Webサイトから最新版インストーラーを入手• https://www.python.org/downloads/

• 2.x系、3.x系の2種類が存在• 基本的には 3.x 系が推奨されています(2015年4月現在)

• 2.x系のみに対応したライブラリを使用する際には2.x系を選択する

• 詳しくは下記URLをご参照くださいhttps://wiki.python.org/moin/Python2orPython3

53

Python 3.x のインストールを推奨

Page 53: 協調フィルタリングを利用した推薦システム構築

Pythonの学習

• 下記URLで学習開始• http://www.codecademy.com/

• ブラウザで全て完結• 学習・解説

• コーディング

• 答え合わせ

• 無料で十分に学習可能

54

書籍購入前にcode academyでの学習がオススメ

Page 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/)

Page 55: 協調フィルタリングを利用した推薦システム構築

サンプルコードの紹介

Oreillyサイトからサンプルのダウンロードが可能http://shop.oreilly.com/product/9780596529321.do

56

サンプルコードで具体的な実装方法を学ぼう!

ここからダウンロードZipファイル解凍後、chapter2/recommendations.pyをエディタやIDEで開いて実装方法を学びましょう

#python 2.7.x 系での実行がオススメ

実行方法・解説は本を購入してご確認ください日本語名 :集合知プログラミング

http://www.oreilly.co.jp/books/9784873113647/

Page 56: 協調フィルタリングを利用した推薦システム構築

Azure Machine Learning での実装方法

57

Page 57: 協調フィルタリングを利用した推薦システム構築

Bing maps

launches

家までの最適なルートは?

Microsoft

Research

formed

Kinect

launches

その動作はどういう意味?

Azure Machine

Learning

launches

次に起こるのは何?

Hotmail

launches

ジャンクメールはどれ?

Bing search

launches

どの検索結果が最も関連性があるか?

Skype

Translator

launches

その人は何と言っている?

Microsoft と Machine Learning

John Platt, Distinguished scientist at

Microsoft Research

1991 201420091997 201420102008

Machine learning= 経験(過去データ+人の入力)により賢くなるコンピューティングシステム

“Machine learning is pervasive throughout Microsoft products.”機械学習はマイクロソフトの製品・サービスで広く使われています

58

Page 58: 協調フィルタリングを利用した推薦システム構築

Azure MLの紹介

• Microsoft Azure 上にホストされており環境構築が不要

• Microsoft Research の開発した高度なモデルを無償で利用可能

• Python, R で開発した独自プログラムで拡張可能

• Web API として公開可能

59

GUI ベースの機械学習ソリューション

Page 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

Page 60: 協調フィルタリングを利用した推薦システム構築

手順書

61

Azure Machine Learning による

推薦システムの構築手順書

http://bit.ly/azuremlR

Page 61: 協調フィルタリングを利用した推薦システム構築

本セッションで学んだこと

•機械学習の概要の理解

•推薦システムの基本的な仕組みの理解

•具体的な実装方法の把握

•自習教材の把握

登壇依頼などお気軽にどうぞ~

by@masota0517, @shumach5

62

Page 62: 協調フィルタリングを利用した推薦システム構築

参考資料

• 「集合知プログラミング」Toby Segaran 著

• 「データサイエンス講義」 Rachel Schutt, Cathy O’Neil 著

63

本資料作成のための参照した参考資料

Page 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

今後の自習時に役立つ学習資料

Page 64: 協調フィルタリングを利用した推薦システム構築

65