AutoMLを比べてみる（メモ）

# 背景

- すぐに使いたいんです  
- データに対するルーチン的な作業はできるだけやっといてほしい  
- DataRobot？いきなりそこまで本気にはなれないです、、  
- AutoMLってのがあるの！精度とかお値段はどんな感じだろう

# 対象
- Pycaret
    - ローカルで実行できるライブラリ
    - ![スクリーンショット 2022-01-17 092055.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/406769b3-7a6a-450a-d127-80722857bdab.png)

- Azure Machine Learning Studio 自動ML
    - MSが提供しているクラウドサービス
    - ![Screenshot 2022-01-17 00.33.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/58c178d3-2121-b9d7-c30f-6c7f45335dee.png)
 
- GCP Tables
    - Googleが提供しているクラウドサービス
    - ![Screenshot 2022-01-17 00.38.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/0f50f6e3-c049-e2ad-0503-b869acb9e8a1.png)

# 計測方法
- signateのデータを使用
- 評価もsignateで行う
- signateで結果が良いほうが勝ち！

# やってみた
## pycaret
- 何一つ難しいことはなくpip一発でAutoMLがローカルで動く！
- https://pycaret.org/

```python# テスト用データのロード
org_date = pd.read_csv('./train.csv', index_col=0)
pip install pycaret
```

公式ホームページにあるサンプルを真似しながら淡々と書く。
が、実際ほしいのは以下で、github copilitを入れたら結構勝手に話が進んでいっった

```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from pycaret.regression import *

# テスト用データのロード
org_date = pd.read_csv('./train.csv', index_col=0)
# いらないカラムをドロップして学習用のデータを作成する
train_data_df = org_date.drop(['Order'], axis=1)
# 準備開始
exp_data = setup(data=train_data_df,categorical_features=cat_features, target='SalePrice')
# pycaretで学習、評価を実施
best =compare_models()
# 一番いいモデルを作成
model = create_model(best)
# 評価用データのロード
org_date_test = pd.read_csv('./test.csv', index_col=0)
# いらないカラムをドロップして評価用のデータを作成する
test_data_df = org_date_test.drop(['Order'], axis=1)
# 予測
prediction_res = predict_model(model, data=test_data_df)
# 結果出力
prediction_res['Label'].to_csv('./result.csv')

```

RMSEで評価とのこと。今回検証した中では2番めの成績だった
同じことをColaboratoryで行うと全く成績が振るわない。何故だ、、

## Azure Machine Learning Studio 自動ML
動かすための環境を[チュートリアル](https://docs.microsoft.com/ja-jp/azure/synapse-analytics/machine-learning/tutorial-automl)に沿って作ってゆく。
クラウドといえどリソースを作成するとなうと時間が課kルのでサクサクという感じにはゆかない。また、前段の処理が終わる前に次の作業を行おうとすると怒られることもある。
コストの感覚がわからないのでデータや計算のためのリソースを恐る恐る作る。
モデルが出来たら手持ちの別のデータで予測をしたい。
かなりテンポラリな動きなので、Notebookからモデルを読み込んで、Notebook上で予測して結果をファイル出力できるようにする。
![スクリーンショット 2022-02-10 170752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/0fa55b9b-af9e-1f9b-e332-d5b28b786ae0.png)
刹那的に試行するためのツールとしてJupyterはどこにでも入っているイメージ、、

体感的には2-3時間ぐらいぐるぐる回したところ、お代は以下な感じ（結局5,000円強だった）。マシン買うよりよっぽど安いのだろうけど後から金額がわかるのは個人だとちょっと怖い。あと、LoadbalancerとかStorageとかは放っておくとそこそこの金額が課金され続けるのも怖い感じ。
![cost2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/8c018315-e5a7-c59a-ba1f-506dda000c93.png)
精度は一番良かった

## GCP AutoTable
AI Platformの中の機能を探しそうになるが、Talbesが入り口だった
![menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/f33a12d9-18d3-25c7-b7f9-45258e124dcc.png)
データセットから入るとタブを進めながら一連の設定から学習が完了する作りでわかりやすい。![pipeline.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/9c89baf3-575b-2932-8dec-64e4cc156f41.png)
手元の別データで予測を行うときはモデルから入って処理方法を指定してゆく
![predict.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/66376a41-5974-75d8-5cc3-aeb76558385b.png)
お代は以下な感じで、Azureと異なり一回こっきりで何か課金される続けるようなものが残ることはなかった。すごく安心
![cost.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328600/530d9b73-c95c-188b-c000-cfd8f1405e99.png)
精度は一番悪かった、、、

# 感想
- 環境を構築する必要がないのは楽！
- 仕組みをわかっているわけではないので、はまったら深呼吸して最初からやるしかない
- 精度もある程度追求したロジックを回してくれているようなので、これでだめならもうだめですとしか言いようがない。諦めが早く着くので良いかも
- マックス金額とか決めてそれに合わせた程度で計算してくれたりすると素敵。
- とはいえ精度が出るまでやりかねないから最初からガツンと言ったほうが良いのか、、