Azure Machine Learning に入門する方法

# はじめに
私はMicrosoft Azureを2022年3月から約３ヶ月間使用しています。しばしばAzure Portalで迷子になる程のAzure初心者です。
この度、「[Qiita Engineer Festa 2022]」というイベントを知り、良い機会なのでAzure Machine Learningに入門してみました。

https://qiita.com/official-campaigns/engineer-festa/2022


# 使用する教材
教材は、Azure公式の「[チュートリアル: Azure Machine Learning Studio でコードなし自動機械学習を使用して需要を予測する](https://docs.microsoft.com/ja-jp/azure/machine-learning/tutorial-automated-ml-forecast)」を使用しました。

https://docs.microsoft.com/ja-jp/azure/machine-learning/tutorial-automated-ml-forecast


# 準備
## Azure Portalにログイン
Azureのアカウントがない方は以下から無料で作成できます。

https://azure.microsoft.com/ja-jp/free/

Azureのアカウントが作成できたら[Azure Portal]にログインします。

https://portal.azure.com/


## Azure Machine Learning の作成
「無料サービス」を選択します。
![スクリーンショット 2022-07-18 11.15.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/b253fd58-3825-1922-68d1-8ac197df6fd6.png)

Machine Learningの「作成」をクリックします。
![スクリーンショット 2022-07-18 11.24.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/4245520c-1a79-51c1-3d72-192e4aac3777.png)

すると以下のような画面になります。
![スクリーンショット 2022-07-18 11.27.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/23734c80-d1d6-401e-314c-a90f56c2687c.png)

以下のように値を設定します。(その他の設定項目は自動入力に従います。)
|設定項目|値|備考|
|--|--|--|
|リソースグループ|qiita|新規作成|
|ワークスペース名|qiita||
|コンテナレジストリ|qiita|新規作成|


「確認および作成」をクリックします。
![スクリーンショット 2022-07-18 11.34.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/2437e13b-96f8-0a8a-ad3c-89e3b3e6d6c9.png)

問題がなければ「検証に成功しました」と表示されますので、「作成」をクリックします。
![スクリーンショット 2022-07-18 11.35.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/5dcb1d67-4f77-14db-656f-ceb3ab765d1f.png)


デプロイが完了するまで待ちます。（２〜３分）
![スクリーンショット 2022-07-18 11.37.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/db3a4c16-34f5-a7bf-287d-7f3f0bf66e16.png)

デプロイが完了したら、「リソースに移動」をクリックします。
![スクリーンショット 2022-07-18 11.38.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/de1d5816-0a36-e75e-90bc-99fbddac958f.png)

「スタジオの起動」をクリックします。
![スクリーンショット 2022-07-18 11.39.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/7626ce8c-30e5-bb7b-aef0-c1224f575eac.png)

# Azure Machine Learning Studio
## データセット(CSV)のダウンロード
[bike-no.csv]をダウンロードします。

https://github.com/Azure/azureml-examples/blob/main/python-sdk/tutorials/automl-with-azureml/forecasting-bike-share/bike-no.csv

## 自動機械学習ジョブの作成
Microsoft Azure Machine Learning Studio(以下、Studio)を開いたら、作成者の「自動ML」をクリックし、「新規の自動機械学習ジョブ」をクリックします。
![スクリーンショット 2022-07-18 12.28.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/4b6defe7-4537-028c-b0f8-525dd18b126a.png)

### データアセットの選択
「作成」をクリックし、次に「ローカルファイルから」をクリックします。
![スクリーンショット 2022-07-18 12.33.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/e204babb-2e20-8ca5-07bb-f7d92ed9dec8.png)

### ローカルファイルからデータセットを作成
基本情報を入力します。今回は名前は「qiita」、データセットの種類は「表形式」、説明は「qiita記事用データセット」とします。「次へ」をクリックします。
![スクリーンショット 2022-07-18 12.36.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/88899fed-0930-a7b7-78e1-0ba816735492.png)

### データストアとファイルの選択
「workspaceblobstore」を選択します。データセットは先ほどダウンロードした[bike-no.csv]を参照するようにします。「次へ」をクリックします。
![スクリーンショット 2022-07-18 12.42.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/b1f5b7d1-93ef-bff3-7a5a-f8b1101b91dc.png)

### 設定とプレビュー
|設定項目|値|
|:--:|:--:|
|ファイル形式|区切り|
|区切り記号|コンマ|
|エンコード|UTF-8|
|列見出し|最初のファイルのみにヘッダーがある|
|行のスキップ|なし|

「次へ」をクリックします。

![スクリーンショット 2022-07-18 12.46.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/e2fb0f32-08b1-2835-d490-41559b55b150.png)


### スキーマ
casualとregisteredを無視するように、トグルスイッチをOFFにします。「次へ」をクリックします。
![スクリーンショット 2022-07-18 12.51.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/48de3a71-5e7f-c5c9-f49c-db316cff9edd.png)

「作成」をクリックします。
![スクリーンショット 2022-07-18 12.54.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/7e5d7b46-5a19-f6a1-d62f-1c0775fd3dbd.png)

### データアセットの選択（再び）
「最新の情報に更新」をクリックし、データアセットから「qiita」を選択し、「次へ」をクリックします。
![スクリーンショット 2022-07-18 12.56.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/1ac5f74a-53ed-9d9a-d0bc-7125a9f92575.png)

## ジョブの構成

|設定項目|値|
|:--:|:--:|
|新しい実験名|automl-mikeshare|
|ターゲット列|cnt(Integer)|
|コンピューティングの種類|コンピューティングクラスター|

「新規」をクリックし、コンピューティングクラスターを作成します。

![スクリーンショット 2022-07-18 13.00.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/12706a24-fb86-8afd-e71b-61f0989f2646.png)


### コンピューティングクラスターの作成
#### 仮想マシン
|設定項目|値|
|:--:|:--:|
|バーチャルマシン層|専用|
|仮想マシンの種類|CPU|
|仮想マシンのサイズ|Standard_DS12_v2|

以上を設定し、「次へ」をクリックします。

![スクリーンショット 2022-07-18 13.05.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/9d09603a-d433-052d-2288-08b89e79d953.png)

#### 詳細設定
|設定項目|値|
|--|--|
|コンピューティング名|bike-compute|
|最小ノード数|0|
|最大ノード数|1|
|スケール ダウンする前のアイドル時間 (秒)|120|

以上を設定し、「作成」をクリックします。

:::note warn
ノード数はケチりました。[公式チュートリアル](https://docs.microsoft.com/ja-jp/azure/machine-learning/tutorial-automated-ml-forecast#configure-run)では最小ノード数１、最大ノード数６となっています。
:::


![スクリーンショット 2022-07-18 13.09.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/9ccf0b4f-a636-dddf-df00-9656da92c15d.png)


## ジョブの構成（再び）
先ほど作成した「bike-compute」を選択し、「次へ」をクリックします。

![スクリーンショット 2022-07-18 13.13.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/9979fa55-c182-83f8-719b-9825577f35ce.png)

## タスクと設定の選択
「時系列の予測」を選択し、以下のように設定し、「次へ」をクリックします。
|設定項目|値|
|--|--|
|時系列|date(Date)|
|時系列ID|自動検出|
|頻度|自動検出|
|予測期間|自動検出|

![スクリーンショット 2022-07-18 13.17.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/1edd616e-ed92-98bf-292a-036affd4d5db.png)

## 検証とテスト
「終了」をクリックします。

![スクリーンショット 2022-07-18 13.21.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/a4cda74c-18bb-3b88-306a-e207b5e24269.png)

すると以下のような画面になります。終了するまでしばらく待ちます。(約50分)
![スクリーンショット 2022-07-18 13.22.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/7fc660b2-2d0e-c9d3-8b13-c8b4f03f37d6.png)

完了すると以下のように状態が「完了」となります。
![スクリーンショット 2022-07-18 14.13.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/4e5a4138-06e2-3cc6-14b8-c5bf38dd94b8.png)


## モデルの調査
「モデル」タブを選択するとテストされたアルゴリズム (モデル) を確認できます。
![スクリーンショット 2022-07-18 14.21.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/d7e6fb2a-eae4-f2aa-50fb-9037e95cf98b.png)



## モデルのデプロイ
今回は平均平方二乗誤差が最も低かったアルゴリズム名「VotingEnsemble」を選択し、「デプロイ」をクリックし、「Webサービスへの配置」をクリックします。
![スクリーンショット 2022-07-18 14.30.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/e27052b2-c3af-3df5-b941-d52c928212fb.png)

|設定項目|値|
|:-:|:-:|
|名前|bikeshare-deploy|
|説明|Qiita記事用デプロイ|
|コンピューティングの種類|Azureコンテナーインスタンス|

上記を入力し、「デプロイ」をクリックします。
![スクリーンショット 2022-07-18 14.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/c44e8b5d-5852-acbb-6ff0-7b06c5914bc6.png)

# テスト
アセットの「エンドポイント」をクリックし、「bikeshare-deploy」をクリックします。
![スクリーンショット 2022-07-18 14.57.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/ddb10180-b39c-6197-6ef4-d6a6175a8b90.png)

「テスト」タブをクリックし、dateに「2023-01-01T00:00:00.000Z」を入力後、「テスト」をクリックすると、右側にテスト結果が表示されます。
![スクリーンショット 2022-07-18 15.00.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/07fde4f3-7ad0-2bd0-7454-61434721445c.png)

```json:テスト結果
{
  "Results": {
    "forecast": [
      1009.0995173136394
    ],
    "prediction_interval": [
      "[-74879.55713775268, 76897.75617237993]"
    ],
    "index": [
      {
        "date": 1672531200000
      }
    ]
  }
}
```

# 不要になったらリソースグループの削除を！

今回はリソースグループをqiitaにしましたので、[Azure Portal]でリソースグループを削除します。
種類「リソースグループ」かつ名前「qiita」をクリックします。
![スクリーンショット 2022-07-18 15.06.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/9e53f7fd-063c-cf62-7f84-2c5a421e36c4.png)

「リソースグループの削除」をクリックします。
![スクリーンショット 2022-07-18 15.09.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/b01d8fd9-effd-af96-25df-bb753221c659.png)

リソースグループ名に「qiita」を入力し、「削除」をクリックします。
![スクリーンショット 2022-07-18 15.11.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/dc820dcd-7c3d-a5f9-ff36-b62fa88b508f.png)

![スクリーンショット 2022-07-18 15.15.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73698/d482794b-626a-fd01-f7a0-bcc640387053.png)

今回の入門はこれで以上となります。

# まとめ
* Azure Machine Learningは無料の公式ドキュメント（チュートリアル等）が非常に充実しています。
* 操作の習得であれば別途書籍等は必要ないと思います。
* AutoMLは1行もコードを書く必要がありませんでした。

https://docs.microsoft.com/ja-jp/azure/machine-learning/


稚拙な文章にお付き合いいただき、ありがとうございました。

入門してみたら非常に簡単にできました。
皆様も素敵なAzure Machine Learningライフを!:smile: 



[bike-no.csv]:https://github.com/Azure/azureml-examples/blob/main/python-sdk/tutorials/automl-with-azureml/forecasting-bike-share/bike-no.csv

[Azure Portal]:https://portal.azure.com/

[Qiita Engineer Festa 2022]:https://qiita.com/official-campaigns/engineer-festa/2022