Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Azure Machine Learning による
推薦システム構築手順書
1
日本マイクロソフト
テクニカルエバンジェリスト
大田 昌幸 : @masota0517 江田 周平 : @shumach5
安藤 祐貴 : @ycnyuki
清水...
本手順書の目的・前提条件
本手順を実施して得られること
Azure Machine Learning 上で、推薦システムを構築する方法を学べる
本手順で扱うモデル
各ユーザーの映画の嗜好を学習しユーザーが興味を持ちそうな映画を推薦する
参考資料...
この手順書を通して開発するもの
3
ユーザーへ映画を推薦するシステムを作成します
Azure Machine Learning
1. Azure Machine Learning へ
推薦システムのテンプレートを
インポートする 2. インポ...
この手順書を通して開発するもの
4
ユーザーへ映画を推薦するシステムを作成します
Web アプリ完成イメージ
ユーザー ID に応じて
おすすめの映画を最大 5 つ提示します
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
この手順書を通して開発するもの
6
ユーザーへ映画を推薦するシステムを作成します
Azure Machine Learning
1. Azure Machine Learning へ
推薦システムのテンプレートを
インポートする 2. インポ...
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
8
1. ブラウザで以下のページへアクセスします
https://manage.windowsazure.com
3. [+ 新規] をクリックします
2. 左のような画面が表示されます
手順書
9
2. ワークスペース名を入力します。
(ユニークな名前となる必要があります。)
1. [データ サービス]-[MACHINE LEARNING]-
[簡易作成]
の順にクリックします。
3. データ保存領域であるストレージに
任意の...
手順書
10
しばらくすると、
ワークスペースの作成が完了します
ワークスペースの作成が完了し、
Azure ML を使用する準備が整いました。
手順書
11
先ほど作成したワークスペースの
名前の横にある [→] をクリックします。
手順書
12
[ML Studio にサインイン] をクリックします。
手順書
13
しばらくすると、
ML Studio の画面が表示されます。
ML Studio へのサイン インが完了し、
ソリューションを開発する準備が整いました。
手順書
14
ML Studio 上で、[+ New] をクリックします。
手順書
15
検索ボックスで “movie recommendation”
を検索します。
“Recommender: Movie recommendation”
が表示されます。
手順書
16
“OPEN IN STUDIO” をクリックします。
手順書
17
モデルが展開されたことを確認します。
作成されたモデルは該当の箇所のモジュールが
重なって表示されます。
図のように重ならないように適宜モジュールを
ドラッグし配置します。
手順書
18
[RUN] をクリックします。
作成したモデルで学習が始まります。
実はこのままで推薦モデルを使用できるのですが、
今後応用するために各モジュールの解説を行います
この手順書を通して開発するもの
19
ユーザーへ映画を推薦するシステムを作成します
Azure Machine Learning
1. Azure Machine Learning へ
推薦システムのテンプレートを
インポートする 2. イン...
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
このテンプレートの概要
21
推薦のために使用するデータ
モデルの訓練
今回は Matchbox というモジュールを使用します。
このモジュールは “2 つのアイテム”,”そのアイテ
ム間の関係”という 3 つの学習データが必要です。
今回は ...
各モジュールで実施していること
22
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの...
データのインポート
23
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モデ...
解説
24
“Movie ID”、”Movie Name” の列からなる
データセットです。
(実体は、CSV ファイルです。)
データのインポート
25
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モデ...
解説
26
“UserId”、”MovieId”、”Rating”、
“TimeStamp” の列からなるデータセットです。
(実体は CSV ファイルです。)
解説
27
”Launch column selector” から
“Rating” を選択します。
このモジュールではデータの列の型を変更します。
“Rating “の型が、Numeric 型になっていますので、
プロパティ画面のとおり設定し...
データのクレンジング
28
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モ...
解説
29
“Movie Ratings” と “IMDB Movie Titles” の
データセットを Join します。
Join の際は、画面右の Properties ペインの通り、
Inner Join を実施します。
Join の...
解説
30
Join したデータの中から
使用する列を選択します。
”Launch column selector” から
“UserId”、”Movie Name”、”Rating”
の列を選択します。
解説
31
データセットから重複する行を削除します。
”Launch column selector” で、
”UserId”、”Movie Name” を設定します。
”UserId” と ”Movie Name” が重複している行
の一方が...
学習用データ/評価用データの分割
32
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータ...
解説
33
“Fraction of training-onl…” を 0.75、”Fraction of
test user rati...” を 0.25 に設定します。
75 % のデータがトレーニング用データとして左の
ポートから出力さ...
解説
34
ここをクリックして、[Visualize] をクリックします。
後ほど推薦された情報と比較するために、
どのユーザーがどのような映画を評価しているかを
確認してみましょう。
14887というユーザーは
One Flew Over t...
モデルの訓練
35
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モデルの評...
解説
36
“Matchbox” というアルゴリズムを使用します。
“Mathbox”はAzure ML の提供する
推薦システム用のアルゴリズムです。
左の入力ポートから訓練データを入力し、学習させます。
“Number of traits”...
モデルの評価
37
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モデルの評...
解説
38
学習させた Matchbox モジュールを使用します。
学習させた “Matchbox” モジュールと
データセットを入力とします。
”Rating Prediction” を選択することで
各ユーザーの任意の映画に対する
“Rat...
解説
39
実データとレコメンドデータを基に
MAE 値(絶対平均誤差)、RMSE 値 (平均二乗誤差)
を求めます。
左図に示した赤丸の箇所をクリックし、
”Visualize” をクリックすることで
MAE 値、RMSE 値 の実際の結果を...
モデルの評価
40
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モデルの評...
解説
41
学習させた Matchbox のモジュールを使用します。
“Matchbox” モジュールとデータセットを入力としま
す。
“From Rated Items for model” を選択することで
ランク付けされた映画からのみ推薦...
解説
42
NDCG 値を求めます。
(1 に近づくほど精度の高いモジュールが作成できて
いることになります。)
左図の赤丸の箇所をクリックし、
”Visualize” をクリックすることで
NDCG 値 の実際の結果を確認できます。
データのクレンジング
43
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モ...
解説
44
データセットの中で重複している行を削除します。
”Launch column selector” で、
”UserId” を設定します。
”UserId” が重複している場合一方を削除します。
解説
45
データの量 (行数) を制限します。
“Partition or sample mode” を “Head” に、
”Number of rows to select” を 100 と設定します。
入力されたデータの頭から 100 ...
解説
46
入力されたデータセットのうち、
必要な列のみ保持します。
”Launch column selector” で、
”UserId” のみ指定します。
”UserId” 列のみのデータセットが作成されます。
モデルの評価
47
ユーザーの各映画に対する
評価データのインポート
学習用データ/評価用データを
分割する (例: 75% : 25%)
モデルの訓練
(学習アルゴリズムの訓練)
データのクレンジング
(不要・不正なデータの削除)
モデルの評...
解説
48
学習させた Matchbox のモジュールを使用します。
“Matchbox” モジュールとデータセットを入力としま
す。
“Item Recommendation” を選択します。
各ユーザーに推薦すべき映画を予測します。
“Fr...
解説
49
左図の赤丸の箇所をクリックし、
”Visualize” をクリックすることで
各ユーザーへ推薦すべき映画の
結果を確認できます。
解説
50
User ID, 1番推薦したいアイテム,
2 番目に推薦したいアイテム…,
という順序でデータが表示されます。
この手順書を通して開発するもの
51
ユーザーへ映画を推薦するシステムを作成します
Azure Machine Learning
1. Azure Machine Learning へ
推薦システムのテンプレートを
インポートする 2. イン...
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
Web API で活用するために、
学習済みの “Matchbox” を保存します。
左図に示した赤丸の箇所をクリックします。
“Save as Trained Model”をクリックします。
手順
54
モジュールを任意の名前で保存します。
ここでは仮に ”Sample movie Recommender”
と入力します。
右下のボタンをクリックし、モジュールを保存しま
す。
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
56
ML Studio 上で、[+ New] をクリックします。
手順書
57
“Blank Experiment” を選択します。
新規 Experiment が作製されます。
手順書
58
画面左の検索ボックスに
“Sample Movie Recommender”
と入力し、モジュールを検索します。
手順書
59
検索結果で表示された “Sample Movie
Recommender” を画面中央のスペースにドラッグ
& ドロップします。
これ以降の手順でも、”検索 + ドラッグ&ドロップ”を
組み合わせて捜査を行います。
手順書
60
“Movie Ratings” のデータセットを
ドラッグ & ドロップします。
手順書
61
1. “Remove Duplicate Rows“ モジュールを
ドラッグ & ドロップで配置します。
“Movie Ratings”データセットと接続します。
2. [Launch column selector] をクリック...
手順書
62
2. 左図のように設定を行います。
この設定を行うことで、
”UserId” が重複しているデータがある場合
一方のデータを削除します。
1. [Select columns] 画面が表示されます。
画面左の [WITH RULE...
手順書
63
2. “Partition or sample mode” を “Head” に、
”Number of rows to select” を 100 と設定します。
入力されたデータの先頭から 100 行を取得します。
1. “P...
手順書
64
1.“Select Columns in Dataset” のモジュールを
ドラッグ & ドロップします。
“Partition and Sample” モジュールと接続します。
2.”Launch column selector...
手順
65
1. “Score Matchbox Recommender” のモジュールを
ドラッグ & ドロップします。
“Sample Movie Recommender” 、“Select Columns in
Dataset” モジュー...
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
67
“Web service input” のモジュールを
ドラッグ & ドロップします。
“Score Matchbox Recommender” と
接続します。
“Web Service output”のモジュールを
ドラッグ ...
手順書
68
[Run]-[Run] をクリックします。
適切に Experiment が構築されている場合
“Deploy WEB SERVICE” のボタンが
クリックできるようになります。
手順書
69
[DEPLOY WEB SERVICE]-[Deploy Web Service [Classic]] を
クリックします。
手順
70
左図のような画面が表示されていることを確認します。
手順書
71
“REQUEST/RESPONSE” をクリックします。
API の詳細・APIを操作するためのサンプルコードを
確認することができます。
手順書
72
“Test” をクリックします。
このボタンから、テスト用の API を実際に利用するこ
とができます。
手順書
73
“USERID” を 1 と入力します。
右下のボタンをクリックします。
Test 用の API が実際にリクエストされます。
手順書
74
一定時間待機した後、結果が表示されます。
JSON 形式でデータが返ってきていることを確認します。
手順書後半でこの Web ページへ戻ってくるので、
ブラウザ上でこのページを閉じないでください。
(新しいページは新規タブで表示し...
この手順書を通して開発するもの
75
ユーザーへ映画を推薦するシステムを作成します
Azure Machine Learning
1. Azure Machine Learning へ
推薦システムのテンプレートを
インポートする 2. イン...
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
77
1. ブラウザで以下のページへアクセスします
https://manage.windowsazure.com
※ ML Studio の画面は後ほど参照するため、
この画面は別タブで表示させてください。
3. [+ 新規] をクリ...
手順書
78
2. URLを入力します。
(ユニークなURLとなる必要があります。)
1. [コンピューティング]-[WEBアプリ]-
[簡易作成]
の順にクリックします。
3. “新しい App Service プランの作成”
を選択します。...
手順書
79
しばらくすると、
Web アプリの作成が完了します
実際にブラウザから動作を見てみましょう
[参照] をクリックします。
手順書
80
新しいタブが開き、
左図のような画面が表示されたら、
Web アプリは正常に動作しています。
このセクションの手順は完了です。
このままではただの綺麗なページなので、
Azure ML で公開した API へアクセスするための
プ...
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
82
Azure ML の API へアクセスするために「、
これから作成済みのサンプルアプリケーションを
GitHub からインポートします
GitHub はオンラインのソースコード置き場です。
この矢印をクリックします。
手順書
83
ソースコードをインポートするために、
[ソース管理からのデプロイの設定] を
クリックします。
左図のようなページが表示されます。
手順書
84
画面を下にスクロースし、
[外部レポジトリ] を選択します。
この矢印をクリックします。
[ソース コードの位置]画面が表示されます。
手順書
85
ここをクリックします。
[発行の設定]画面が表示されます。
[レポジトリのURL]に下記URL を入力します。
入力間違えに気を付けてください。
https://github.com/NT-D/AzureML_Recommend_...
手順書
86
左のような画面が表示されます。
30秒ほど経過すると次の画面に遷移します。
手順書
87
左のような画面が表示されればインポートは完了です。
実際にブラウザから動作を見てみましょう
[参照] をクリックします。
手順書
88
左のような画面が表示されます。
先ほどの手順で表示した
青いWebページが表示される場合があります。
その場合には [F5] キーなどを何度か押し、
画面を読み込みなおしてください。
この部分を使うと Azure ML の API...
手順書
89
Azure の管理画面に戻ります。
[構成]をクリックします。
手順書
90
[構成]画面が表示されます。
手順書
91
画面を下にスクロールし、
[アプリケーション設定]の箇所を確認します。
私の作成したサンプルアプリは、
ここに入力された値を使用します。
API の URL や Key など、
Web サイトを訪問したユーザーから隠したい情報
を...
手順書
92
左側の[キー]の部分に以下 2 つの値を入れます。
アプリ内でも “apiUrl”,”apiKey” という名前で識別するようにしています。
• apiUrl
• apiKey
大文字・小文字の違いに気を付けてください。
次に、A...
手順書
93
ここに API key が表示されるので、
コピーします。
※ 私の API key は隠しています。
Azure ML の API ページを表示します。
手順書
94
apiKey の値に、
コピーしてきた文字列を貼り付けます。
次に URL にも同じ操作を行います。
※大切な情報なので資料では塗りつぶしています。
手順書
95
Azure ML の API ページを表示します。
[REQUEST/RESPONSE]をクリックします。
手順書
96
API の詳細な解説ページが表示されます。
ここに書かれている URL をコピーします。
※大切な情報なので資料では塗りつぶして
います。
手順書
97
apiUrl の値に、コピーしてきた文字列を貼り付けます。
※大切な情報なので資料では塗りつぶしています。
手順書
98
[保存]ボタンをクリックして設定を保存します。
これで Azure ML の API を正常に呼び出せるよう
になりました。
このままでも動作するのですが、
みなさんの Web サイトが多くの人にアクセス
されたときに活躍する A...
手順書
99
画面を上にスクロールし、
この画面を表示させます。
[スケール]をクリックします。
手順書
100
[スケール]画面が表示されます。
この画面では Web アプリのパワーや台数を
簡単に変更できます。
[STANDARD]をクリックします。
手順書
101
左のように画面が変わります。
この部分を変更していきます。
手順書
102
試しに、インスタンスサイズを “Large”
に変更してみましょう。
また、インスタンス数を “2”
に変更してみましょう。
[保存] ボタンをクリックします。
たったこれだけの操作で、
Web アプリのパワーと数を増やせました。
手順書の流れ
1. ML Studio へ推薦システムのExperimentをインポートする手順の解説
2. インポート後の Experiment の解説
3. Web API の公開方法の解説
3-1. 学習したモデルの保存
3-2. Web...
手順書
104
[参照] をクリックし、Web アプリを表示させます。
手順書
105
この部分を操作していきます。
左の画面が表示されます。
手順書
106
上図のようにテキストボックスに任意のユーザーID を入力後、
[ML API 呼び出し] ボタンをクリックすると、
下図のようにユーザーにお勧めの映画が表示されます。
※ 時間がかかることもあります。
※今回は 14887 のユ...
手順書
手順は以上で終了です。
お疲れ様でした!!
107
参考資料
• Azure ML のチュートリアルやビデオが紹介されているページがこちら
まずは勉強してみたいという方はご活用ください。
https://studio.azureml.net/
• 推薦システム以外にも様々なシステムをインポートで...
Upcoming SlideShare
Loading in …5
×

推薦システムを構築する手順書 with Azure Machine Learning

18,101 views

Published on

この手順書は、推薦システムを構築する方法を解説しています。
手順書を通して下記のような要素技術の基礎も学べます。
・Azure Machine Learning
・Azure Web Apps

Published in: Data & Analytics
  • Be the first to comment

推薦システムを構築する手順書 with Azure Machine Learning

  1. 1. Azure Machine Learning による 推薦システム構築手順書 1 日本マイクロソフト テクニカルエバンジェリスト 大田 昌幸 : @masota0517 江田 周平 : @shumach5 安藤 祐貴 : @ycnyuki 清水 磨 : @shimi016
  2. 2. 本手順書の目的・前提条件 本手順を実施して得られること Azure Machine Learning 上で、推薦システムを構築する方法を学べる 本手順で扱うモデル 各ユーザーの映画の嗜好を学習しユーザーが興味を持ちそうな映画を推薦する 参考資料 手順書内のパラメタなど詳細な解説はこちらをご参照ください (英語) http://gallery.azureml.net/Details/3a02931f94114f47b4512dd9179b515e 参考資料2 Azure Machine Learning の基礎的な使用方法、数値予測をするための手順が このスライド(http://www.slideshare.net/masayuki1986/azure-ml-46562993)で学べます 前提条件 Microsoft Azure のサブスクリプションが必要になりますので、無料評価版をご活用ください http://azure.microsoft.com/ja-jp/pricing/free-trial/ 2
  3. 3. この手順書を通して開発するもの 3 ユーザーへ映画を推薦するシステムを作成します Azure Machine Learning 1. Azure Machine Learning へ 推薦システムのテンプレートを インポートする 2. インポートした Experiment の解説 3. Web API の公開 4. Web アプリの開発と Web API の呼び出し
  4. 4. この手順書を通して開発するもの 4 ユーザーへ映画を推薦するシステムを作成します Web アプリ完成イメージ ユーザー ID に応じて おすすめの映画を最大 5 つ提示します
  5. 5. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 5
  6. 6. この手順書を通して開発するもの 6 ユーザーへ映画を推薦するシステムを作成します Azure Machine Learning 1. Azure Machine Learning へ 推薦システムのテンプレートを インポートする 2. インポートした Experiment の解説 3. Web API の公開 4. Web アプリの開発と Web API の呼び出し
  7. 7. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 7
  8. 8. 手順書 8 1. ブラウザで以下のページへアクセスします https://manage.windowsazure.com 3. [+ 新規] をクリックします 2. 左のような画面が表示されます
  9. 9. 手順書 9 2. ワークスペース名を入力します。 (ユニークな名前となる必要があります。) 1. [データ サービス]-[MACHINE LEARNING]- [簡易作成] の順にクリックします。 3. データ保存領域であるストレージに 任意のアカウント名を設定します。 (ユニークな名前となる必要があります。) 9
  10. 10. 手順書 10 しばらくすると、 ワークスペースの作成が完了します ワークスペースの作成が完了し、 Azure ML を使用する準備が整いました。
  11. 11. 手順書 11 先ほど作成したワークスペースの 名前の横にある [→] をクリックします。
  12. 12. 手順書 12 [ML Studio にサインイン] をクリックします。
  13. 13. 手順書 13 しばらくすると、 ML Studio の画面が表示されます。 ML Studio へのサイン インが完了し、 ソリューションを開発する準備が整いました。
  14. 14. 手順書 14 ML Studio 上で、[+ New] をクリックします。
  15. 15. 手順書 15 検索ボックスで “movie recommendation” を検索します。 “Recommender: Movie recommendation” が表示されます。
  16. 16. 手順書 16 “OPEN IN STUDIO” をクリックします。
  17. 17. 手順書 17 モデルが展開されたことを確認します。 作成されたモデルは該当の箇所のモジュールが 重なって表示されます。 図のように重ならないように適宜モジュールを ドラッグし配置します。
  18. 18. 手順書 18 [RUN] をクリックします。 作成したモデルで学習が始まります。 実はこのままで推薦モデルを使用できるのですが、 今後応用するために各モジュールの解説を行います
  19. 19. この手順書を通して開発するもの 19 ユーザーへ映画を推薦するシステムを作成します Azure Machine Learning 1. Azure Machine Learning へ 推薦システムのテンプレートを インポートする 2. インポートした Experiment の解説 3. Web API の公開 4. Web アプリの開発と Web API の呼び出し
  20. 20. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 20
  21. 21. このテンプレートの概要 21 推薦のために使用するデータ モデルの訓練 今回は Matchbox というモジュールを使用します。 このモジュールは “2 つのアイテム”,”そのアイテ ム間の関係”という 3 つの学習データが必要です。 今回は “人”,”映画”,”人から映画への評価”という データを使用し、映画の推薦をします。 データの用意・編集は上記を想定して行います。 データの編集 結果の出力・評価
  22. 22. 各モジュールで実施していること 22 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  23. 23. データのインポート 23 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  24. 24. 解説 24 “Movie ID”、”Movie Name” の列からなる データセットです。 (実体は、CSV ファイルです。)
  25. 25. データのインポート 25 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  26. 26. 解説 26 “UserId”、”MovieId”、”Rating”、 “TimeStamp” の列からなるデータセットです。 (実体は CSV ファイルです。)
  27. 27. 解説 27 ”Launch column selector” から “Rating” を選択します。 このモジュールではデータの列の型を変更します。 “Rating “の型が、Numeric 型になっていますので、 プロパティ画面のとおり設定し、 Integer 型に変換します。 (後述する “Matchbox” モジュールでは、 Numeric 型を扱えないため、 本処理を行っています。)
  28. 28. データのクレンジング 28 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  29. 29. 解説 29 “Movie Ratings” と “IMDB Movie Titles” の データセットを Join します。 Join の際は、画面右の Properties ペインの通り、 Inner Join を実施します。 Join の際 ”Launch column selector” から “MovieId” を選択します。 ”Launch column selector” から “MovieID” を選択します。 ”Join type” から “Inner Join” を選択します。
  30. 30. 解説 30 Join したデータの中から 使用する列を選択します。 ”Launch column selector” から “UserId”、”Movie Name”、”Rating” の列を選択します。
  31. 31. 解説 31 データセットから重複する行を削除します。 ”Launch column selector” で、 ”UserId”、”Movie Name” を設定します。 ”UserId” と ”Movie Name” が重複している行 の一方が削除されます。 あるユーザーが同じ映画に複数回評価をしている という状況を回避できます。
  32. 32. 学習用データ/評価用データの分割 32 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  33. 33. 解説 33 “Fraction of training-onl…” を 0.75、”Fraction of test user rati...” を 0.25 に設定します。 75 % のデータがトレーニング用データとして左の ポートから出力され、25% が検証用データとして右 側のポートから出力されます。 加工したデータセットの うち、トレーニングの用 データと検証用データをそれぞれ左右の ポートから出力します。
  34. 34. 解説 34 ここをクリックして、[Visualize] をクリックします。 後ほど推薦された情報と比較するために、 どのユーザーがどのような映画を評価しているかを 確認してみましょう。 14887というユーザーは One Flew Over the Cuckoos Nest という映画を高く評価しています。 この映画をWebで検索し、 どのような動画か調べてみましょう。
  35. 35. モデルの訓練 35 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  36. 36. 解説 36 “Matchbox” というアルゴリズムを使用します。 “Mathbox”はAzure ML の提供する 推薦システム用のアルゴリズムです。 左の入力ポートから訓練データを入力し、学習させます。 “Number of traits” の数を 20 と設定します。 Traits : アルゴリズム内で利用する変数の数。 “Number of recommendation Iteration” の数を 10 と設定します。 Iteration : アルゴリズム内で処理を繰り返す回数。
  37. 37. モデルの評価 37 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  38. 38. 解説 38 学習させた Matchbox モジュールを使用します。 学習させた “Matchbox” モジュールと データセットを入力とします。 ”Rating Prediction” を選択することで 各ユーザーの任意の映画に対する “Rating” の予測値を出力します。 過去のデータから 「映画がどのくらいの評価を受けそうか」 を予測する際に活用します。
  39. 39. 解説 39 実データとレコメンドデータを基に MAE 値(絶対平均誤差)、RMSE 値 (平均二乗誤差) を求めます。 左図に示した赤丸の箇所をクリックし、 ”Visualize” をクリックすることで MAE 値、RMSE 値 の実際の結果を確認できます。
  40. 40. モデルの評価 40 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  41. 41. 解説 41 学習させた Matchbox のモジュールを使用します。 “Matchbox” モジュールとデータセットを入力としま す。 “From Rated Items for model” を選択することで ランク付けされた映画からのみ推薦します。 “Item Recommendation” を選択することで各ユー ザーへ、推薦すべき映画を予測します。 推薦する映画数の最大値を選択します。 ここでは 5 つとします。 推薦する映画数の最小値を選択します。 ここでは 2 とします。
  42. 42. 解説 42 NDCG 値を求めます。 (1 に近づくほど精度の高いモジュールが作成できて いることになります。) 左図の赤丸の箇所をクリックし、 ”Visualize” をクリックすることで NDCG 値 の実際の結果を確認できます。
  43. 43. データのクレンジング 43 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  44. 44. 解説 44 データセットの中で重複している行を削除します。 ”Launch column selector” で、 ”UserId” を設定します。 ”UserId” が重複している場合一方を削除します。
  45. 45. 解説 45 データの量 (行数) を制限します。 “Partition or sample mode” を “Head” に、 ”Number of rows to select” を 100 と設定します。 入力されたデータの頭から 100 行を取得します。
  46. 46. 解説 46 入力されたデータセットのうち、 必要な列のみ保持します。 ”Launch column selector” で、 ”UserId” のみ指定します。 ”UserId” 列のみのデータセットが作成されます。
  47. 47. モデルの評価 47 ユーザーの各映画に対する 評価データのインポート 学習用データ/評価用データを 分割する (例: 75% : 25%) モデルの訓練 (学習アルゴリズムの訓練) データのクレンジング (不要・不正なデータの削除) モデルの評価1 ユーザーの好みの推測 映画のデータのインポート モデルの評価2 アルゴリズムの評価 モデルの評価3 オススメの映画の提示 データのクレンジング (不要・不正なデータの削除)
  48. 48. 解説 48 学習させた Matchbox のモジュールを使用します。 “Matchbox” モジュールとデータセットを入力としま す。 “Item Recommendation” を選択します。 各ユーザーに推薦すべき映画を予測します。 “From All Items” を選択します。 全映画のデータから、推薦する映画を決定します。 *スライド 81 で同じモジュールを使用しています が、 81 では “From Rated Items for model” が設定 されており、評価された映画からのみ推薦する 映画を決定しています。 各ユーザーに対して、推薦する映画数の 最大値を選択します。 ここでは、最大 3 つとします。
  49. 49. 解説 49 左図の赤丸の箇所をクリックし、 ”Visualize” をクリックすることで 各ユーザーへ推薦すべき映画の 結果を確認できます。
  50. 50. 解説 50 User ID, 1番推薦したいアイテム, 2 番目に推薦したいアイテム…, という順序でデータが表示されます。
  51. 51. この手順書を通して開発するもの 51 ユーザーへ映画を推薦するシステムを作成します Azure Machine Learning 1. Azure Machine Learning へ 推薦システムのテンプレートを インポートする 2. インポートした Experiment の解説 3. Web API の公開 4. Web アプリの開発と Web API の呼び出し
  52. 52. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 52
  53. 53. 手順書 Web API で活用するために、 学習済みの “Matchbox” を保存します。 左図に示した赤丸の箇所をクリックします。 “Save as Trained Model”をクリックします。
  54. 54. 手順 54 モジュールを任意の名前で保存します。 ここでは仮に ”Sample movie Recommender” と入力します。 右下のボタンをクリックし、モジュールを保存しま す。
  55. 55. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 55
  56. 56. 手順書 56 ML Studio 上で、[+ New] をクリックします。
  57. 57. 手順書 57 “Blank Experiment” を選択します。 新規 Experiment が作製されます。
  58. 58. 手順書 58 画面左の検索ボックスに “Sample Movie Recommender” と入力し、モジュールを検索します。
  59. 59. 手順書 59 検索結果で表示された “Sample Movie Recommender” を画面中央のスペースにドラッグ & ドロップします。 これ以降の手順でも、”検索 + ドラッグ&ドロップ”を 組み合わせて捜査を行います。
  60. 60. 手順書 60 “Movie Ratings” のデータセットを ドラッグ & ドロップします。
  61. 61. 手順書 61 1. “Remove Duplicate Rows“ モジュールを ドラッグ & ドロップで配置します。 “Movie Ratings”データセットと接続します。 2. [Launch column selector] をクリックします。
  62. 62. 手順書 62 2. 左図のように設定を行います。 この設定を行うことで、 ”UserId” が重複しているデータがある場合 一方のデータを削除します。 1. [Select columns] 画面が表示されます。 画面左の [WITH RULES]をクリックします。
  63. 63. 手順書 63 2. “Partition or sample mode” を “Head” に、 ”Number of rows to select” を 100 と設定します。 入力されたデータの先頭から 100 行を取得します。 1. “Partition and Sample” のモジュールを ドラッグ & ドロップし、 “Remove Duplicate Rows” モジュールと接続します。
  64. 64. 手順書 64 1.“Select Columns in Dataset” のモジュールを ドラッグ & ドロップします。 “Partition and Sample” モジュールと接続します。 2.”Launch column selector” で、 ”UserId” を設定します。 ”UserId”の列のみ保持します。
  65. 65. 手順 65 1. “Score Matchbox Recommender” のモジュールを ドラッグ & ドロップします。 “Sample Movie Recommender” 、“Select Columns in Dataset” モジュールと接続します。 3. “From All Items” を選択します。 全映画のデータから 推薦すべきの映画を決定します。 4.各ユーザーに対して、推薦する映画数の 最大値を選択します。 ここでは、最大 5 つとします。 2.“Item Recommendation” を選択します。 各ユーザーに推薦すべき映画を予測します。
  66. 66. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 66
  67. 67. 手順書 67 “Web service input” のモジュールを ドラッグ & ドロップします。 “Score Matchbox Recommender” と 接続します。 “Web Service output”のモジュールを ドラッグ & ドロップします。 “Score Matchbox Recommender” と 接続します。
  68. 68. 手順書 68 [Run]-[Run] をクリックします。 適切に Experiment が構築されている場合 “Deploy WEB SERVICE” のボタンが クリックできるようになります。
  69. 69. 手順書 69 [DEPLOY WEB SERVICE]-[Deploy Web Service [Classic]] を クリックします。
  70. 70. 手順 70 左図のような画面が表示されていることを確認します。
  71. 71. 手順書 71 “REQUEST/RESPONSE” をクリックします。 API の詳細・APIを操作するためのサンプルコードを 確認することができます。
  72. 72. 手順書 72 “Test” をクリックします。 このボタンから、テスト用の API を実際に利用するこ とができます。
  73. 73. 手順書 73 “USERID” を 1 と入力します。 右下のボタンをクリックします。 Test 用の API が実際にリクエストされます。
  74. 74. 手順書 74 一定時間待機した後、結果が表示されます。 JSON 形式でデータが返ってきていることを確認します。 手順書後半でこの Web ページへ戻ってくるので、 ブラウザ上でこのページを閉じないでください。 (新しいページは新規タブで表示してください。)
  75. 75. この手順書を通して開発するもの 75 ユーザーへ映画を推薦するシステムを作成します Azure Machine Learning 1. Azure Machine Learning へ 推薦システムのテンプレートを インポートする 2. インポートした Experiment の解説 3. Web API の公開 4. Web アプリの開発と Web API の呼び出し
  76. 76. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Web アプリの作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 76
  77. 77. 手順書 77 1. ブラウザで以下のページへアクセスします https://manage.windowsazure.com ※ ML Studio の画面は後ほど参照するため、 この画面は別タブで表示させてください。 3. [+ 新規] をクリックします 2. 左のような画面が表示されます
  78. 78. 手順書 78 2. URLを入力します。 (ユニークなURLとなる必要があります。) 1. [コンピューティング]-[WEBアプリ]- [簡易作成] の順にクリックします。 3. “新しい App Service プランの作成” を選択します。 5. WEBアプリの作成をクリックします。 4. “日本(西)” を選択します。
  79. 79. 手順書 79 しばらくすると、 Web アプリの作成が完了します 実際にブラウザから動作を見てみましょう [参照] をクリックします。
  80. 80. 手順書 80 新しいタブが開き、 左図のような画面が表示されたら、 Web アプリは正常に動作しています。 このセクションの手順は完了です。 このままではただの綺麗なページなので、 Azure ML で公開した API へアクセスするための プログラムをこの Webアプリへ展開していきます。
  81. 81. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 81
  82. 82. 手順書 82 Azure ML の API へアクセスするために「、 これから作成済みのサンプルアプリケーションを GitHub からインポートします GitHub はオンラインのソースコード置き場です。 この矢印をクリックします。
  83. 83. 手順書 83 ソースコードをインポートするために、 [ソース管理からのデプロイの設定] を クリックします。 左図のようなページが表示されます。
  84. 84. 手順書 84 画面を下にスクロースし、 [外部レポジトリ] を選択します。 この矢印をクリックします。 [ソース コードの位置]画面が表示されます。
  85. 85. 手順書 85 ここをクリックします。 [発行の設定]画面が表示されます。 [レポジトリのURL]に下記URL を入力します。 入力間違えに気を付けてください。 https://github.com/NT-D/AzureML_Recommend_Sample
  86. 86. 手順書 86 左のような画面が表示されます。 30秒ほど経過すると次の画面に遷移します。
  87. 87. 手順書 87 左のような画面が表示されればインポートは完了です。 実際にブラウザから動作を見てみましょう [参照] をクリックします。
  88. 88. 手順書 88 左のような画面が表示されます。 先ほどの手順で表示した 青いWebページが表示される場合があります。 その場合には [F5] キーなどを何度か押し、 画面を読み込みなおしてください。 この部分を使うと Azure ML の API を呼び出せますが、 今のままでは動きません。 Azure ML API の URL, Key は人によって異なるので、 それを指定してあげる必要があるためです。 これから、それぞれの URL, Key を設定していきます。
  89. 89. 手順書 89 Azure の管理画面に戻ります。 [構成]をクリックします。
  90. 90. 手順書 90 [構成]画面が表示されます。
  91. 91. 手順書 91 画面を下にスクロールし、 [アプリケーション設定]の箇所を確認します。 私の作成したサンプルアプリは、 ここに入力された値を使用します。 API の URL や Key など、 Web サイトを訪問したユーザーから隠したい情報 を記載する際に [アプリケーション設定] は便利 なので、今後活用してみてください。
  92. 92. 手順書 92 左側の[キー]の部分に以下 2 つの値を入れます。 アプリ内でも “apiUrl”,”apiKey” という名前で識別するようにしています。 • apiUrl • apiKey 大文字・小文字の違いに気を付けてください。 次に、Azure ML API の url, key を確認します。
  93. 93. 手順書 93 ここに API key が表示されるので、 コピーします。 ※ 私の API key は隠しています。 Azure ML の API ページを表示します。
  94. 94. 手順書 94 apiKey の値に、 コピーしてきた文字列を貼り付けます。 次に URL にも同じ操作を行います。 ※大切な情報なので資料では塗りつぶしています。
  95. 95. 手順書 95 Azure ML の API ページを表示します。 [REQUEST/RESPONSE]をクリックします。
  96. 96. 手順書 96 API の詳細な解説ページが表示されます。 ここに書かれている URL をコピーします。 ※大切な情報なので資料では塗りつぶして います。
  97. 97. 手順書 97 apiUrl の値に、コピーしてきた文字列を貼り付けます。 ※大切な情報なので資料では塗りつぶしています。
  98. 98. 手順書 98 [保存]ボタンをクリックして設定を保存します。 これで Azure ML の API を正常に呼び出せるよう になりました。 このままでも動作するのですが、 みなさんの Web サイトが多くの人にアクセス されたときに活躍する Azure の機能を学びます。
  99. 99. 手順書 99 画面を上にスクロールし、 この画面を表示させます。 [スケール]をクリックします。
  100. 100. 手順書 100 [スケール]画面が表示されます。 この画面では Web アプリのパワーや台数を 簡単に変更できます。 [STANDARD]をクリックします。
  101. 101. 手順書 101 左のように画面が変わります。 この部分を変更していきます。
  102. 102. 手順書 102 試しに、インスタンスサイズを “Large” に変更してみましょう。 また、インスタンス数を “2” に変更してみましょう。 [保存] ボタンをクリックします。 たったこれだけの操作で、 Web アプリのパワーと数を増やせました。
  103. 103. 手順書の流れ 1. ML Studio へ推薦システムのExperimentをインポートする手順の解説 2. インポート後の Experiment の解説 3. Web API の公開方法の解説 3-1. 学習したモデルの保存 3-2. Web API 公開用の Experiment の作成 3-3. API として公開 4. Web アプリケーションからの API 呼び出し 4-1. Azure Web Apps の作成 4-2. GitHub からアプリケーションのインポート・Web Apps 設定 4-3. アプリケーションから API 呼び出し 103
  104. 104. 手順書 104 [参照] をクリックし、Web アプリを表示させます。
  105. 105. 手順書 105 この部分を操作していきます。 左の画面が表示されます。
  106. 106. 手順書 106 上図のようにテキストボックスに任意のユーザーID を入力後、 [ML API 呼び出し] ボタンをクリックすると、 下図のようにユーザーにお勧めの映画が表示されます。 ※ 時間がかかることもあります。 ※今回は 14887 のユーザーで試しました。 The Shawshank Redemption とはどのような映画かを Web で調べ、 このユーザーが高く評価していた One Flew Over the Cuckoos Nest と比較し てみてください。
  107. 107. 手順書 手順は以上で終了です。 お疲れ様でした!! 107
  108. 108. 参考資料 • Azure ML のチュートリアルやビデオが紹介されているページがこちら まずは勉強してみたいという方はご活用ください。 https://studio.azureml.net/ • 推薦システム以外にも様々なシステムをインポートできます。 もっと触ってみたいという方はご活用ください。 http://gallery.azureml.net/ 108

×