AutoGluon Tabular 表格数据建模深度解析

AutoGluon Tabular 表格数据建模深度解析

autogluon AutoGluon: AutoML for Image, Text, Time Series, and Tabular Data autogluon 项目地址: https://gitcode.com/gh_mirrors/au/autogluon

概述

AutoGluon 是一个强大的自动化机器学习工具库,其 Tabular 模块专门用于处理结构化表格数据。本文将深入探讨 AutoGluon Tabular 的高级功能,帮助读者掌握如何通过精细调参和模型集成来提升预测性能。

数据准备与基础使用

首先我们需要加载数据并定义预测任务。这里我们使用人口普查数据集,预测个人的职业(occupation)——这是一个多分类问题:

from autogluon.tabular import TabularDataset, TabularPredictor
import numpy as np

# 加载并采样数据
train_data = TabularDataset('census_train.csv')
train_data = train_data.sample(n=1000, random_state=0)  # 采样以加快演示速度

# 定义标签列
label = 'occupation'
test_data = TabularDataset('census_test.csv')
y_test = test_data[label]
test_data_nolabel = test_data.drop(columns=[label])

# 指定评估指标
metric = 'accuracy'

超参数调优详解

虽然 AutoGluon 默认配置就能提供不错的效果,但通过超参数调优可以进一步提升模型性能。以下是关键注意事项:

  1. 验证数据策略

    • 可以显式指定验证数据集(tuning_data
    • 不指定时,AutoGluon 会自动从训练集中智能划分验证数据
    • 通过holdout_frac控制验证集比例
  2. 超参数搜索空间

    • 可以为每种模型类型定义特定的超参数
    • 支持固定值和搜索空间两种设置方式
    • 未指定的参数使用 AutoGluon 默认值
from autogluon.common import space

# 神经网络超参数配置
nn_options = {
    'num_epochs': 10,
    'learning_rate': space.Real(1e-4, 1e-2, default=5e-4, log=True),
    'activation': space.Categorical('relu', 'softrelu', 'tanh'),
    'dropout_prob': space.Real(0.0, 0.5, default=0.1)
}

# LightGBM超参数配置
gbm_options = {
    'num_boost_round': 100,
    'num_leaves': space.Int(lower=26, upper=66, default=36)
}

# 综合超参数配置
hyperparameters = {
    'GBM': gbm_options,
    'NN_TORCH': nn_options
}

# 执行训练
predictor = TabularPredictor(label=label, eval_metric=metric).fit(
    train_data,
    time_limit=120,
    hyperparameters=hyperparameters,
    hyperparameter_tune_kwargs={
        'num_iterations': 5,
        'scheduler': 'local',
        'searcher': 'auto'
    }
)

模型集成策略

AutoGluon 提供了两种强大的模型集成方法:

  1. Bagging(袋装)

    • 通过num_bag_folds控制K折交叉验证次数
    • 增加num_bag_sets可以重复bagging过程以降低方差
  2. Stacking(堆叠)

    • 通过num_stack_levels控制堆叠层级
    • 层级越高,模型越复杂,训练时间越长
# 使用bagging和stacking的示例
predictor = TabularPredictor(label=label, eval_metric=metric).fit(
    train_data,
    num_bag_folds=5, 
    num_bag_sets=1,
    num_stack_levels=1,
    hyperparameters={
        'NN_TORCH': {'num_epochs': 2},
        'GBM': {'num_boost_round': 20}
    }
)

更简单的方法是使用auto_stack=True,让AutoGluon自动选择最优的集成策略:

predictor = TabularPredictor(label=label, eval_metric='balanced_accuracy').fit(
    train_data, 
    auto_stack=True,
    hyperparameters={
        'FASTAI': {'num_epochs': 10},
        'GBM': {'num_boost_round': 200}
    }
)

决策阈值校准

对于二分类问题,调整预测决策阈值可以显著提升某些指标(如F1分数、平衡准确率)的表现:

# 校准前评估
print(f'校准前阈值={predictor.decision_threshold}:')
scores = predictor.evaluate(test_data)

# 执行校准
calibrated_threshold = predictor.calibrate_decision_threshold()
predictor.set_decision_threshold(calibrated_threshold)

# 校准后评估
print(f'校准后阈值={predictor.decision_threshold}:')
scores_calibrated = predictor.evaluate(test_data)

阈值校准通常需要在不同指标间进行权衡。AutoGluon支持为特定指标优化阈值:

for metric_name in ['f1', 'balanced_accuracy', 'mcc']:
    calibrated_threshold = predictor.calibrate_decision_threshold(metric=metric_name)
    # 使用校准后的阈值进行评估...

最佳实践建议

  1. 优先使用默认配置:AutoGluon的默认配置已经过优化,通常能提供很好的效果
  2. 逐步调优:先尝试presets="best_quality",再考虑手动调参
  3. 资源权衡:bagging和stacking会显著增加训练时间和资源消耗
  4. 评估策略:始终在独立的测试集上评估模型性能
  5. 自动化优势:尽可能使用auto_stack等自动化功能

通过合理运用这些高级功能,您可以充分发挥AutoGluon Tabular的潜力,构建出性能优异的表格数据预测模型。

autogluon AutoGluon: AutoML for Image, Text, Time Series, and Tabular Data autogluon 项目地址: https://gitcode.com/gh_mirrors/au/autogluon

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘童为Edmond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值