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 が有効な場面
- ベースライン構築: 短時間で良いモデルの目安を得る
- モデル候補の探索: どのアルゴリズムが有効か調べる
- 時間が限られる場合: 手動チューニングの時間がない
- PoC(概念実証): 素早くビジネス価値を示す
AutoML だけでは不十分な場面
- ドメイン知識の活用: AutoML は業界特有の特徴量を作れない
- データ品質の問題: 前処理の方針は人間が判断すべき
- モデルの解釈: なぜその予測になったかの説明
- 運用要件: 推論速度、モデルサイズの制約
推奨ワークフロー
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分