AutoGluon 是亚马逊 AWS 开源的自动化机器学习(AutoML)库,它的目标可以用官方口号一句话讲清——”Fast and Accurate ML in 3 Lines of Code”(3 行代码实现快速且准确的机器学习)。直观地说,它把一名算法工程师做表格预测或时间序列预测时的完整工作流——判断问题类型、清洗特征、挑选模型、调超参、做集成、评估选优——压缩成了一次 fit() 调用。你给它一个带标签的 CSV,它还你一个可以直接部署的预测器。

要理解 AutoGluon 在 AutoML 生态中的位置,可以先看一眼同类工具的演进脉络:弗莱堡大学的 auto-sklearn(2015)和基于遗传编程的 TPOT(2016)代表了第一代”超参数搜索”路线;H2O.ai 的 H2O AutoML(2017)把这一思路工程化成企业级产品;而 AWS 在 2020 年开源的 AutoGluon 则提出了一个反主流的核心论点——与其把算力花在超参数搜索上,不如在固定默认超参下训练一批异构基础模型,再用多层堆叠集成(multilayer stack ensembling)把它们组合起来,后者在论文实验中以低得多的算力拿到了同样甚至更好的精度。这一论点后来被社区广泛验证,AutoGluon 也从表格场景起家,逐步扩展出时间序列与多模态两条产品线,成为目前覆盖任务面最广的开源 AutoML 库之一。

三大预测器:表格、时序、多模态

AutoGluon 的 API 设计围绕”一种数据形态对应一个 Predictor 类”展开,三个预测器共用 fit() / predict() 统一接口。先看总览:

预测器 任务类型 典型场景
TabularPredictor 表格数据的分类、回归、分位数回归 风控评分、转化率预估、房价预测
TimeSeriesPredictor 多步概率性时间序列预测 销量预测、客流预测、容量规划
MultiModalPredictor 文本、图像、表格及其混合 文本分类、图像分类、命名实体识别、语义检索、目标检测

TabularPredictor:表格预测的主力

TabularPredictor 是 AutoGluon 的看家模块,处理”每行一个样本、每列一个特征”的结构化数据。它的使用门槛被压到了极限——指定标签列名,其余全部自动:

from autogluon.tabular import TabularPredictor

# 训练:指定标签列,使用 best 预设
predictor = TabularPredictor(label="class").fit("train.csv", presets="best")

# 预测
predictions = predictor.predict("test.csv")

这一行 fit() 背后发生了什么,是第三节的主题。这里先记住它的能力边界。

主要特点:

  • 问题类型自动推断:标签列是二值就按二分类处理,整数且唯一值较少就按多分类处理,连续值则按回归处理,也可通过problem_type 参数显式指定为 binary、multiclass、regression 或 quantile。
  • 内置异构模型库:从 LightGBM、CatBoost、XGBoost 等梯度提升树,到 NeuralNetTorch、NeuralNetFastAI 等深度模型,再到 TabPFN 等表格基础模型。
  • 模型排行榜透视:一行leaderboard(test_data) 列出每个模型的验证分数、训练耗时、推理耗时与堆叠层级。
  • 数据入口灵活:既可以直接传 CSV 文件路径,也可以传TabularDataset(它是 pandas DataFrame 的子类,所有 DataFrame 方法都可直接使用)。

局限性:

  • 数据需要全量载入内存(pandas 体系),亿级以上行数的单机训练会吃力。
  • 默认黑盒:它替你做的特征处理与模型决策,需要主动查看日志或feature_importance() 才能还原。

典型应用场景:

  • 业务快速原型:从原始数据到可评估模型在一个工作日内闭环。
  • 数据竞赛基线:AWS 官方博客专门演示过用 AutoGluon 3 行代码在 Kaggle 竞赛中进入前 1%。
  • 特征价值筛查:借助feature_importance() 快速判断哪些字段值得深挖。

TimeSeriesPredictor:概率性时序预测

TimeSeriesPredictor 面向”多条独立时间序列的多步未来预测”,与表格预测器最大的差别在于输出形态——它给的不是单点值,而是概率性预测:一个均值列加一组分位列(默认分位数级别为 0.1 到 0.9),也就是说,它不仅告诉你明天大概率是多少,还告诉你”有 90% 的把握落在哪个区间里”。

from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor

data = TimeSeriesDataFrame('https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly/train.csv')

predictor = TimeSeriesPredictor(target='target', prediction_length=48).fit(data)
predictions = predictor.predict(data)

主要特点:

  • 模型谱系横跨基线、统计、树模型与基础模型:从 SeasonalNaive、ETS、Theta 等经典方法,到基于 LightGBM 的 RecursiveTabular / DirectTabular,再到 Chronos-2、Toto-2 等预训练时序基础模型,最后加权集成为 WeightedEnsemble。
  • 验证机制贴合时序特性:默认保留每条序列最后prediction_length 个时间步作为内部验证集,避免用未来预测过去的数据泄露。
  • 预测长度即插即用:prediction_length=48意味着模型能对未来 48 个时间步做出完整预测。

局限性:

  • 只做单变量序列预测:为每条时间序列独立生成预测,不建模不同条目之间的交互——如果需要多变量联动建模或因果推断,AutoGluon 不是答案。

典型应用场景:

  • 分 SKU 或分线路的销量、票量、客流预测:天然是”多条独立序列”的形态。
  • 容量规划与峰值预警:分位数区间直接给出”90% 置信上界”,可以当作资源预留的依据。
  • 异常检测的上游:预测区间之外的观测值即为候选异常。

MultiModalPredictor:文本图像一锅端

MultiModalPredictor(内部代号 AutoMM)是最”重”也最前沿的预测器,把文本、图像、表格列混合的数据集统一交给一个接口。它支持的问题类型相当广,以下五段代码全部来自官方文档首页,覆盖文本分类、图像分类、命名实体识别(NER)、语义匹配(sentence similarity)与目标检测:

from autogluon.multimodal import MultiModalPredictor
from autogluon.core.utils.loaders import load_pd

data_root = 'https://autogluon-text.s3-accelerate.amazonaws.com/glue/sst/'
train_data = load_pd.load(data_root + 'train.parquet')
test_data = load_pd.load(data_root + 'dev.parquet')

predictor = MultiModalPredictor(label='label').fit(train_data=train_data)
predictions = predictor.predict(test_data)
from autogluon.multimodal import MultiModalPredictor
from autogluon.multimodal.utils.misc import shopee_dataset

train_data, test_data = shopee_dataset('./automm_shopee_data')

predictor = MultiModalPredictor(label='label').fit(train_data=train_data)
predictions = predictor.predict(test_data)
from autogluon.multimodal import MultiModalPredictor
from autogluon.core.utils.loaders import load_pd

data_root = 'https://automl-mm-bench.s3.amazonaws.com/ner/mit-movies/'
train_data = load_pd.load(data_root + 'train.csv')
test_data = load_pd.load(data_root + 'test.csv')

predictor = MultiModalPredictor(problem_type="ner", label="entity_annotations")

predictor.fit(train_data)
predictor.evaluate(test_data)

sentence = "Game of Thrones is an American fantasy drama television series created" + \
           "by David Benioff"
prediction = predictor.predict({ 'text_snippet': [sentence]})
from autogluon.multimodal import MultiModalPredictor, utils
import ir_datasets
import pandas as pd

dataset = ir_datasets.load("beir/fiqa/dev")
docs_df = pd.DataFrame(dataset.docs_iter()).set_index("doc_id")

predictor = MultiModalPredictor(problem_type="text_similarity")

doc_embedding = predictor.extract_embedding(docs_df)
q_embedding = predictor.extract_embedding([
  "what happened when the dot com bubble burst?"
])

similarity = utils.compute_semantic_similarity(q_embedding, doc_embedding)
# Install mmcv-related dependencies
!mim install "mmcv==2.1.0"
!pip install "mmdet==3.2.0"

from autogluon.multimodal import MultiModalPredictor
from autogluon.core.utils.loaders import load_zip

data_zip = "https://automl-mm-bench.s3.amazonaws.com/object_detection_dataset/" + \
    "tiny_motorbike_coco.zip"
load_zip.unzip(data_zip, unzip_dir=".")

train_path = "./tiny_motorbike/Annotations/trainval_cocoformat.json"
test_path = "./tiny_motorbike/Annotations/test_cocoformat.json"

predictor = MultiModalPredictor(
  problem_type="object_detection",
  sample_data_path=train_path
)

predictor.fit(train_path)
score = predictor.evaluate(test_path)

pred = predictor.predict({"image": ["./tiny_motorbike/JPEGImages/000038.jpg"]})
from autogluon.multimodal import MultiModalPredictor, utils
import ir_datasets
import pandas as pd

dataset = ir_datasets.load("beir/fiqa/dev")
docs_df = pd.DataFrame(dataset.docs_iter()).set_index("doc_id")

predictor = MultiModalPredictor(problem_type="text_similarity")

doc_embedding = predictor.extract_embedding(docs_df)
q_embedding = predictor.extract_embedding([
  "what happened when the dot com bubble burst?"
])

similarity = utils.compute_semantic_similarity(q_embedding, doc_embedding)
# Install mmcv-related dependencies
!mim install "mmcv==2.1.0"
!pip install "mmdet==3.2.0"

from autogluon.multimodal import MultiModalPredictor
from autogluon.core.utils.loaders import load_zip

data_zip = "https://automl-mm-bench.s3.amazonaws.com/object_detection_dataset/" + \
    "tiny_motorbike_coco.zip"
load_zip.unzip(data_zip, unzip_dir=".")

train_path = "./tiny_motorbike/Annotations/trainval_cocoformat.json"
test_path = "./tiny_motorbike/Annotations/test_cocoformat.json"

predictor = MultiModalPredictor(
  problem_type="object_detection",
  sample_data_path=train_path
)

predictor.fit(train_path)
score = predictor.evaluate(test_path)

pred = predictor.predict({"image": ["./tiny_motorbike/JPEGImages/000038.jpg"]})

自动特征工程:五阶段流水线

特征处理由 AutoMLPipelineFeatureGenerator 统一执行,分五个阶段推进:

阶段 生成器 作用
Stage 1 AsTypeFeatureGenerator 类型转换(如仅含 2 个唯一值的特征转为 boolean)
Stage 2 FillNaFeatureGenerator 缺失值填充
Stage 3 IdentityFeatureGenerator 恒等变换(保留原始数值)
Stage 4 DropUniqueFeatureGenerator 删除唯一值特征
Stage 5 DropDuplicatesFeatureGenerator 删除重复特征

值得一提的是无用特征检测:官方示例中 Symmetry_D8 因所有行取值相同被自动识别并排除——这类特征在推理时甚至无需存在。稀有类也有对应机制:训练集中少于 10 个样本的类别默认被丢弃,示例数据 13 个类别只保留 9 个,可通过 label_count_threshold 调整。

L1 层:异构模型库

默认超参数配置(hyperparameters=’default’)下,AutoGluon 会为每类模型训练一个或多个变体:

{
    'NN_TORCH': [{}],
    'GBM': [{'extra_trees': True, 'ag_args': {'name_suffix': 'XT'}},
            {},
            {'learning_rate': 0.03, 'num_leaves': 128, 'feature_fraction': 0.9,
             'min_data_in_leaf': 3, 'ag_args': {'name_suffix': 'Large', 'priority': 0}}],
    'CAT': [{}],
    'XGB': [{}],
    'FASTAI': [{}],
    'RF': [{'criterion': 'gini', ...}, {'criterion': 'entropy', ...},
           {'criterion': 'squared_error', ...}],
    'XT': [{'criterion': 'gini', ...}, {'criterion': 'entropy', ...},
           {'criterion': 'squared_error', ...}],
}

在官方纽结理论示例(Nature 第 7887 期封面论文数据,10K 训练样本、18 列、目标列为 signature)中,实际训练出 12 个模型,验证集表现如下:

模型 底层框架 验证分数(accuracy) 训练时间 测试分数
WeightedEnsemble_L2 集成 0.966 0.16s 0.9462
LightGBM GBM 0.956 3.82s 0.9456
CatBoost CAT 0.956 19.45s 0.9432
XGBoost XGB 0.955 2.91s 0.9380
NeuralNetTorch NN_TORCH 0.952 252.1s 0.9312
RandomForestEntr RF 0.9499 1.66s 0.9384
LightGBMLarge GBM 0.9499 8.11s 0.9444
ExtraTreesGini XT 0.9469 1.24s 0.9360
LightGBMXT GBM 0.9459 4.21s 0.9320
RandomForestGini RF 0.9449 1.41s 0.9352
ExtraTreesEntr XT 0.9429 1.21s 0.9358
NeuralNetFastAI FASTAI 0.9399 8.2s 0.9292

这张表里藏着 AutoGluon 论文的全部论点:最优单模型 LightGBM 验证分 0.956、耗时不到 4 秒;最贵的 NeuralNetTorch 烧了 252 秒却只排第四。任何一个单模型都不是”最强”,但把它们组合起来,WeightedEnsemble_L2 的验证分冲到 0.966,测试分 0.9462 稳压所有单模型——异构集成的收益不是玄学,是可以在排行榜上逐行验证的事实。整个流水线总训练耗时 306.71 秒,估计推理吞吐量约 3950 行/秒。

L2 层:加权集成怎么算

WeightedEnsemble_L2 的权重不是拍脑袋分配的,而是在验证集上通过贪心搜索为每个 L1 模型寻找非负权重组合,目标是最大化集成后的验证分数。上例的最终权重为:

Ensemble Weights: {
    'ExtraTreesGini': 0.417,
    'NeuralNetFastAI': 0.208,
    'RandomForestEntr': 0.125,
    'XGBoost': 0.125,
    'LightGBM': 0.083,
    'CatBoost': 0.042
}

注意一个细节:权重最大的不是验证分最高的 LightGBM(0.083)或 CatBoost(0.042),而是排在中游的 ExtraTreesGini(0.417)。这正是集成学习的精髓——权重反映的是”边际贡献”而非”单项成绩”:树模型家族彼此高度相关,一个 LightGBM 已经吃掉了大部分梯度提升能提供的信号,再加一个 CatBoost 边际增益有限;而 ExtraTrees 与神经网络的错误模式差异大,反而能补上集成里缺的那一块拼图。堆叠层数也并非只能两层,preset 更高时可以继续堆 L3、L4,用下层模型的预测作为上层模型的输入特征。

基础模型时代:v1.6 的范式迁移

v1.6 版本的一个显著变化是表格基础模型(Tabular Foundation Models)进入默认武器库:extreme preset 会在 10 万样本以下的数据集上启用 Nori、TabICLv2、TabDPT-Turbo 三个在 TabArena 上元学习得到的基础模型(均可免费商用);noncommercial preset 则进一步加入 Prior Labs 的前沿模型 TabPFN-3(商用需单独许可)。时序侧同样完成了基础模型化——Chronos-2 与 Toto-2 作为预训练模型参与集成,从 HuggingFace Hub 下载权重(建议设置 HF_TOKEN 提升下载速率)。这意味着 AutoGluon 的模型选择范围,已经从”经典算法”扩展到”经典算法 + 基础模型”的全谱系。

实战上手:从安装到预测

安装

AutoGluon 支持 Python 3.10–3.13,覆盖 Linux、macOS 与 Windows,一条命令完成基础安装:

pip install autogluon

若要启用 extreme preset 的表格基础模型,需要额外安装可选依赖 pip install autogluon.tabular[tabarena];GPU 支持与 Conda 安装方式见官方安装指南。

表格任务完整流程

以下示例用纽结理论数据集做端到端演示,从 URL 加载数据、训练、预测、评估到加载已保存模型,覆盖日常工作的完整闭环:

from autogluon.tabular import TabularDataset, TabularPredictor

# 加载数据(可直接从 URL 加载)
data_url = 'https://raw.githubusercontent.com/mli/ag-docs/main/knot_theory/'
train_data = TabularDataset(f'{data_url}train.csv')
test_data = TabularDataset(f'{data_url}test.csv')

label = 'signature'

# 训练(无需指定其他参数)
predictor = TabularPredictor(label=label).fit(train_data)

# 预测(需删除目标列)
y_pred = predictor.predict(test_data.drop(columns=[label]))

# 评估
predictor.evaluate(test_data)

# 模型排行榜
predictor.leaderboard(test_data)

# 加载已保存的模型
predictor = TabularPredictor.load("AutogluonModels/ag-20260815_095545")

几个值得留意的运行细节:默认自动切分 10% 作为验证集(示例中训练 8985 行、验证 999 行);模型自动保存到带时间戳的 AutogluonModels/ag-<时间戳> 目录;fit() 支持 time_limit 参数(如 fit(…, time_limit=60))控制训练预算——时间给得越足通常性能越好,给得太少则来不及训练和集成足够多的模型。评估输出:

predictor.evaluate(test_data)
# {'accuracy': 0.9462,
#  'balanced_accuracy': np.float64(0.737313274186847),
#  'mcc': 0.9340649755767062}

leaderboard() 返回的 DataFrame 是调优时的主战场,各列含义如下:

列名 含义
model 模型名称
score_test / score_val 测试集 / 验证集分数
eval_metric 评估指标(如 accuracy)
pred_time_test / pred_time_val 测试 / 验证预测耗时
fit_time 训练耗时
pred_time_test_marginal 等 边际耗时(该模型对集成整体的增量成本)
stack_level 堆叠层级(L1 模型为 1,集成为 2)
can_infer 是否可用于推理
fit_order 训练顺序

时间序列任务完整流程

时序预测的第一步是把数据整理成 TimeSeriesDataFrame 认识的长格式——至少三列:序列 ID(item_id,int 或 str)、时间戳(timestamp)、目标值(target),列名可自定义但在构造时需指定。它同样继承自 pandas DataFrame,所有 DataFrame 方法可用。以 M4 竞赛的小时级子集为例(148,060 行、200 条序列,序列长度中位数 700,频率自动推断为小时):

import pandas as pd
from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor

df = pd.read_csv("https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly_subset/train.csv")

train_data = TimeSeriesDataFrame.from_data_frame(
    df,
    id_column="item_id",
    timestamp_column="timestamp"
)
predictor = TimeSeriesPredictor(
    prediction_length=48,       # 预测长度(预测视野)
    path="autogluon-m4-hourly", # 模型保存路径
    target="target",            # 目标列名
    eval_metric="MASE",         # 评估指标
)

predictor.fit(
    train_data,
    presets="medium_quality",  # 质量预设
    time_limit=600,            # 训练时间限制(秒)
)

fit 内部自动敲定的配置(从训练日志可见)包括:开启集成(enable_ensemble=True)、轻量超参档(hyperparameters=’light’)、1 个验证窗口、分位数级别 0.1–0.9、随机种子 123 等:

{'enable_ensemble': True, 'hyperparameters': 'light',
 'num_val_windows': 1, 'quantile_levels': [0.1, ..., 0.9],
 'random_seed': 123, 'refit_every_n_windows': 1,
 'refit_full': False, 'skip_model_selection': False, 'verbosity': 2}

预测与评估:

predictions = predictor.predict(train_data)

输出是一个包含 mean 列和 9 个分位列(0.1–0.9)的 DataFrame。分位数的读法举例:若 0.1 分位数等于 500.0,表示模型认为目标值低于 500.0 的概率为 10%。也可以直接可视化:

import matplotlib.pyplot as plt

test_data = TimeSeriesDataFrame.from_path(
    "https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly_subset/test.csv")

predictor.plot(test_data, predictions,
               quantile_levels=[0.1, 0.9],
               max_history_length=200,
               max_num_item_ids=4)

最后看排行榜(教程实测,600 秒预算下实际训练仅用 53.85 秒;分数为”负 MASE”,越高越好):

排名 模型 score_test score_val
0 WeightedEnsemble -0.740067 -0.820293
1 Chronos2 -0.765236 -0.877750
2 RecursiveTabular -0.862797 -0.933874
3 Toto2 -0.890937 -0.901884
4 SeasonalNaive -1.022854 -1.216909
5 DirectTabular -1.648202 -1.372871
6 ETS -1.806136 -1.966098
7 Theta -1.905367 -2.142551

集成权重同样值得一看:Chronos2 拿走 0.43,Toto2 拿走 0.27,RecursiveTabular 拿走 0.24,统计基线(ETS、SeasonalNaive、Theta)与 DirectTabular 各只有 0.01–0.03。两个预训练基础模型与一个树模型撑起了几乎全部集成权重——时序场景的”基础模型时代”已经真实到来:

{'Chronos2': 0.43, 'DirectTabular': 0.03, 'ETS': 0.01,
 'RecursiveTabular': 0.24, 'SeasonalNaive': 0.01, 'Theta': 0.01, 'Toto2': 0.27}

Presets:精度与速度的八档旋钮

不知道怎么调参时,presets 是唯一的必懂参数。它把”训练多久、训多少模型、要不要堆更多层”打包成档位,未指定时默认 medium:

Preset 说明
extreme 有 GPU 时的首选,追求最佳结果。在 10 万样本以下数据集上显著超过 best,启用 TabArena 元学习的表格基础模型(Nori、TabICLv2、TabDPT-Turbo),均可免费商用,需 pip install autogluon.tabular[tabarena]
noncommercial 在 extreme 基础上加入 TabPFN-3(Prior Labs 前沿表格基础模型),效果更强,但商用需 TabPFN-3 许可证
best 无 GPU 时使用,最大化精度,适用于竞赛
best_v150 质量优于 best 且训练快 5 倍以上
high 强精度 + 快速推理
high_v150 质量优于 high 且训练快 5 倍以上
good 良好精度 + 极快推理
medium 训练快速,适合初始原型开发

为什么选择 AutoGluon

AutoGluon 解决的核心痛点是:建模能力的稀缺性与建模需求的普遍性之间的落差。回想没有 AutoML 时的典型困境:业务方给一个 CSV 问”能不能预测一下”,分析师要么手工写一套”读数 → 清洗 → 划分 → 训三个模型 → 挑最好的”流程,每个环节都可能引入偏差;要么因排期直接放弃。AutoGluon 的价值点可以归结为四条:

  • 工程效率:从数据到可用模型的时间从数天压缩到一次fit(),且结果可复现(固定随机种子、模型自动落盘)。
  • 决策质量:多模型异构集成在论文与 TabArena 基准上反复验证优于”手工挑一个最强模型”的常见做法。
  • 知识平权:不熟悉 LightGBM 调参细节的业务工程师,也能拿到接近专家水准的基线,把精力留给数据理解与特征构思。
  • 透明可控:排行榜把每个模型的分数、耗时、堆叠层级全部摊开,”自动”不等于”黑箱到底”。

两个具体场景可以说明工作方式的差异。

  • 场景一:区域客流预测原型。传统思路是:先选一个熟悉的模型(比如 Prophet 或 SARIMA),手工做季节性分解、调周期参数,两三天后得到一个单点预测,置信区间要么没有要么很粗糙。AutoGluon 的做法是:把各区域的历史客流量整理成item_id + timestamp + target 的长表,TimeSeriesPredictor(prediction_length=24) 一行训练,得到含1–0.9 分位的概率预测;排行榜顺手告诉你 Chronos-2、Toto-2 这些基础模型在你数据上的真实表现。结论:原型当天闭环,且分位数区间可以直接对接”峰值预警阈值”这类下游需求——单点预测做不到这一点。
  • 场景二:数据竞赛入场基线。传统思路是:比赛开始先花几天搭 pipeline、调 LightGBM,基线分数还不一定有竞争力。AutoGluon 的做法是:TabularPredictor(label=target, eval_metric=”auc”).fit(train, presets=”best”)半天拿到一个堆叠集成基线(官方博客演示过 3 行代码进入 Kaggle 前 1%),再围绕它做特征工程和伪标签等增量优化。结论:把最机械的”模型选型与组合”环节外包给工具,人力聚焦在竞赛真正的胜负手——特征与数据理解上。

生态、部署与适用边界

基准与学术生态

AutoGluon 团队同时维护着一组配套基准设施:TabArena(表格模型的在线活基准,extreme preset 的基础模型即元学习自它)、TabRepo(大规模表格模型评估仓库)与 fev-bench(时序预测基准)。学术侧,AutoGluon 的方法论发表于 NeurIPS、ICML、AutoML Conf、TMLR 等会议与期刊,近期论文方向包括 Chronos-2(通用时序预测)与 MLZero(多智能体端到端 ML 自动化)。社区侧,项目以 Apache 2.0 许可开源,累计超过 3000 次提交,活跃度常年位居 AutoML 项目前列,并有 Discord 社区支持。

与同类工具对比

工具 发布方 / 年份 支持任务 核心技术路线 主要亮点
AutoGluon AWS / 2020 表格、时序、多模态 多层堆叠集成 + 基础模型 任务覆盖面最广,集成精度高
H2O AutoML H2O.ai / 2017 表格为主 超参搜索 + Stacked Ensemble 企业级平台,Java 后端易部署
auto-sklearn 弗莱堡大学 / 2015 表格 贝叶斯超参优化 + 元学习 学术正统,sklearn 生态无缝
FLAML 微软 / 2020 表格、时序(AutoTS) 低成本搜索(frugal search) 轻量,搜索预算友好
TPOT 开源社区 / 2016 表格 遗传编程 pipeline 搜索 可导出最终 pipeline 的 Python 代码

粗略的选型直觉:纯表格且追求极致精度选 AutoGluon;企业 Java 环境与平台化需求看 H2O;sklearn 工作流内的轻量自动化用 auto-sklearn;预算极小、要快出结果用 FLAML。

适用边界

任何工具都有它的”不适用清单”,AutoGluon 至少有这些:

  • 超大规模数据:全内存 pandas 体系决定了它不是 Spark / 分布式场景的替代品——数亿行的训练请交给分布式框架,AutoGluon 适合在采样后的数据上做快速迭代。
  • 多变量时序与因果问题:TimeSeriesPredictor 为每条序列独立建模,不捕捉条目间交互(如多条线路之间的运力联动),也不做因果推断。
  • 深度定制与实时性苛求场景:AutoGluon 的价值在于”自动化带来的起点”,当业务要求毫秒级在线推理或非常规的损失函数、结构定制时,最终的精修仍需工程师下场。
  • 多模态的算力门槛:无 GPU 环境下 AutoMM 的实用性大打折扣,安装依赖的复杂度也是真实成本。

参考文献 / 扩展阅读

  • AutoGluon Team, AutoGluon GitHub 仓库,https://github.com/autogluon/autogluon
  • AutoGluon 官方文档(6),https://auto.gluon.ai/stable/index.html
  • Tabular Quick Start 教程,https://auto.gluon.ai/stable/tutorials/tabular/tabular-quick-start.html
  • Time Series Forecasting Quick Start 教程,https://auto.gluon.ai/stable/tutorials/timeseries/forecasting-quick-start.html
  • Erickson et al., “AutoGluon-Tabular: Robust and Accurate AutoML for Structured Data”, 2020, arXiv:2003.06505
  • TabArena: Table Machine Learning Arena, https://tabarena.ai
0