Azure Auto MLをPythonからトレーニングさせてみる

はじめに

今回はこちらの「Set up Auto ML with Python」の記事を参考に、PythonからAzure Auto MLを使用したトレーニングをしてみます。

開発環境

  • OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
  • Visual Studio Code 1.73.1
  • Python 3.7

【Auto ML】Pythonからトレーニングをしてみる

前準備

まずは記事に載っているURLから学習データのダウンロードを行います。

automl-credit.png

image.png

カラム名はこのようなものがありますが、今回はClassの結果がFalseとTrueのどちらになるかを予測していきます。

実行

そしてAuto MLの記事を参考にこちらのコードを動かしていきます。

ワークスペースへの接続

まず、作成したワークスペースへ接続します。

ワークスペース名やサブスクリプションID、リソースグループはそれぞれAzureの右上のアカウント名をクリックすると取得できます。

automl-credit3.png

もしくは、同じ「構成ファイルをダウンロードする」でconfig.jsonをダウンロードしたら、同じプロジェクト直下において

これ1行で済ませることもできますが、今回はワークスペース名などを入れるやり方を採用しました。

コンピューティングクラスター

cluster_nameには「コンピューティング」タグで作成したコンピューティングクラスターの名前を入れます。
image.png
(作成方法は前の記事をご覧ください。)

データソース

冒頭で取得した学習データを相対パスで読み込み、labelでは予測対象となるカラム名を設定します。

しかし、このまま実行した際に

というエラーが出てきたので、

これで学習データをTablular型へ変換すると使えました。
データストア名は「データストア」タブのworkspaceblobstoreを入力。
無題.png

そして、パス名の設定ではBLOBコンテナーを開いてすぐの
無題.png

ここにcreditcard.csvを置きました。

設定

次に学習の設定を行います。

taskでは分類(classification)・回帰(regression)・時系列(forecasting)を選択することができます。
今回は2項分類タスクなので、classificationを選択。
iterationsでは学習アルゴリズムとパラメータの組数を設定できます。
primary_metricでは最適モデルを選ぶ際の指標を指定できます。
experiment_timeout_minutesは実験終了するまでの最大の時間(分)を指定できます。
今回は30分としました。
blocked_modelsは実験で無視する学習アルゴリズムを設定できます。
n_cross_validationsは交差検証の数を設定できます。
training_dataで学習データを指定し、label_column_nameには先ほど決めたターゲット列を設定します。

それぞれのパラメータのデフォルトと指定できるものをまとめるとこんな感じ。

パラメータ デフォルト・指定できるもの
task classification、regression、 forecasting から選択可
primary_metric accuracy、AUC_weighted、average_precision_score_weighted、norm_macro_recall、precision_score_weightedから選択可
指定しない場合は分類タスクでは精度が用いられる
experiment_timeout_hours 6日
n_cross_validations 20,000行以上:トレーニングの10%
1,000~20,000行:3個のフォールド
1,000行未満:10個のフォールド
label_column_name 列名もしくは列番(インデックス)を使用
test_size すべてトレーニングデータで学習
iterations 1000回
blocked_models AveragedPerceptronClassifier、BernoulliNB、DecisionTree、ExtraTrees、GradientBoosting、KNearestNeighborsClassifier、LightGBMClassifier、LinearSupportVectorMachine、LogisticRegression、MultinomialNB、RandomForest、SGDClassifier、SupportVectorMachine、TabNetClassifier、TensorFlowDNNClassifier、TensorFlowLinearClassifier、XGBoostClassifierから選択可

今回は上記のパラメーターで学習させましたが、もちろん他にも設定できます。AutoMLConfigのリファレンスについてはこちらから参照ください。

実行

Experimentクラスでワークスペースにある実験を取得し、実験を実行します。

実行されると

という表示がでてきます。
しかし、途中で

とパッケージのバージョンを適切なものにインストールしてくださいというエラーが出てきたので、

エラーで言われたものを全部まとめたファイルを作り、

これで一括でインストールしました。

これで再度実行すると、今度はうまくいきました^^
Azureに戻って確認してみると…

automl3.png

ちゃんとPythonから実行し、学習を進んだことを確認できました。

実行完了すると、
image.png

このようにモデルが作成され、一番結果が良いものは「説明の表示」で詳細を見ることができます。

image.png

まとめ

Azure Auto MLをPythonからトレーニングを実行してみました。途中、エラーで躓きまくりでしたが何とかできました…!今度Pythonから実行する際に出たエラーをまとめた記事を出そうと思います。

この記事を書いた人

azure-recipe-user