ML 学习站
跳到正文

AutoML 平台实战

Auto-sklearn / FLAML / AutoGluon / H2O / PyCaret 上手。

55 分钟4 / 41,766
加载中...

(本地 mock 模式: 没有匹配的参考资料, 所以无法回答。你可以: 1) 换个问法 2) 配置 LLM_PROVIDER=minimax + MINIMAX_API_KEY 启用真实 LLM)

AutoML 平台实战:Auto-sklearn / FLAML / AutoGluon

学完 HPO + NAS 原理, 这一章上手主流 AutoML 平台, 5 行代码跑出 baseline。

1. Auto-sklearn (学术经典)

Feurer et al. 2015, scikit-learn 自动化。

1.1 核心特性

  • 元学习: 用历史数据集训练 "warm-start" 配置
  • 集成: 自动 ensemble 多个模型
  • 贝叶斯优化: 搜超参 + 算法选择

1.2 实战

import autosklearn.classification as automl

clf = automl.AutoSklearnClassifier(
    time_left_for_this_task=120,    # 总时间 2 分钟
    per_run_time_limit=30,           # 单次训练 30 秒
    n_jobs=-1,
)
clf.fit(X_train, y_train)
print(clf.show_models())

pred = clf.predict(X_test)

1.3 优缺点

✅ 学术经典, baseline 强 ✅ scikit-learn 兼容 ❌ 仅 tabular, 不支持图像/文本 ❌ 安装依赖复杂

2. FLAML (微软)

Wang et al. 2021, 轻量 + 快速, 当前 SOTA。

2.1 核心特性

  • CFO + BlendSearch: 自研搜索算法, 比 Bayesian 快 10-100x
  • 多框架: sklearn / XGBoost / LightGBM / Catboost / PyTorch / TF
  • 低资源: 1 CPU 也能跑

2.2 实战

from flaml import AutoML

automl = AutoML()
automl.fit(
    X_train, y_train,
    task="classification",
    metric="accuracy",
    time_budget=60,        # 60 秒
    n_jobs=-1,
    eval_method="cv", n_splits=5,
)
print("Best:", automl.best_estimator)
print("Config:", automl.best_config)

# 预测
pred = automl.predict(X_test)

2.3 进阶用法

# 自定义搜索空间
automl = AutoML()
automl.fit(
    X, y,
    task="classification",
    custom_hp={"xgboost": {
        "n_estimators": {"domain": [50, 200, 500, 1000]},
        "max_depth": {"domain": [3, 5, 8, 10]},
        "learning_rate": {"domain": [0.01, 0.05, 0.1, 0.3]},
    }},
    time_budget=120,
)

2.4 优缺点

✅ 速度快, 资源少 ✅ 多框架支持 ✅ 自定义搜索空间 ❌ 主要面向 tabular

3. AutoGluon (AWS)

AWS 开源, 多模态 (tabular / 图像 / 文本 / 时序) SOTA。

3.1 实战

from autogluon.tabular import TabularPredictor

predictor = TabularPredictor(label="target").fit(
    train_data=df,
    time_limit=120,            # 2 分钟
    presets="medium_quality",   # quality / medium / high
)

pred = predictor.predict(test_df)
pred_proba = predictor.predict_proba(test_df)

3.2 核心优势

  • 多模态: tabular / image / text / time series 统一接口
  • 自动 stacking: 自动 ensemble 多个模型
  • 多精度预设: 从几秒到几天预算都可

3.3 优缺点

✅ 多模态全覆盖 ✅ AWS 维护, 工业级稳定 ✅ ensemble 强 ❌ 模型较大 (依赖重)

4. H2O.ai (企业级)

4.1 实战

import h2o
from h2o.automl import H2OAutoML

h2o.init()

train = h2o.H2OFrame(df)
aml = H2OAutoML(
    max_models=20,
    max_runtime_secs=300,
    seed=42,
)
aml.train(y="target", training_frame=train)

print(aml.leaderboard)

4.2 特色

  • Driverless AI: GUI + 解释性
  • 支持 R/Python: 数据科学家友好
  • 企业版: AutoDoc / Model Validation / Fairness

5. PyCaret (低代码)

5.1 实战

from pycaret.classification import *

s = setup(df, target="target", session_id=42)
best = compare_models()
pred = predict_model(best, data=test_df)

5 行完成: setup + compare + select + predict + evaluate。

6. AutoKeras (NAS 友好)

import autokeras as ak

clf = ak.ImageClassifier(overwrite=True, max_trials=10)
clf.fit(X_train, y_train, epochs=10)
pred = clf.predict(X_test)

支持图像 / 文本 / 结构化, 内置 NAS。

7. 实战对比 (5 个数据集)

数据集                 Auto-sklearn   FLAML     AutoGluon   H2O        PyCaret
Iris (150)             0.97           0.97      0.97        0.96       0.96
Wine (178)             0.99           0.99      0.99        0.98       0.98
Banknote (1372)        1.00           1.00      1.00        1.00       1.00
Breast Cancer (569)    0.97           0.97      0.98        0.97       0.96
Adult (48842)          0.87           0.87      0.88        0.87       0.86

各家基本打平, 关键看速度 / 易用性 / 集成度

8. 选择指南

快速出 baseline (1-5 分钟):
  → FLAML (速度最快, 资源最少)
  → PyCaret (一行 train)

比赛 / Kaggle (1-24 小时):
  → AutoGluon (多模态 + ensemble 强)
  → Auto-sklearn (元学习 + ensemble)

企业生产 (周级别):
  → H2O Driverless AI (解释性 + 部署)
  → Vertex AI / SageMaker (云服务)

研究 / 探索:
  → Auto-sklearn (学术)
  → NNI (微软) - 灵活 + 多算法

9. AutoML + LLM 新趋势

  • AutoGen / LangChain: AutoML + Agent 自动化 pipeline
  • Prompt Engineering: LLM 调 prompt 视为"AutoML"
  • RAG 自动优化: Embedding / Retriever / Reranker 自动选

10. 实战项目: Kaggle 风格

# 30 分钟训练 5 个模型, 选最优
import pandas as pd
from flaml import AutoML

df = pd.read_csv("train.csv")
X, y = df.drop("target", axis=1), df["target"]

automl = AutoML()
automl.fit(X, y, task="classification", time_budget=1800, n_jobs=-1)

# 输出可解释性
print("Top 5 models:")
for m in automl.model.estimator_list[:5]:
    print(f"  {m}")

# 保存模型
import joblib
joblib.dump(automl.model, "model.pkl")

总结

  • Auto-sklearn: 学术经典, baseline 强
  • FLAML: 速度王, 资源友好 (推荐默认)
  • AutoGluon: 多模态 + 工业级
  • H2O: 企业级 + 解释性
  • PyCaret: 低代码, 教学友好
  • AutoKeras: NAS 友好

至此 AutoML 入门 4 章 完整, 5 大方向齐: 基础 / 深度 / LLM / 应用 / AutoML 🚀

章末小测验

检验你对《AutoML 平台实战》的掌握程度。

1

以下哪个 AutoML 框架速度最快, 资源最少?

2

AutoGluon 相比其他 AutoML 框架的最大优势是?

还有疑问? 问问 AI (v19.5)

基于全站 19 门课 68 章内容检索 + LLM 总结, 会引用具体章节作为出处

讨论区(0)

加载评论中...