3
5

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 1 year has passed since last update.

AzureのAIサービスを利用してみる3【AutoML】

Last updated at Posted at 2023-01-31

はじめに

近年では、自分でPythonのコードを書いてAIのモデル構築といった事は難しいけど、手軽にAIを利用したいといった場合に、ノンコードで簡単に機械学習のモデリングを自動化する技術であるAutoML(Automated Machine Learning)を利用する事ができるようになっています。

基本的には自動化といっても、データ収集からサービス提供まで全部自動化ということでは無く、利用するデータ(特徴量)の選択や、手法であるアルゴリズム(線形回帰や勾配ブースティング等)、ハイパーパラメータの選択部分について自動化がなされます。

欠損値が多いデータがある場合には、AutoMLで利用する前に行の削除や平均値や最頻値へデータを置き換える等といった処理が個別に必要になります。

特にクラウド上で利用できるサービス上では、モデル構築後にクリックするだけでAPI化して外部展開するような仕組みも用意されていますので、Python等でコーディングすることなくAIの実装を行うことができます。(勿論、データサイエンティストの知識があるのが望ましいです)

本記事では、コンテナでAPI化まで簡単に実行できるAzureのAutoMLを試してみたいと思います。

001.png

何をしたい?できる?

  • Azure上で、AutoMLを使ってみる
  • Kaggleのタイタニックデータを使って試してみる

Kaggleとは

企業や研究者がデータを投稿し、世界中の統計家やデータ分析家がその最適モデルを競い合う予測モデリング及び分析手法関連プラットフォームで、端的にいうと以下のような形です。

  • 企業等がデータと賞金を用意
  • Kaggleに参加しているデータサイエンティストがデータを分析しAIモデル作成
  • 作成したモデルでコンペの上位を取ると賞金とメダル貰える
  • メダルが溜まっていく事で、kagglerの順位が上がる(ネットゲームの順位みたいな感じ)
qiita-square

Kaggleでは初心者向けに公開されている タイタニックの生存者予測というデータセットがあるので、今回はこちらを利用します。
(データのダウンロードにはKaggleへのアカウント作成が必要になりますが、ここでは割愛します。)

qiita-square

ダウンロードするデータは以下の3つになります。

  • train.csv
    =>機械学習の学習用データ(正解を含めて記載されているデータ)
  • test.csv 
    =>作成したモデルに渡して予測を行う為のデータ(正解はKaggle側が持っている)
  • gender_submission.csv 
    =>Kaggleへの提出するファイルの例

学習用データであるtrain.csvは氏名や年齢等の乗客データがcsv形式で記載されており、
最終的に予測したいServivedという列に0(死亡)か1(生存)で表示されています。

学習データのデータの説明は以下の通りで、Survivedを予測する為に他の項目を利用します。

列名 説明       
PassengerId 乗客識別ID
Survived 生存フラグ(0=死亡、1=生存) <==これを予測したい
Pclass 旅客クラス(1=1等、2=2等、3=3等)
Name 乗客の名前
Sex 性別(male=男性、female=女性)
Age 年齢。一部の乳児は小数値)
SibSp 同乗している兄弟(Siblings)や配偶者(Spouses)の数
Parch 同乗している親(Parents)や子供(Children)の数
Ticket チケット番号
Fare 旅客運賃
Cabin 客室番号
Embarked 出港地(C=Cherbourg:シェルブール、Q=Queenstown:クイーンズタウン、S=Southampton:サウサンプトン)

設定手順

画面例で指定されている以下のパラメータは、環境によって異なる内容なので適宜変更して下さい。

  • リソースグループ名:ai_rg101
  • Azure machine learning ワークスペース名:test-wkspace101
  • リソースを作成するリージョン:Japan East

1.リソースグループ作成

サインインやAzureでリソースグループの作成については、
AzureのAIサービスを利用してみる1)の記事と同じ内容となりますので割愛します。

2.Azure Machine Learningのワークスペース作成

ワークスペースとはAzure Machine Learning最上位のリソースで、ワークスペースでは以下の内容が実施可能となってます。

  • モデルの学習と作成
  • 検証
  • 予測
  • デプロイ
qiita-square

リソースグループの概要画面で、[作成]を選択します。

qiita-square

Marketplace画面に遷移するので検索部分に、[azure machine learning]と入力して検索を行い、表示されたAzure Machine Learningを選択し、作成をクリックします。
qiita-square

qiita-square

ワークスペース名をtest-wkspace101として、Japan Eastリージョンを指定して
[確認及び作成]をクリック後、[作成]をクリックします。
qiita-square

ストレージアカウントやキーコンテナ、Application Insightsは新規作成のままにしています。
(ワークスペース名を入力後に表示される状態のまま)

3.Azure Machine Learning Studioへのアクセス

作成完了後に、リソースグループ上にあるワークスペース名のtest-wkspace101をクリックし、表示された画面にある、[スタジオの起動]をクリックします。
qiita-square

4.データセットの登録

Azure Machine Learning Studioの画面左側にある[自動ML]をクリックし、表示された画面で[新規の自動機械学習ジョブ]を選択します。

qiita-square

表示された画面で[作成]をクリックし、データアセットの説明等の入力を行います。
qiita-square

qiita-square

データ資産のソースを選択で、[ローカルファイルから]をクリックして次に進みます。
qiita-square

データストアの選択では、データストアの種類は[Azure Blob Storage]にして、ワークスペース作成時に新規作成されたBlobストレージを選択します。
(デフォルトでワークスペース作成時に合わせて作成されたものが選択済の画面になっているはずです)
qiita-square

ファイルまたはフォルダの選択で、[アップロード]から[ファイルのアップロード]を選択し、train.csvを選択し次へ進みます。
qiita-square
qiita-square

設定で項目が正しく選択されている事を確認します。

  • ファイル形式 :区切り
  • 区切り記号  :コンマ
  • エンコード  :UTF-8
  • 列見出し   :すべてのファイルで同じヘッダーを利用
  • 行のスキップ :なし
qiita-square

スキーマでは利用する変数の選択を実施します。
ここでは、以下の変数のチェックを外して次に進みます。(利用しない)

  • PassengerId :ただのIDなので削除
  • Name :氏名は生死に関係なさそうなので除外
  • Cabin :欠損値(空白[Null])が多すぎるので使え無さそう

Ticket番号も生死は関係無さそうですが、AutoMLの実行結果で重要な変数扱いになるか確認したいので、あえて残しておきます。

qiita-square

レビューで登録内容に問題が無い事を確認し[作成]をクリックします。

qiita-square

4.自動MLの作成と実行

登録したデータアセットを選択して、[次へ]をクリックします。
qiita-square

任意の実験名を入力し、ターゲット列にSurvivedを指定します。
学習に使う仮想マシンを作成する為、[+新規]をクリックします。

qiita-square

この例ではデータ数の少ないCSVファイルの学習の為、GPUを使わず、仮想マシンのサイズはStandard_DS12_v2を使います。
qiita-square

次の画面で、任意のコンピューティング名を入力し、クラスタを構成する仮想マシンの最大数を2台にして[作成]をクリックします。
qiita-square

戻った画面で、作成したクラスタ名を指定して[次へ]をクリックします。
qiita-square

タスクは分類を指定し、画面下方の[追加の構成設定を表示する]を選択します。
qiita-square

以下の設定値を指定して画面下方の[保存]をクリックします。
生死の正解を予測していので、精度(Accuracy:正答率)を指定してます。
ある程度で停止したいので、最大1時間でモデル選択や学習を停止するように指定しています。

  • プライマリメトリック :精度
  • トレーニングジョブ時間:1
  • 最大反復回数     :1
qiita-square

検証とテストの種類を指定し、画面下方の[終了]をクリックします。
この例では時間短縮の為、交差検証を指定していても2分割としています。
(片方で学習しもう一方で精度試験を行うことを入れ替えて実施するイメージです。)
qiita-square

学習の実行終了まで待ちます。
qiita-square

5.実行結果の確認

実行完了後、モデルタブを選択します。

qiita-square

精度の良い順でモデルが表示されるので、最上位のものをクリックします。
qiita-square

メトリックタブで評価指標を確認できます。
qiita-square

また、説明(プレビュー)をクリックすると予測に効果のある説明変数を確認することができます。
性別が一番重要な特徴で、残しておいたTicket番号は重要では無かった点が確認できます。
qiita-square

6.test.csvの予測

最上位の精度のモデルを使い、タイタニックデータの正解の分からないtest.csvデータについて予測し、Kaggleに投稿して精度を確認します。

まず、test.csvデータをデータアセットにTest_titanicという名前で登録します。
画面例は学習用データの登録と殆ど同じなので割愛します。
(表形式で登録し、学習用データと同じように不要な説明変数の削除も行う)
qiita-square

データアセット登録後、最上位の精度のモデルの画面に移動し、[テスト結果(プレビュー)]タブをクリックすると、画面右側にテストで利用するコンピュータークラスタとデータセットの選択を実施する画面が表示されるので、選択を行い、画面下方の[テスト]をクリックします。
qiita-square

予測の完了後、表示名をクリックします。
test.csvには正解データは入ってないので、精度は利用不可となり表示されないです。
(正解を知っているKaggleに投稿して初めて精度が判明する)
qiita-square

表示された画面の[出力とログ]のタブをクリックし、predictions.csvをダウンロードします。
qiita-square

ダウンロードしたpredictions.csvを開いてSurvived列を、Kaggleからダウンロードしたgender_submission.csvのSurvived列に上書きします。
qiita-square

Kaggleのタイタニックデータの[Submit Predictions]をクリックして、データをUploadすると精度を確認することができます。

qiita-square qiita-square qiita-square

7.デプロイの実施

精度の一番良いモデルをデプロイ(REST APIを使い予測できるようにする)します。
対象のモデル(アルゴリズム)を選択し、画面上部の[▷デプロイ]をクリック、[リアルタイムエンドポイント]を選択します。
qiita-square

画面右側に表示される画面で、任意のデプロイ名とデプロイ先のコンピューティングの種類を選択します。
この例では、Azureコンテナインスタンス(ACI)上にデプロイを実施します。
qiita-square

デプロイ完了後、エンドポイントが確認できるようになります。
qiita-square

完了後は、料金がかからないように、リソースグループ毎削除を行ってます。

参考までにかかったコスト

実際にここまでAzureを利用してかかったコストですが
画面キャプチャしながら進めたので、開始して5時間前後利用しましたが、以下の請求となりました。
(学習開始からの時間は1.5時間程度)
qiita-square

参考及びリンク

AzureのAIサービスを利用してみる1【Cognitive ServicesのComputer Vision】
AzureのAIサービスを利用してみる2【Cognitive ServicesのCustom Vision】
Azure Machine Learning のドキュメント
自動機械学習 (AutoML) とは
チュートリアル: Azure Machine Learning スタジオでコードなし AutoML を使用して分類モデルをトレーニングする

3
5
1

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
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?