3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Machine Learning Studio の AutoML GUIでの展開時に、probability の数値も出力させる

Last updated at Posted at 2020-10-05

編集履歴

  • 2020/10/14 [4. 推論用のコードの更新]: プログラムコードの更新
  • 2020/10/12 [4. 推論用のコードの更新]: プログラムコードの更新
  • 2020/10/6 [4. 推論用のコードの更新]: プログラムコードの更新

背景

Azure Machine Learning の AutoML は、Studioの画面上からジョブ実行と結果確認。そして、ACIもしくはAKSへの展開まで、GUIで行えます。ML for All Skillのゴールに向かってGUIでの作業も出来る事は素晴らしいと思います。

AutoMLには推論用のコードを自動生成する機能もありますので、更に便利です。

(プレビュー) コードなしのモデル デプロイ:
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-no-code-deployment

ところが、この展開したモデルの推論結果に、いわゆる Probability、もしくはscore とでも言いましょうか。つまり数値での確度の情報が入っていません。

分類 (Classification) での出力結果のサンプル

'{"result": "no", "score": [{"no":0.9452897547,"yes":0.0547102403}]}'

このモデルは以下のチュートリアルで作成しました。

チュートリアル:Azure Machine Learning の自動 ML で分類モデルを作成する:
https://docs.microsoft.com/ja-jp/azure/machine-learning/tutorial-first-experiment-automated-ml

ここでは、カスタムデプロイ アセットを使って、Probability も出力するようにします。

準備するもの

  • Azure のSubscription

手順

1. モデルの作成

自由に作成ください。
ここでは、先のチュートリアル (銀行のマーケティング担当者が、普通預金などから、定期預金にする顧客を類推するモデルを作成する) にある AutoML を利用してモデルを作成します。

2. モデルの選択

AutoMLでは、複数の学習ジョブを実行します。一番良いと思ったモデルを選択します。
アンサンブル学習を行っている場合が殆どだと思います。その場合は、VotingEnsemble が殆どのケースで最も良い数値情報を持っています。

image.png

3. AutoML が生成したコードのダウンロード

[出力とログ]から、ジョブが生成したファイルの確認が出来ます。[outputs]フォルダの中から、以下のファイルをダウンロードします。

image.png

ファイル名 説明
conda_env_v_1_0_0.yml anaconda の環境ファイル
scoring_file_v_1_0_0.py 推論用のファイル

4. 推論用のコードの更新

run 関数を以下の様に変更します。
ご自由にリファクタリングしてください😊

def run(data):
    try:
        result_predict = model.predict(data)
        result_class_name = model.y_transformer.classes_
        result_predict_proba = model.predict_proba(data)

        result_with_score = pd.DataFrame(result_predict_proba, columns=result_class_name).to_json(orient='records')
        result = (("{\"result\": \"%s\", \"score\": %s}" % (result_predict[0],result_with_score)).encode('ascii', 'ignore')).decode("utf-8")

        return result

    except Exception as e:
        result = str(e)
        return json.dumps({"error": result})

少し解説します。

probabiltyの取得には、predict_proba() で行えます。
配列で結果が返ってきますが、その並び順が、model.y_transformer.classes_ の並び順になっています。

適切ではないかと思いますが、scikit learn のリファレンスの中での RandomDorestClaasifier のものを例示します。

5. モデルのACIへの展開

Azure Machine Learning Studio のモデルの画面に戻ります。[デプロイ]から以下の画面を参照して

[エントリ スクリプト ファイル]
[Conda 依存関係ファイル]

を設定します。

image.png

注: この設定では動作確認を優先しているため。推論のエンドポイントは何も保護されていません。必要に応じて保護の設定を行ってください。

認証の設定 - 画面で [認証を有効]

TLS を使用して Azure Machine Learning による Web サービスをセキュリティで保護する:
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-secure-web-service

仮想ネットワークを使用して Azure Machine Learning 推論環境をセキュリティで保護する:
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-secure-inferencing-vnet

これで [デプロイ] を押して、ACIへの展開が完了するまで5分程度待ちます。

6. 結果確認

モデルがACIに展開されると、推論用のURLが作成されます。それをクリップボードにコピーするなどします。

image.png

RESTの呼び出しは任意の手段で😊
ここでは、Visual Studio CodeのREST Clientを使います。

Rest Client
https://marketplace.visualstudio.com/items?itemName=humao.rest-client

image.png

7. 必要に応じてクリーンアップ

ACIは展開時から停止あるいは削除するまで課金対象です!

適時、停止するなり、削除するなりしてください😊

まとめ

現時点では画面だけで操作しても、出来ない事が多少はあります。が、少し手を加えるだけで、カスタマイズも可能です。
今後のAzure Machine Learning の機能強化にも期待しましょう😊

サンプルコード:
https://github.com/dahatake/Azure-Machine-Learning-sample/tree/master/6.AutoML-Probability

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?