AutoML ハンズオンに参加しました. AzureでAutoML
事前準備
チュートリアル:Python SDK で初めての ML 実験を作成するにしたがってAzure上でJupyter Notebookを動かせるようにしておきます。内部でAzureのCLIを使う必要があり、Jupyter Notebookで認証パスとコードが小さく出るのでそれはやる必要がある。
ハイパーパラメーター・チューニングのチュートリアルを終了するとAzure上で結果が見れ、各パラメーターの違いが見れます。
Azure Machine Learning Studioは先週日本語化されたとか
Azure MLの仕様
Azure MLにはAutomated Machine LearningとHyperdriveの2機能が存在
- Automated Machine Learning
テーブルデータのみ対応. NIPS 2018で発表されたベイズ最適化と協調フィルターを使った手法をベースにしており、D〇〇aRobotと比べると賢い(との主張)
プライバシー保護とONNX変換もサポートしている.
分類、回帰、時系列のモードがある. Previewのdeep learningは英語onlyでBERTが動くとのこと
- パラメータチューニング Hyperdrive
テーブルデータに限らない
モデル解釈について
モデル解釈にはいろんな手法が存在しているが、そのインターフェイスはバラバラ. Interpret-Communityが各モデル解釈を統合されたAPIで提供しており、Azure Machine Learningでも使うことができる。
モデルの解釈には
- グローバルな解釈: とある特徴量がきいているかどうか
- ローカルな解釈: とあるひとつの予測の根拠
の2種類がある.
モデル解釈UIはこんな感じ
本編
AzureのAutoMLには
- GUIから学習する方法
- コードベースで学習させる方法
の2種類がある.
コードベースのほうが細かくパラメータがチューニングでき例えばGUIだとアンサンブルを抜くことができないとか. ライブラリは2週間に一度ver upされるそうです
Azureのデータフレームは独自形式のためpandasで使うためにはto_pandas_dataframeする必要がある. その他Sparkもサポートしているとのこと。
計算自体はdocker imageを使用しているためオンプレで実行可能とのこと. おもしろいですね。
内部ではXGBoostやLightGBM, RandomForestなどを実行しているみたいです
また、defaultの挙動だと
- 不均衡データ: 1:20までサポート
- 欠損値: 平均値で埋められる
- カーディナリティーが高いデータ: 使えない
その他
- 低優先度インスタンスだと8割引. データセンターの空きリソースを使うためシャットダウンされますが. USなど大きいデータセンターだとシャットダウンされにくいとか
- Azure MLとは別の枠組みでMicrosoft ResearchがNeural Network Intelligenceを公開しており、各種アルゴリズムを試せる
所感
モデル解釈の可視化機能が豊富で、ローカルでも実行可能なのは魅力的ですね。単なるscikit-learnでも使えるとか
一方、AutoMLに前処理をまかせるとfeature名が機械的に作られ、この特徴が重要と言われても何を表してるの??ということもあるようです。
ハンズオン資料 github.com