AWS SageMaker Canvasを使用した予測モデルの構築ガイド

#### **はじめに**  
SageMaker Canvasは、AWSが提供する直感的で使いやすいツールであり、コードを書かずにAIモデルを構築、トレーニング、デプロイすることができます。このガイドでは、SageMaker Canvasを使用して予測モデルを作成するための詳細な手順を説明します。  
このガイドでは、SageMakerを使用したモデルのトレーニングに焦点を当てます。データ処理の前段階については、別のトピックとして後日解説する予定です。

---

### **1. 環境とデータの準備**

- **AWS環境の準備**: SageMaker Domain、User Profile、S3バケット、IAMなどの設定が完了していること（AWSのガイドに従ってステップバイステップで進めれば問題ありません。必要であれば、別の記事で詳しく説明します）。  
- **データの準備**: モデルのトレーニング用データとテストデータ（データ分析の段階で準備済み）をS3にアップロードします。

---

### **2. SageMaker Canvasへのデータインポート**

#### **2.1. SageMaker Canvasへのアクセス**  
- SageMaker Canvasを開きます。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/10e88207-1848-4370-8225-67e21c80bc83.png)

#### **2.2. データのインポート**  
- **ステップ1**: SageMaker Canvasで、**Data Wrangler** > **Import and prepare** > **Tabular**を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/99b8ac3b-86aa-47b9-814b-7ffc9f8a19d1.png)


- **ステップ2**: データソースとして**Amazon S3**を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/72189145-2689-482b-8abc-d0dc4698f3d4.png)

- **ステップ3**: **Import**をクリックしてデータをCanvasにインポートします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/62a18dc3-f42d-426c-ae1a-02487b2a71dc.png)


#### **2.3. データのエクスポートとモデルの作成**  
- **問題の種類**: **Predictive Analysis**を選択します。  
- **ターゲット列**: 予測したい列を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/1f586ca1-b180-48d0-97dc-700ed43411b4.png)


---

### **3. AIモデルのトレーニング**

#### **3.1. モデルの設定**  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/3ed010fa-118a-4221-a8ea-3ae8b8ef0b4d.png)

- **時系列設定**:  
  - **Item ID**: 予測対象を表す列を選択します。  
  - **Time Stamp**: 時間の列を選択します。  
  - **Days/Months**: 予測したい日数を入力します。  
  - **Use Holiday Schedule**: 休日が結果に影響する場合は、このオプションを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/71fc3fb9-6393-46a0-8521-c787af2b8ddb.png)

- **Objective metric**:  
  - **Avg.wQL (Average Weighted Quantile Loss)**: 分位点（quantile）の予測精度を測定します。リスクや予測の不確実性を評価したい場合に使用します。
  - **MAPE (Mean Absolute Percentage Error)**: 実際の値と予測値の間の平均絶対パーセント誤差を測定します。誤差をパーセントで評価したい場合に使用しますが、実際の値が0に近い場合には適していません。
  - **WAPE (Weighted Absolute Percentage Error)**: MAPEと同様ですが、実際の値の合計に基づく重みを使用することで、実際の値が0に近い場合の問題を回避します。
  - **RMSE (Root Mean Squared Error)**: 実際の値と予測値の間の二乗平均平方根誤差を測定します。誤差の大きさに重点を置いて評価したい場合に適しています。
  - **MASE (Mean Absolute Scaled Error)**: 単純な予測モデル（例：ナイーブ予測）との比較で、平均絶対誤差を測定します。モデルの性能を単純なモデルと比較したい場合に使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/a2ed2f82-95e8-4013-95ca-e95e4992bdf2.png)

- **Algorithms**:  
  - **CNN - Quantile Regression** と **RNN - DeepAR+**: データ量が多いが、強いトレンドがない場合に適しています。
  - **Prophet**: 季節性の強いデータに適しています。  
  - **ARIMA**: トレンドやラグがあるデータに適しています。  
  - **Amazon Forecast Non-Parametric Time Series**: 不連続なデータに適しています。  
  - **Exponential Smoothing (ETS)**: 周期的なデータに適しています。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/3fbe0aaa-2fb9-4c0c-aaf6-921b26fdfede.png)

- **Forecast quantiles**: デフォルト設定を使用 

#### **3.2. モデルのトレーニング**  
- **ステップ1**: トレーニングデータが50,000サンプル未満の場合は、**Quick Build**を選択します。データが多い場合、**Quick Build**はランダムに50,000サンプルを選択してトレーニングします。全データを使用したい場合は、**Standard Build**に切り替えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/dafabc23-e042-40e5-928d-60493a84c331.png)

- **ステップ2**: トレーニングが完了するまで待ちます（**Quick Build**は約15-20分、**Standard Build**は2-4時間かかります）。  
- **ステップ3**: 評価指標（私はMASEを使用しています）を確認して、モデルの性能を評価します。  
	*（経験に基づくものであり、MASEには固定の指標はありません。）*
	- MASE < 0.5 → 良好: 予測精度が高く、誤差が少ない。
	- 0.5 ≤ MASE < 0.8 → 許容範囲: 使用可能だが、さらなる改善が必要。
	- 0.8 ≤ MASE → 不適切: 予測の精度が低く、実用には向かない。

	*（他の評価指標でAI予測精度を分析する際にも、[『評価指標で読み解くAI予測精度：成功への道を拓く秘訣』](https://qiita.com/BNR-Satoshi/items/d48dc58721349f9d2abb)の指標を参照できます。）*
---

### **4. モデルのデプロイ**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4035974/1df564ee-6fc3-456e-9044-783bf19a5dda.png)

---

### **5. AWS SageMaker Canvas使用時の注意点**  

- **データの品質がモデルよりも重要:** 入力データは事前にクレンジングされている必要があります。
- **データサイエンティストを完全に置き換えるものではない:** ツールは簡素化しますが、複雑な問題には専門家が必要です。  
- **AWSのコスト管理:** リソースを適切に設定して無駄を省きます。  
- **他のAWSサービスとの連携:**  
	- **AWS Lambda**を使用して予測を自動化します。  
	- **Amazon QuickSight**を使用して結果を可視化します。  

### **6. コスト最適化のためのヒント**  

- 使用しなくなったらすぐにCanvasからログアウトします（通常はエンドポイントをデプロイした後）。これにより、無駄なコストを防ぎます。
- 予測結果をS3に保存して再利用します。これにより、エンドポイントを削除してコストを節約できます。再度予測が必要な場合は、新しいエンドポイントを作成して使用します。
- モデルの再トレーニングの頻度は短くする必要はありません。通常、1-3か月後に再トレーニングを行えば十分です。

---
### **まとめ**  
SageMaker Canvasを使用することで、予測モデルの構築とデプロイが簡単かつ効率的に行えます。このガイドの手順に従うことで、高度なプログラミング知識がなくても強力なAIモデルを作成することができます。  
**成功を祈っています！**