Azureで機械学習プロジェクトを行う流れをまとめておく

[toc]

はじめに

これまでAzureを利用したことないシステムエンジニア機械学習プロジェクト(教師あり学習)を試した際の流れを自身のためにまとめておきます。

ネタは、kaggleのTitanic: Machine Learning from Disasterを使います。

大きく以下の3点の処理をAzure上で実現するのが目的。

  • データの前処理とアルゴリズムを試す
  • 学習・パラメータチューニング
  • システムに組み込む(API化する)

準備

ワークスペースの作成

ポータルページから「Machine Learning Studio ワークスペース」を押す

「追加」を押し、以下のように項目を埋め、「作成」を押す ※よくわからない箇所は適当 ※無料プランにした

 

作成できたら「概要」->「Machine Learning Studioの起動」を押すとスタジオページに移動する。

データファイルのアップロード

学習用評価用などのデータをkaggleからローカルPCにダウンロードしておき、 左カラム「DATASETS」から、「NEW」を押しファイルをアップロードしておく。 ※S3のようなストレージに格納されているようだ。

 

ファイルアクセス用のスニペットを確認

また、適当なファイルを選択し、「GENERATE DATA ACCESS CODE」を押し後に使うノートブックからのアクセス用スニペット(python or R)を確認しておく。

以下が専用のライブラリのようだ。 https://github.com/Azure/Azure-MachineLearning-ClientLibrary-Python https://github.com/Azure/Azure-MachineLearning-ClientLibrary-R

データの前処理とアルゴリズムを試す

ノートブックを起動する

左カラム「NOTEBOOKS」から、「NEW」を押し 「Microsoft Samples」として、様々な種類のノートブックが選択できる。 今回は「Python3 Blank Notebook」を選んだ。 いつものjupyter notebooksが立ち上がるのでここでデータの前処理する。

あとは、学習に使うアルゴリズムを試していけばよい。

TIPS

datasetsからのノートブックへファイルの読み込み

:point_up:先程のスニペットを使う。

ノートブックからdatasetへのファイルの書き出し

import datetime
from azureml import Workspace
ws = Workspace(
workspace_id='xxxxxx',
authorization_token='xxxxx',
endpoint='xxxxx'
)
now = datetime.datetime.now()
dataset = ws.datasets.add_from_dataframe(
dataframe=df_predictions,
data_type_id='GenericCSV',
name='logistic_regression_submission_{0:%Y%m%d%H%M%s}.csv'.format(now),
description='output'
)
# 結果をデータセットに保存

予測結果をファイルに書き出したりする場合は、こんな感じ。 ファイル名が同一だとエラーになるので、日時つけて別名にしたほうがいいかも。

(疑問)「datasets」以外、「trained models」などにはノートブックからデータの読み書きはできない??

学習・パラメータチューニング

「Experiments」を使って GUIで前処理->モデル化->評価の流れの自動化を行う

左カラム「Experiments」から、「NEW」を押し:point_right: 「Blank Experiments」を選択する。 適当に名前をつける(今回は「Titanic survival predictor(2class decision forest)」とした) また、今回はTwo-Class Decision Forestアルゴリズムを使うことにする。

 

  • 左の「Experiments item」からのようにitemをDDして、コネクタでつなげる。
  • それぞれのitemを押して以下のパラメータを変更する
  • train.csv
  • 右クリで可視化できる
  • Select Columns in Dataset
  • 学習に必要な特徴量のカラムのみ選択する
  • Split Data
  • Fraction of rows in the first output datasetを0.8
  • Two-Class Decision Forest
  • Train Model
  • Selected columns:Survivedを選択
  • Score Model
  • (run後)右クリで可視化できる
  • Evaluate Model
  • (run後)右クリで可視化できる
  • 下部の「Run」を押すと処理が流れる。全部グリーンになればOKっぽい。
  • Score Model/Evaluate Modelの中を確認する

(疑問)ここで作成したワークフロー?はコード化できない??

モデルの作成

下部の「Set Up Web Service」 を押す:point_up:と 「Predictive Web Service」が2つあるので(Recomended)のほうを選択してみる。(:question:疑問:question:)

 

自動でワークフローが変更され、item「Web service input/output」が作られる。 今回は、:point_up:のようにコネクタを繋ぎ変えた。

下部の「RUN」を押すと、モデルの作成が始まり、OKだと 左カラム「trained models」にモデルができている。

システムに組み込む(API化)

また「Experiments」の画面:point_up:の下部「Deploy Web Service」を押す:point_right:と、(classic)と(New)がある、 今回は(new)を使ってみる。

すると、「Azure Machine Learning Web Services」なるページに飛ばされる。 先程作成したモデルがAPIの環境にデプロイされ、

 

モデルのテストや、swagger形式でwebサービスバッチ処理のエンドポイント公開されr、その設定やメトリックスの確認まで行えるようだ。

まとめ

  • ひと通りazure上での進め方を知った
  • azure上のサービスも現在進行中で開発中のようなので、都度できることできないこと確認しながら進めたい
  • (:question:疑問:question:)他にもノートブックサービスがあるようだけどどういう違いがあるんだろhttps://notebooks.azure.com/