第5回 cogbot勉強会!

46
5 Cogbot 勉強会! 2017/2/24 http://www.uhdwallpapers.org/2014/12/technology - danbo - with - tablet.html Cognitive Azure ML でレコメンドを 添えよう 株式会社ネクストスケープ 上坂貴志(@takashiuesaka)

Upload: -

Post on 03-Mar-2017

225 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 第5回 cogbot勉強会!

第5回 Cogbot勉強会!2017/2/24

http://www.uhdwallpapers.org/2014/12/technology-danbo-with-tablet.html

Cognitive や Azure ML でレコメンドを添えよう

株式会社ネクストスケープ

上坂貴志(@takashiuesaka)

Page 2: 第5回 cogbot勉強会!

自己紹介

会社 株式会社ネクストスケープ

名前、年齢 上坂貴志(うえさかたかし)45歳 Twitter:@takashiuesaka

好き・興味

Azure( Microsoft MVP for Microsoft Azure)

Scrum( 認定スクラムマスター)

DDD、ソフトウェアアーキテクチャ、機械学習

講演活動

2016年 ◆ Schoo ドメイン駆動設計入門出演

UMTP モデリングフォーラム2016 登壇

QCon Tokyo 2016 DDD実践報告

de:code 2016 DDD & Azure Service Fabric 登壇

NS Study No.6 Azure IoTHub紹介登壇

アプレッソ Azure Machine Learning セミナー登壇

SANSAN DDD勉強会発表

2015年 ◆FEST2015 (Channel9で動画公開)

Developers Summit 2015

QCon Tokyo 2015

執筆活動 人工知能アプリケーション総覧寄稿(日経BP社)

Page 3: 第5回 cogbot勉強会!

レコメンドとは

Page 4: 第5回 cogbot勉強会!

レコメンドとは

ユーザーが好みそうなアイテムを自動的に予

測するユーティリティ関数を定義すること

レコメンドの定義は進化しています

今までの定義+アルファ

セレンディピティ(好ましい偶然)

• ユーザーが既に知っていることは絶対に推奨しない

ダイバーシティ(多様性)

深層学習との組み合わせが試みられている

ちょっと前までは

今よくあるレコメンドはもっと進化していて・・・

Page 5: 第5回 cogbot勉強会!

協調フィルタリングユーザがアイテムに付けたレイティングが基本

• レートが無い場合は購買履歴などの他情報から補完・算出する

https://en.wikipedia.org/wiki/Collaborative_filtering

Page 6: 第5回 cogbot勉強会!

協調フィルタリングの種類

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

•あるユーザに類似したユーザを探

しだしてレート付けされてないア

イテムを推測する

•ユーザーの行動履歴からユーザー

間の類似度を計算

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

•アイテム間の類似度とユーザ自身

の他アイテムへのレーティングを

元にレート付けされていないアイ

テムを推測する

•ユーザーの行動履歴からアイテム

間の類似度を計算

メモリベース協調フィルタリング

類似度の計算にはピアソンの相関係数、コサイン類似度、ユークリッド距離、加重平均などが用いられる具体的な説明はMS大田さんの資料がわかりやすいhttp://www.slideshare.net/masayuki1986/recommendation-ml

Page 7: 第5回 cogbot勉強会!

協調フィルタリングの種類

分類器

•ロジスティクス回帰

•ベイジアンネットワー

• SVM

•デシジョンツリーなど

クラスタリング

• K-means

• Affinity Propagation

• Spectral Clustering, HDPs

など

Latent Semantic モデル

•特異値分解

(SVD:Singular value decomposition)

• probabilistic latent semantic analysis

• multiple multiplicative factor

• LDA(latent Dirichlet allocation)

•マルコフ決定過程

(Markov decision process )

モデルベース協調フィルタリング• 機械学習モデルを利用した推薦。トレーニングデータに対してパターンを見つける。

• スパース性の高い(スカスカ)データに対して、メモリベースより良い結果を生成し、データの増大に対しての処理時間も高速。(後述)

Page 8: 第5回 cogbot勉強会!

協調フィルタリングの問題•レーティングが十分に無いと推薦対象とならないため、新しいユーザ、アイテムに対する推薦ができ

ない

コールドスタート

•アイテム数が増えると、レーティングしてあるアイテムの網羅性が下がってしまう(精度が悪くな

る)

•ユーザー数xアイテム数の組み合わせはものすごい数となるため、計算に時間がかかる

スパース性 & スケール

•既に人気のあるアイテムを推薦しがち(意外性がない)

人気バイアス

•類似アイテムが異なるアイテムとして登録されるとレコメンドの精度が悪くなる

類似性

•複数のユーザに一致してしまうユーザに対しては、最適なレコメンド結果が出力されない

灰色の羊

•サクラによる推薦結果の悪意ある操作。他社製品に対して極端に低いレーティングを付けたり、自社

製製品に対して極端に高いレーティングを大量に付ける

シリングアタック

Page 9: 第5回 cogbot勉強会!

コンテンツベース

• ユーザの行動履歴ではなくアイテムの特徴(メタデータ)をベースにしたレコメンド

• アイテムの特徴を元にしたプロファイルベクトルと、ユーザの嗜好を元にしたプロファイルベクトルとの類似度からアイテムを推測する

※メモリベース協調フィルタリングとコンテンツベースを混ぜるハイブリッド型のレコメンドが最近のトレンド

長所

•他のユーザ情報が不要なためコールドスタートやスパース性(データのスカスカ)を考慮しなくて良い

•ユーザ独自の好みに合わせることができる

•レコメンドの理由を説明しやすい

短所

•アイテムの内容から意味のある特徴量を抽出する必要がある

•セレンディピティのある推薦が難しい(ユーザに最適化されすぎる)

Page 10: 第5回 cogbot勉強会!

Cognitive Recommendations API

Page 11: 第5回 cogbot勉強会!

Cognitve リソースを作る

任意の名前

2017/2/24時点米国西部のみ

Freeを含む5種類

※Freeは1つのサブスクリプションで1つしか選択できないので要注意!※課金については後程詳しく

Page 12: 第5回 cogbot勉強会!

Recommendations API 概要Cognitive Recommendations アカウント

カタログCSV 使用状況CSV

Recommendations UI独自作成のApp, Web

※SDKは残念ながら未提供。RESTAPIを頑張って叩くしか!

REST API(http)

1.モデル作成2.データの投入3.ビルド

3.レコメンドの取得

モデル

ビルド

ビルド使用状況 カタログ…

Interface

Page 13: 第5回 cogbot勉強会!

使用状況データのスキーマ• <User Id>,<Item Id>,<Time>,[<Event type>]

• 各項目の詳細項目名 必須 入力可能な値と最大長 詳細

User Id ○[A-z], [a-z], [0-9], _, -最大長: 255

ユーザーを一意に認識する値

Item Id ○[A-z], [a-z], [0-9], _, -最大長: 50

商品を一意に認識する値

Time ○Date in format: YYYY-MM-DDTHH:MM:SS(e.g. 2013-06-20T10:00:00)

イベント発生日時

Event Option

次のいずれか- Click- RecommendationClick- AddShopCart- RemoveShopCart- Purchase

イベントのタイプです。指定されなかった場合、「Purchase」が適用されます。

サンプル168064,6485200,2013/06/20T10:00:00, Purchase263325,6485200,2013/06/20T10:00:00, Purchase190485,6485200,2013/06/20T10:00:00, Click225087,6485936,2013/06/20T10:00:00, Purchase

※使用状況のアップロードの前に、カタログのアップ

ロードすること

Page 14: 第5回 cogbot勉強会!

カタログデータのスキーマ• < Id>,<Item Name>,<Item Category>,[<Description>],<Features list>

項目名 必須 入力可能な値と最大長 詳細

Id ○[A-z], [a-z], [0-9], _, -最大長: 50

アイテムを一意に認識する値

Item Name ○ 任意の英数字, 最大長: 255 アイテム名

Item Category

○ 任意の英数字, 最大長: 255アイテムが所属するカテゴリ。空でもOK(例: Cooking Books, Drama...)

Description特徴がない場合はOption。特徴がある場合は必須。

任意の英数字, 最大長: 4000

アイテムの説明です。特徴有りで必須時、空でもOK

Features list

Option任意の英数字,最大長: 4000特徴の最大数: 20

特徴名=特徴値の形式をカンマ区切りにしたもの。特徴名最大長: 255特徴値最大長: 255

※Feature=特徴、です特徴なしのサンプルAAA04294,Office Language Pack Online DwnLd,OfficeAAA04303,Minecraft Download Game,GamesC9F00168,Kiruna Flip Cover,Accessories

特徴ありのサンプルAAA04294,Office Language Pack Online DwnLd,Office,, softwaretype=productivity, compatibility=WindowsBAB04303,Minecraft DwnLd,Games,, softwaretype=gaming, compatibility=iOS, agegroup=allC9F00168,Kiruna Flip Cover,Accessories,, compatibility=lumia, hardwaretype=mobile

Page 15: 第5回 cogbot勉強会!

ビルド(モデルのトレーニング)

•ビルドの種類は3つ(2017.2.24時点)

Recommendation

Item To Item

•ある商品、もしくは商品リストと関連する商品リストを推奨します。

•「この商品を見た人はこんな商品も見ています」

User To Item

•ユーザーが高い関心を寄せる可能性のある商品を推奨します。

•「これを買ったあなたにお勧め」

コールドスタート問題に対応するオプション有り。

FBT(Frequently Bought Together Recommendations)

ある商品と同時に購入された商品を推奨します。

「他のユーザーはこれを一緒に買っています」

Rank

カタログで指定した特徴の有効性を確認するためのビルド。

※基本は購買履歴をレーティングとする協調フィルタリングです。

※コールドスタートに対応=コンテンツベースです。つまり商品メタデータ(カタログの特徴)のセットが必要です。

Page 16: 第5回 cogbot勉強会!

Recommendations UI

•カタログ、使用状況データのアップロードからモデルのビルド、スコア(モデルの確認)が可能なWeb画面

•英語版のみ

•使用方法• URLにアクセスし、KEYを入力するだけ

https://recommendations-portal.azurewebsites.net/

Page 17: 第5回 cogbot勉強会!

ビジネスルール• レコメンド結果を意図的に操作する機能。

• 以下のJSONをRESTAPIでアップロードする。

機能タイプ名 説明 データ例

BlockList 推奨結果に含みたくないアイテムを設定します。

{"type": "blocklist","parameters": {

"blockList": {"itemIds": ["2406E770-QWR","3906E110-769"]

}}

}

FeatureBlockList 推奨結果に含みたくないアイテムについて、特定の特徴値を設定します。

{"type": "featureBlockList","parameters": {

"featureBlockList": {"name": "Movie_category","values":["Adult","Drama"] }

} }

Upsale 推奨結果に強制的に含むアイテムを設定します。

{"type": "upsale","parameters": {

"upsale": {"itemIds":["2406E770-769C-4189-89DE-1C9283F93A96"],"NumberOfItemsToUpsale":5

}}

}

1つのFeatureBlockListで1000を超えるアイテムを送信しないでください。

そうしないと、呼び出しがタイムアウトする可能性があります。1000以上のアイテムをブロックする必要

がある場合は、複数のブロックリストを設定します。

Page 18: 第5回 cogbot勉強会!

ビジネスルール

機能タイプ名 説明 データ例

WhiteList 推奨結果を、設定するアイテムに限定します。

{"type": "whitelist","parameters": {

"whitelist": {"itemIds":["2406E770-QWR","3906E110-769"]

}}

}

FeatureWhiteList 推奨結果を限定するアイテムについて、特定の特徴値を設定します。

{"type": "featureWhiteList","parameters": {

"featureWhiteList": {"name":"Movie_rating","values":["PG13", "PG"]

}}

}

PerSeedBlockList BlockList同じように推奨結果から特定のアイテムを除外しますが、推奨結果のアイテム単位に除外対象を設定します。

{"type": "perSeedBlockList","parameters": {

"perSeedBlockList": {"seedItems":["9949"],"itemsToExclude":["9862","8158","8244"]

}}

}

Page 19: 第5回 cogbot勉強会!

その他

Batchスコアリング

複数のレコメンドを1度に取得したい場合に使用

現在はitem-to-itemの結果のみ取得可能

使用例

•静的用にレコメンデーションのキャッシュを作成

•レコメンデーションの種類に関する分析

難易度ちょい高め。BlobStorageがバッチの入出力

1.blobにAPIが読み書きするためSASTokenを取得する

2.Blobにレコメンドを取得したいアイテムをjsonで記載したものを配置

3.Post Start batch job APIを叩く。(BodyのjsonでSASToken使用)

4.結果がBlobに格納される。

オフライン評価

データをトレーニングとテストに分割して精度を評価。Build時にパラメータ指定でオフライン評価となる。

評価の取得は Get build metrics APIを叩く。

詳細は↓

https://docs.microsoft.com/ja-jp/azure/cognitive-services/cognitive-services-recommendations-buildtypes#a-

nameoffline-evaluationaオフライン評価

Page 20: 第5回 cogbot勉強会!

課金

• API1つ呼び出すと1トランザクション。• ファイルのアップロード、ビルド、推奨の取得など全てが1トランザクション、ということ。

• Batchスコアリングの場合はAPI呼び出し時のスコア付けする必要があるアイテムの数が1トランザクション。

無料 STANDARD S1 STANDARD S2 STANDARD S3 STANDARD S4

月額 ¥0 ¥7,650 ¥51,000 ¥255,000 ¥510,000

レベル内の最大トランザクション数 10,000 100,000 1,000,000 10,000,000 50,000,000

超過料金 (1,000 トランザクションあたり) 該当なし ¥76.50 ¥51 ¥25.50 ¥10.20

Page 21: 第5回 cogbot勉強会!

Recommendations API• APIの解説とテストの専用ページがあります(英語)

• https://westus.dev.cognitive.microsoft.com/docs/services/Recommendations.V4.0

Page 22: 第5回 cogbot勉強会!

Recommendations API

DEMO

Page 23: 第5回 cogbot勉強会!

Azure Machine Learningによるレコメンド

Page 24: 第5回 cogbot勉強会!

Matchbox Recommender

• Train Matchbox Recommender• トレーニングデータを受け取って、学習した結果のモデルを出力

• Score Matchbox Recommender• 学習済みモデルと、推薦したい人・アイテムを受け取って、推薦した結果を出力

※本番運用ではScore Matchbox Recommenderへの入力は、トレーニング済みのTrain Matchbox Recommenderにする

Page 25: 第5回 cogbot勉強会!

Train Matchbox Recommender• Train Matchbox Recommenderは、コンテンツベースと協調フィルタリングのハイブリッドレコメンダ。• 協調フィルタリングは、ベイシアンネットワークを使用したモデルベース協調フィルタリングである。

• https://www.microsoft.com/en-us/research/wp-content/uploads/2009/01/www09.pdf

user-item-rating必須入力。userId, ItemId, Ratingだけを受け付ける。

user featuresオプション。ユーザ特徴を入力する。

item featuresオプション。アイテム特徴を入力する。

トレーニング済みMatchbox

Page 26: 第5回 cogbot勉強会!

Train Matchbox Recommender

user features, item featuresの両オプションを使用するとハ

イブリッド

• ユーザのレーティング数が少ない場合はユーザ特徴からコンテンツベー

スの推奨を行う。これによってコールドスタート問題に対応する。

• ユーザのレーティング数が増加すると、協調フィルタリングロジックに

スムーズに移行する。

それ以外の場合は協調フィルタリング

• ※MSの資料で上記と逆の説明がされているものがいくつか見受けられるので注意。

オプションを入力した場合としない場合の違い

Page 27: 第5回 cogbot勉強会!

Train Matchbox Recommender

• user-item-rating• <userId>,<itemId>,<rating>• 3つの列が必須。列が3つ以上あるとエラー。userId, itemIdに設定不可能な値はない。

Ratingは数値のみ。

• user-features• <userid>,[<option1>,<option2>,…]• user-item-ratingのuserIdと同じものをセット。Option列に制限なし。(文字列、数値、

bool値)

• item-features• <itemId>,[<option1>,<option2>,…]• user-item-ratingのitemIdと同じものをセット。Option列に制限なし。(文字列、数値、

bool値)

user-item-ratinguser features

item features

トレーニング済みMatchbox

Page 28: 第5回 cogbot勉強会!

Score Matchbox Recommender

※モデルトレーニング時にUser Featuresを入力しなかったのなら、Score時にUser Featuresは入力しないこと

※モデルトレーニング時にItem Featuresを入力しなかったのなら、Score時にItem Featuresは入力しないこと

Traind Matchbox Recommenderトレーニング済みのモデル。必須入力。

Dataset to Score推薦したい対象。userIdとitemIdが必須入力列。3列目以降は無視される。必須入力。

User Featuresオプション。新規ユーザ、もしくは全くアイテムをレーティングしていないユーザーのuserId(必須)と特徴。

Training Datasetオプション。推奨結果から除外したいユーザを入力する。

アイテムにレーティング済みユーザーを入力しても無視される Item Features

オプション。新規アイテム、もしくは未レーティングのitemId(必須)と特徴。

レーティング済みのアイテムを入力しても無視される

Page 29: 第5回 cogbot勉強会!

課金• Azure ML Studio

無料 STANDARD

料金 無料 ¥1,018.98/シート/月¥102/Studio 実行時間

Azure サブスクリプション 不要 必須

実験ごとのモジュールの最大数 100 無制限

最大実験時間 実験ごとに 1 時間 実験ごとに最大 7 日間、モジュールごとに最大 24 時間

最大の記憶域スペース 10 GB 無制限 – BYO

オンプレミス SQL からのデータ読み取り (プレビュー)

いいえ はい

実行/パフォーマンス 単一ノード 複数のノード

実稼働 Web API いいえ はい

SLA いいえ はい

Page 30: 第5回 cogbot勉強会!

課金• Web API

開発/テスト S1 S2 S3

レベル別の価格/月

¥0 ¥10,200 ¥102,000 ¥1,020,000

機能

トランザクションの無料分 (月単位)

1,000 100,000 2,000,000 50,000,000

コンピューティング時間の無料分 (月単位) 2 25 500 12,500

Web サービスの合計数

2 10 100 500

超過料金

該当なし

¥51/1,000 トランザクション

¥204/API コンピューティング時間

¥25.50/1,000 トランザクション

¥153/API コンピューティング時間

¥10.21/1,000 トランザクション

¥102/API コンピューティング時間

Page 31: 第5回 cogbot勉強会!

Matchbox Recommender

DEMO(Movie RecommendationTutorial

の説明)

Page 32: 第5回 cogbot勉強会!

Train Matchbox Recommender

• Number of traits• 特徴ベクトル数。User featuresと、Item

featuresの特徴数より小さくする。最大は100だが、20以下になるようにレーティングの加工が推奨。

• Number of recommendation algorithm iterations

• Matchboxはメッセージパッシングアルゴリズムを使ってトレーニングするため、入力データを複数回繰り返して使用する。この値が大きいと精度をあげることができ

るが、トレーニングにかかる時間が増加する。一般的に1~10の数値にする。

• Number of training batches• この数値を元に、Mathboxの第1引数(レーティングデータ)はトレーニング時のバッチ処理のために分割される。Matchboxはバッチ処理を並列稼働をするためである。この値は全レーティングデータがメモリにのるならコア数と同じバッチ数がベスト。そうでないなら、メモリに収まる使用可能なコア数の最小倍数。

• デフォルトは4。ちなみにユーザデータ、アイテムデータは分割されない。

プロパティ

Page 33: 第5回 cogbot勉強会!

Score Matchbox Recommender

Recommender Prediction kindレコメンド種類。次の4つ。

• Rating Predictionユーザーまたはアイテムに対してレーティング

• Item Recommendationユーザーに対してアイテムをレコメンド

• Related Usersユーザーに対して相関があるユーザーをレコメンド

• Related Itemsアイテムに対して相関があるアイテムをレコメンド

プロパティ

Page 34: 第5回 cogbot勉強会!

Score Matchbox Recommender

Recommended item selection• From All Items

• 全アイテムについて推奨結果を出力(本番用)• Dataset to Score(左から2つ目の入力)の1列目にはuserId列がセット必須。

• From Rated Items(for model evaluation)• レーティング済みのアイテムについての推奨結果を出力(モデル評価用)• Dataset to Score(左から2つ目の入力)にはuserId, itemId列の2列だけであること。

• From UnRated Items(to suggest new items to user)• 新アイテムをユーザに推奨するモードのようだが、使用方法の説明がどこにもない。

Maximum number of items to recommend to a user• 一人に対して推奨するアイテムの最大数。

Minimum size of the recommendation pool for a single user• 全推奨結果のうち、少なくともここで指定したアイテム数を推奨されたユーザーに絞り込む。

• 評価用の機能のため、Recommended item selectionに「From Rated Items(for model evaluation)」を選択した場合のみ表示される。

Whether to return the predicted ratings of the items along with labels• 推奨したアイテムのレート値も出力するかどうか。

Item Recomendationの場合

Page 35: 第5回 cogbot勉強会!

Score Matchbox Recommender

• Related user selection• From All Users

• 全ユーザについて推奨結果を出力(本番用)• Dataset to Score(左から2つ目の入力)の1列目にはuserId列がセット必須。

• From Users That Related Items(for model evaluation)• レーティング済みのアイテムを持つユーザーについての推奨結果を出力(モデル評価用)• Dataset to Score(左から2つ目の入力)にはuserId, itemId, rating列の3列だけであること。

• Maximum number of related users to find for a user• 一人に対して取得する関連ユーザの最大数。

• Minimum number of items that the query user and the related user must have rated in common

• 推奨対象のユーザと、推奨結果のユーザが共通にレーティングしたアイテムの最小数。• 評価用の機能のため、Related user selectionに「From Users That Related Items(for model

evaluation)」を選択した場合のみ表示される。

• Minum size of the related user pool for a single user• 推奨を作成するのに必要な類似ユーザの最小数。• 評価用の機能のため、Related user selectionに「From Users That Related Items(for model

evaluation)」を選択した場合のみ表示される。

Related Usersの場合

Page 36: 第5回 cogbot勉強会!

Score Matchbox Recommender

• Related item selection• From All Items

• 全アイテムについて推奨結果を出力(本番用)

• Dataset to Score(左から2つ目の入力)の1列目にはitemId列がセット必須。

• From Rated Items(for model evaluation)• レーティング済みのアイテムについての推奨結果を出力(モデル評価用)

• Dataset to Score(左から2つ目の入力)にはuserId, itemId の 2 列だけであること。

• From UnRated Items(to suggest new items to user)• 新アイテムをユーザに推奨するモードのようだが、使用方法の説明がどこにもない。

• Maximum number of related itemss to find for an item• アイテム一つに対して取得する関連アイテムの最大数。

• Minimum number of users that the query item and the related item must have rated in common• 推奨対象のユーザと、他ユーザが共通にレーティングしたアイテムの最小数。• 評価用の機能のため、Related item selectionに「From Rated Items(for model evaluation)」を選択した場合のみ表示される。

• Minum size of the related item pool for a single user• 推奨を作成するのに必要な類似アイテムの最小数。• 評価用の機能のため、Related item selectionに「From Rated Items(for model evaluation)」を選択した場合のみ表示される。

Related Itemsの場合

Page 37: 第5回 cogbot勉強会!

Score Matchbox Recommender• プロパティなし

Dataset to Score(Score Matchbox Recommenderの左から2つ目のインプット)には、userId, itemIdの2列を入力する。(3列目以降は無視される)

Page 38: 第5回 cogbot勉強会!

事例アーキテクチャ

Page 39: 第5回 cogbot勉強会!

事例・アーキテクチャ

•機械学習による講座レコメンデーション

朝日カルチャーセンター様

1964年にオープンの日本最大級の生涯学習センター(朝日新聞社の文化活動)

2009年よりJTB社が資本参加

さまざまな実績をもつ一流講師多数

拠点:札幌、新宿、立川、横浜、湘南(藤沢)、名古屋、中之島、くずは、芦屋、川西、京都、北九州、福岡(13教室)

圧倒的講座数(全国で約10,000講座、教養、語学、趣味、健康など)

朝日カルチャーセンターWebキャラクター「かるかる」

Page 40: 第5回 cogbot勉強会!

機械学習による講座のレコメンデーション

[講座詳細ページ]講座の閲覧履歴に応じて、

関係性がある講座をレコメンド表示

【レコメンド例】

「フレーバーソルトでダイエットしたい」に興味ある方に「花の文学散歩」と「イキイキメイク術」等をリコメンド→美しくなりたい女性像のイメージ

「鉄道写真」に興味ある方に「デジタルカメラ」と「アニメを読む 」等をリコメンド→趣味に熱中する男性像のイメージ

Page 41: 第5回 cogbot勉強会!

システムアーキテクチャ

3.最適な講座を発見2.クラウドに蓄積閲覧者

Microsoft Azure

AzureML

1.講座閲覧履歴を保存

DBWebサイト

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

Page 42: 第5回 cogbot勉強会!

Matchbox Recommender

講座No ジャンル

A001 生活

A002 音楽

A003 体操

A004 手芸

インプット

アウトプット

User URL 評価

1 /講座/A001 1

1 /講座/A002 7

2 /講座/A002 7

2 /講座/A003 2

なし(匿名ユーザーのため情報がない)

②ユーザー情報 ③アイテム情報①評価

(Option) (Option)

Score Matchbox Recommender

Tain Matchbox Recommender

Page 43: 第5回 cogbot勉強会!

全体像

Webサイト閲覧

Experiment

Web Service

利用者

Azure Virtual Machine

SQLServer

SQLServer

2.蓄積1.閲覧

6.反映

3.転送

4.計算

5.取得

バッチ処理(夜間)

・AzureMLによって出力された計算結果ファイルを取得しWebサイトに反映

7.新しい体験

Azure Storage(Blob)

Azure ML

Azure Storage(Blob)

最適なリコメンドデータをコンテンツDBに反映

・DBから必要なデータを抽出し、AzureStorageに登録

・AzureMLのバッチ用Webサービスを起動

どのユーザーが「いつ」「どのページ」「どのくらい」

閲覧したかを蓄積

閲覧データ

コンテンツデータ

Page 44: 第5回 cogbot勉強会!

Cognitive Recommendations APIとAzure Machine Learningレコメンド比較

Page 45: 第5回 cogbot勉強会!

比較

ECサイト用の推奨であればCognitiveが便利。

様々なシナリオで推奨をしたいのであればAzureML。• Itemの特性は自由に設定できる• Ratingを元にして独自の推奨を作る、など

Cognitive Recommendations API Azure ML Matchbox Recommener

入力 ファイルのみ。Item数は最大100,000まで。使用状況は最大5,000,000レコード。それ以上インプットすると古いほうから消える。1回のUpload時、200MBまで。UploadのAPIは複数同時に呼べない。入力値に制限あり。購入日時が必須列。

Http, Azure Blob Storage, Table Storage, SQL Database, DocumentDBなどが入力元にできる。入力制限はない。

レコメンド種類

• User-to-Item• Item-to-Item• FBT(FBT(Frequently Bought Together

Recommendations)• User-to-User、Ratingはない

• User-to-Item• Item-to-Item• User-to-User• Rating• FBTはない

カスタマイズ

ビジネスルールによる推奨結果の加工 推奨結果の加工は独自にロジックを組む必要がある

Page 46: 第5回 cogbot勉強会!

END