LESSON

AutoML

田中VPoE:「これまで手動でモデル選択やパラメータ調整をしてきたが、これらを自動化するツールがある。AutoML だ。」

あなた:「自動でやってくれるなら、手動での学習は不要だったのでは…?」

田中VPoE:「いや、AutoML はブラックボックスになりがちだ。中身を理解していないと、結果の解釈も改善もできない。これまでの知識があるからこそ、AutoML を正しく使いこなせる。」

AutoML とは

モデル選択、ハイパーパラメータ最適化、特徴量エンジニアリングなどを自動化するツールです。

AutoML が自動化する範囲

1. 前処理(欠損値補完、エンコーディング)
2. 特徴量選択
3. モデル選択(複数アルゴリズムの試行)
4. ハイパーパラメータ最適化
5. アンサンブル構築

FLAML

Microsoft 開発の高速 AutoML ライブラリです。

from flaml import AutoML
from sklearn.metrics import f1_score

automl = AutoML()

automl.fit(
    X_train, y_train,
    task='classification',
    metric='f1',
    time_budget=120,  # 制限時間(秒)
    eval_method='cv',
    n_splits=5,
    verbose=0,
)

# 結果の確認
print(f"最適モデル: {automl.best_estimator}")
print(f"最適スコア: {automl.best_config}")
print(f"学習時間: {automl.best_config_train_time:.2f}秒")

# テストデータでの評価
y_pred = automl.predict(X_test)
print(f"テストF1: {f1_score(y_test, y_pred):.3f}")

# 各モデルの試行履歴
print("\n試行したモデル:")
for model_name, result in automl.best_config_per_estimator.items():
    if result:
        print(f"  {model_name}: {result}")

FLAML の特徴

  • 高速(少ないリソースで良い結果)
  • 時間制約付きの最適化
  • LightGBM、XGBoost、RandomForest 等を自動試行

auto-sklearn

scikit-learn ベースの AutoML です。

# auto-sklearn の使用例(参考)
import autosklearn.classification

automl_sklearn = autosklearn.classification.AutoSklearnClassifier(
    time_left_for_this_task=300,
    per_run_time_limit=60,
    n_jobs=-1,
)

automl_sklearn.fit(X_train, y_train)
y_pred = automl_sklearn.predict(X_test)

print(f"テストF1: {f1_score(y_test, y_pred):.3f}")
print(f"\nモデル構成:")
print(automl_sklearn.show_models())

H2O AutoML

エンタープライズ向けの AutoML プラットフォームです。

# H2O AutoML の使用例(参考)
import h2o
from h2o.automl import H2OAutoML

h2o.init()

train_h2o = h2o.H2OFrame(pd.concat([X_train, y_train], axis=1))
test_h2o = h2o.H2OFrame(pd.concat([X_test, y_test], axis=1))

train_h2o['is_churned'] = train_h2o['is_churned'].asfactor()

aml = H2OAutoML(
    max_runtime_secs=300,
    sort_metric='F1',
    seed=42,
)

aml.train(y='is_churned', training_frame=train_h2o)

# リーダーボード
lb = aml.leaderboard
print(lb.head(rows=10))

AutoML ツールの比較

ツール速度精度使いやすさ特徴
FLAML高速高い簡単時間制約ベース、軽量
auto-sklearn中程度高い中程度scikit-learn 互換
H2O AutoML中程度非常に高い中程度エンタープライズ、分散処理

AutoML の適切な使い方

AutoML が有効な場面

  1. ベースライン構築: 短時間で良いモデルの目安を得る
  2. モデル候補の探索: どのアルゴリズムが有効か調べる
  3. 時間が限られる場合: 手動チューニングの時間がない
  4. PoC(概念実証): 素早くビジネス価値を示す

AutoML だけでは不十分な場面

  1. ドメイン知識の活用: AutoML は業界特有の特徴量を作れない
  2. データ品質の問題: 前処理の方針は人間が判断すべき
  3. モデルの解釈: なぜその予測になったかの説明
  4. 運用要件: 推論速度、モデルサイズの制約

推奨ワークフロー

1. AutoML でベースライン + 有望なモデル候補を特定
2. 人間がドメイン知識で特徴量を追加・改善
3. AutoML が見つけたモデルをベースに手動チューニング
4. 最終モデルの解釈性と運用性を確認
# 実践例: AutoML の結果を活用
automl = AutoML()
automl.fit(X_train, y_train, task='classification', metric='f1', time_budget=60)

# AutoML が最適と判断したモデルタイプを確認
print(f"推奨モデル: {automl.best_estimator}")

# そのモデルタイプを使って、ドメイン知識を活かした特徴量で再学習
# → AutoML の知見と人間の知見を組み合わせる

まとめ

  • AutoML はモデル選択とパラメータ最適化を自動化する
  • FLAML は高速で使いやすく、まず試すのに最適
  • AutoML はベースライン構築やモデル候補探索に有効
  • ドメイン知識の活用や解釈性の確保は人間の役割
  • AutoML と手動チューニングを組み合わせるのがベストプラクティス

チェックリスト

  • AutoML が自動化する範囲を理解した
  • FLAML の基本的な使い方を把握した
  • AutoML の適切な使い方と限界を理解した
  • AutoML と手動チューニングの組み合わせ方を理解した

次のステップへ

次のレッスンでは、モデルの解釈性について学びます。SHAP や LIME を使って、予測の根拠を説明する方法を身につけましょう。


推定読了時間: 30分