Amazon SageMaker Studio の導入と Autopilot について ＃２

[Amazon SageMaker Studio の導入と Autopilot について ＃１](https://qiita.com/SatoshiGachiFujimoto/items/eecb66f5d57cb50324c7)の続きです。

前回は、SageMaker Studioの導入と Autopilot によるパイプラインを開始したところまで終わりました。
Autopilotのパイプラインは、Analyzing Data → Feature Engineering → Model Tuning → Completed の流れになっています。

[Amazon SageMaker Autopilot – 高品質な機械学習モデルをフルコントロールかつ視覚的に自動生成](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-autopilot-fully-managed-automatic-machine-learning/)

# [Amazon SageMaker Studio - Amazon SageMaker AutoPilot (part 2)](https://www.youtube.com/watch?v=WsfRAeGzgm8)
part2は、Future Engineeringについての話です。
![studio26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/3b2fbd20-38e5-3e99-26b8-df0585e988ec.png)

「Open data exploration notebook」には、データセットに関する情報が書かれています。

1．どのように特徴量を選択するために分析されたのか
2．データセットからAutoMLパイプラインの修正と改善について

> We read 39128 rows from the training dataset. The dataset has 21 columns and the column named y is used as the target column. This is identified as a BinaryClassification problem. Here are 2 examples of labels: ['no', 'yes'].

21項目からなる39128個のトレーニングサンプルがあり、「y」が推論対象。これはyesかnoを推論する二項分類の問題です。


## Dataset Sample
> The following table is a random sample of 10 rows from the training dataset. For ease of presentation, we are only showing 20 of the 21 columns of the dataset.

10個のサンプルを表示しています。21項目中20項目のみ表示しています。

## Column Analysis
> The AutoML job analyzed the 21 input columns to infer each data type and select the feature processing pipelines for each training algorithm.

AutoML job が21項目を分析します。

### Percent of Missing Values
> We found 1 of the 21 of the columns contained missing values. The following table shows the 1 columns with the highest percentage of missing values.

1項目について欠損値を見つけたようです。
poutcome が 86.33% 欠損しているそう。

### Count Statistics

データがカテゴリカルならone-hot encodingを実施したり、テキストならtf-idfなどを実行するようです。

> The table below shows 21 of the 21 columns ranked by the number of unique entries.

各項目の独立した値の数を一覧表にしてくれています。

![studio27.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/854e7b35-acc3-ae29-03ea-d9b258fa19fe.png)

### Descriptive Statistics

数値データの場合は、正規化、log、quantile、binningなどにより外れ値やスケールを調整してくれます。

![studio28.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/2dcc3b59-f072-9725-f6e9-f9c806cc5a3a.png)


# [Amazon SageMaker Studio - Amazon SageMaker AutoPilot (part 3)](https://www.youtube.com/watch?v=KZSTsWrDGXs)
part3は、Model Tuning の話です。

「Open candidate generation notebook」には、SageMaker Autopilot ジョブの詳細情報（各試行の情報、データ前処理ステップなど）が書かれています。すべてのコードは利用可能な状態で、実験を重ねる際のとっかかりになるらしい。

> The dataset has 21 columns and the column named y is used as the target column. This is being treated as a BinaryClassification problem. The dataset also has 2 classes. This notebook will build a BinaryClassification model that maximizes the "ACCURACY" quality metric of the trained models. The "ACCURACY" metric provides the percentage of times the model predicted the correct class.

ACCURACY（正確度）が最大になるように二項分類のモデル作ったそうです。

## Sagemaker Setup

SageMakerのセットアップ

- Jupyter: Tested on JupyterLab 1.0.6, jupyter_core 4.5.0 and IPython 6.4.0
- Kernel: conda_python3
- Dependencies required
sagemaker-python-sdk>=v1.43.4

### Downloading Generated Candidates
データ変換とAutopilotに関するモジュールをダウンロードします。

### SageMaker Autopilot Job and Amazon Simple Storage Service (Amazon S3) Configuration
Autopilot Job と S3の設定を行います。

## Candidate Pipelines

### Generated Candidates

> The SageMaker Autopilot Job has analyzed the dataset and has generated 10 machine learning pipeline(s) that use 2 algorithm(s). Each pipeline contains a set of feature transformers and an algorithm.

2つのアルゴリズムを用いた10個のパイプラインを生成し、分析したそうです。

> dpp0-xgboost: This data transformation strategy first transforms 'numeric' features using RobustImputer (converts missing values to nan), 'categorical' features using ThresholdOneHotEncoder. It merges all the generated features and applies RobustStandardScaler. The transformed data will be used to tune a xgboost model. Here is the definition:

10個がそれぞれどのようなパイプラインかの説明が書いてあります。上記は、内１つの例です。

### Selected Candidates
SageMakerのtraining jobとバッチ変換を含む特徴エンジニアリングを行います。

## Executing the Candidate Pipelines

### Run Data Transformation Steps
データ変換を実施します。

### Multi Algorithm Hyperparameter Tuning
データ変換されたら、Multi-Algo Tuning jobにより最適な推論モデルを探します。

## Model Selection and Deployment

### Tuning Job Result Overview
Pandas dataframeを用いて各パイプラインの可視化を行います。

### Model Deployment
最後にデプロイします。

# [Amazon SageMaker Studio - Amazon SageMaker AutoPilot (part 4)](https://www.youtube.com/watch?v=vRHyX3kDstI)

part4は、モデルの比較やデプロイまでの話です。

Autopilotが完了すると、さまざまなモデルができています。
Trialsタブを見ると、トレーニングジョブと精度の一覧が見れます。
![studio29.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/31feef9e-3f69-3ac6-7e5f-278377a2bc0c.png)

Job Profileでは、学習時間や設定の情報、ベストなモデルの候補が挙げられています。
![studio30.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/918971dc-2105-a13f-0ce5-8442c436e2d7.png)

![studio31.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/6800898d-474c-8203-65eb-c82ecf900e09.png)

トレーニングジョブを右クリックして、Open in trial component listをクリックすると、詳細の一覧が見れます。
![studio33.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/2293ce84-688d-36d9-121d-a19918e6cdaf.png)

トレーニングジョブを右クリックして、Open in trial detail をクリックすると、ジョブの詳細が見れます。
![studio32.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/f8007b1c-bf6f-a1bd-00f4-763b22400ee6.png)

Deploy Modelをクリックすると、エンドポイントが作成されます。
![studio34.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/eebfde55-f30b-ef47-8802-e1cc144069cd.png)

Enable Monitoring をクリックすると、
![studio35.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/61fe900a-c14a-5d38-f8b7-623859111969.png)

ノートブックを利用して、モデルの監視ができるみたいです。
![studio36.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/90ed976b-b6d0-f51a-46b6-583cba6acbbc.png)

[Amazon SageMaker Experiments – 機械学習モデルの整理、追跡、比較、評価](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-experiments-organize-track-and-compare-your-machine-learning-trainings/)
[Amazon SageMaker Model Monitor – 機械学習モデルのためのフルマネージドな自動監視](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-model-monitor-fully-managed-automatic-monitoring-for-your-machine-learning-models/)

# まとめ
ざっくりとした説明になってしまいましたが、SageMaker Autopilotの続きをやってみました。
SageMaker Autopilotにより、モデルを自動で最適なやつを作ってくれます。さらに、どのようなプロセスでモデルを作っているのかや、モデルの比較や監視までできるようです。

# その他
- [Amazon SageMaker Studio - Deploying a model to an endpoint](https://www.youtube.com/watch?v=xf46PdAjbY8)
- [Amazon SageMaker Debugger – 機械学習モデルのデバッガ](https://aws.amazon.com/jp/blogs/news/amazon-sagemaker-debugger-debug-your-machine-learning-models/)