Help us understand the problem. What is going on with this article?

Azure AutoML ハンズオン -Azureアカウント作成からモデル構築・予測・解釈・出力まで-

はじめに

2020/01/24に日本マイクロソフト本社(品川)で開催されたAutoML ハンズオンにブログ執筆枠で参加しました。
以下、Azureアカウント作成からAutoMLによるモデル構築・推論・解釈までを解説します。
上記connpassのページにハンズオン資料が掲載されていますので、そちらを見ていただくと当日の流れがわかるかと思います。

ちなみに私は普段RやPythonを使って社内データの分析をしています。
今までDatarobotを少し触ったことがある程度で、Auto MLを使い慣れてはいません。
Azureもなんとなくわかる程度で、業務でがっつり使っていますという状態でもありません。
仕事で今後Azureを使っていくようになりそうなので、AzureのAuto MLはどんなもんや、と思いハンズオンに参加しました。

資料など

ハンズオン資料
サンプルコード
(参考)Microsoft機械学習テクノロジー一覧

Azure MLについて

Auto MLという用語自体はAzureに限った話ではなく、広い意味ではベイズ最適化のようなパラメータチューニング自動化のことも指すようです。
マイクロソフトのAuto MLには下図のようなものがあります。
02_automl.png
ここでは一番上の「自動機械学習Automated Machine Learning」を扱います。
こちらは現在、表形式のデータにのみ対応しているそうです。

また、機械学習モデルを作成するだけでなく、SHAPに代表されるような「作成したモデルの解釈」をサポートするライブラリもあり、Azure MLと連携することが可能です。
今流行っている「説明可能なAI(XAI)」と呼ばれる領域ですね。
03_shap.png

XAIについてはRのimlで複雑なモデルの予測結果を簡潔に説明する -eXplainable AI, XAI-でも解説していますのでもしよければ参考にしていただければと思います。

準備

アカウント作成

Azureのお試しライセンスを無料で作成することができます。
こちらからアカウントを作成することができます。
クレジットカード情報が必要ですがアップグレードしない限り課金されることはなく、1年間有効なクレジット22, 500円分が付いてきます。

ノートブックVMを作るまで

こちらのチュートリアルに沿ってノートブックVMを作成することができます。
VMの作成には5~10分程度かかることがあるので少し待ちます。
ここまでできれば一旦準備完了です。

トレーニングクラスターを作成

下記画像のように、「トレーニングクラスター」タブから「新規作成」をクリックしてクラスターを作成します。
01_cluster.png

リポジトリのクローン&conda導入

こちらの手順に沿って、githubからリポジトリをクローンしてきます。
3. の手順の前に

cd Automated-ML-Workshop

をする必要があるので注意が必要です。
また、NotebookVMを使用するので5. の手順は今回は不要です。
05_setting1.png
05_setting2.png
05_setting3.png

Auto ML データ読み込み、学習

GUI

画面左の「自動ML」からデータセットのアップロード、学習ができます。
06_automl1.png
06_automl2.png
06_automl3.png

最後に「終了」を押すと、学習が始まります。

Jupyter Notebook

Jupyter Notebookを利用すると、GUIよりも細かい調整ができます。
本ハンズオン用にサンプルが用意されていますので、こちらを実行します。
Jupyter Notebookですので、Pythonで色々チューニングしたりすることができます。
07_contents.png

例えば、Automobile-regression-explainer-remoteのNotebookを実行していくと、以下のような学習結果が表示されます。
下記の図は、学習の各段階でどのように誤差が減っていっているかを表しています。
06_automl6.png

また、Azure上でJupyter Notebookを起動すると従量課金で費用が発生するのですが、ローカルでJupyter Notebookを起動してAzure上のモジュールを呼び出すようにすると、その分の費用を節約することができます。
(トラフィックやストレージ使用料などはかかります)

学習結果の確認

データ読み込みや学習を行うのはGUIでもJupyterでも良いのですが、学習が終わるとGUIから下記のような画面で実行結果を確認することができます。
10_guiresult1.png
10_guiresult2.png
10_guiresult3.png
「データガードレール」タブではクロスバリデーションの詳細や、不均衡データの検出や欠損値の処理結果など、データの特性について記載されています。
多くの場合は読み込ませるデータはサンプルのようにきれいなデータではないと思いますので、必ずチェックするべき欄かなと思います。

また、「詳細」タブから「モデルの詳細の表示」を確認することでもう少し深堀することができます。
今回は分類問題なので、Precision-RecallやROIなどを確認することができます。
Pythonで自力でこれくらいの量のグラフを書こうと思うとひと手間かかりますが、
このレベルのグラフを自動で作ってくれるのはありがたいですね。
10_guiresult4.png

モデル解釈

今回はAutomobile-regression-explainer-remoteのNotebookを実行した際のモデル解釈を見ていきます。
ワークブックを実行していくと、3. モデル解釈というところにダッシュボードが表示されます。
ここに色々な視点からモデル解釈をした結果が表示されます。
例えば、Global Importanceを選択すると、モデル全体を線形近似したときの特徴量(Tree Surrogateと呼ばれたりするやつです)の重要度が棒グラフで表示されます。
08_interprit1.png

また、Explanation ExplorationからLocal Feature Importanceを選択すると、個々の予測結果に対してどの特徴量が効いているのかを見ることができます。
ダッシュボード上の予測値をクリックすると対応する特徴量グラフが表示されるのでかなり使いやすいですね。
Jupyter NotebookではGlobal ImportanceもLocal Importanceも表示させることができるのですが、GUIから表示させることができるのは現状Global Importanceのみのようです。
(Local ImportanceのGUI上での表示は今後開発予定らしいです)
GUIからGlobal Importanceを表示させる際もデフォルトで表示できるのはベストスコアのモデルのみで、その他のモデルのGlobal Importanceを表示させる際にはモデルを指定して表示⇒数分待つ必要があります。
08_interprit2.png
08_interprit3.png

モデル解釈の理論的な解説はgithub上にリンクのあるInterpretable Machine Learningに詳しく記載されています。
09_interpret.png

モデルエクスポート

作成したモデルは、pythonに読み込ませることができる形式(.py, .pkl)で出力することができます。
多くの場合はAuto MLで学習したモデルをそのまま使うというよりは、モデル構築のベースとしてAuto MLを使いたいのではないかと思います。
これをローカルのPythonで読み込ませればAutoMLの学習結果をベースに手作りでモデルを作成することができます。
10_guiresult5.png

まとめ

Azure MLでの学習・推論・解釈がGUIやJupyterNotebook経由で簡単に実行・確認できました。
初めはAzure独自の構成・用語には戸惑う面もありましたが、これは慣れの問題かなと思います。
今回は他製品との比較や自分でイチから作ったモデルなどとAzure MLを比較したりはしていないのでAzure MLの予測精度がどのくらいであるかまでは確認できていないのですが、
さっと分析してみたいといったレベルではとても有効な選択肢なのではないかと思います。

gnbrganchan
東京で働くデータサイエンティストです。趣味で競技プログラミングもしています。
https://lapras.com/public/7NUY70Y
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした