AutoGluon多模态表格数据实战:融合结构化、文本与图像特征

AutoGluon多模态表格数据实战:融合结构化、文本与图像特征

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

前言

在机器学习实践中,我们经常会遇到包含多种数据类型的数据集。传统方法通常需要针对不同类型的数据分别建模,然后将结果进行融合。AutoGluon作为一款强大的自动化机器学习工具,能够自动处理包含结构化数据、文本和图像的多模态数据,极大地简化了建模流程。

数据集介绍

本教程使用PetFinder数据集,这是一个关于动物领养预测的公开数据集。数据集包含:

  • 结构化数据:动物年龄、品种、颜色等特征
  • 文本数据:动物描述信息
  • 图像数据:动物照片

我们的目标是预测动物的"AdoptionSpeed"(领养速度),这是一个分为5个等级的分类问题。

环境准备

开始前需要确保:

  1. 已安装AutoGluon最新版本
  2. 拥有GPU环境(用于训练文本和图像模型)
  3. 安装了适当CUDA版本的PyTorch

数据加载与预处理

1. 下载并解压数据集

数据集以zip格式提供,包含CSV文件和图像目录:

download_dir = './ag_petfinder_tutorial'
zip_file = 'https://automl-mm-bench.s3.amazonaws.com/petfinder_kaggle.zip'

from autogluon.core.utils.loaders import load_zip
load_zip.unzip(zip_file, unzip_dir=download_dir)

2. 数据探索

解压后目录结构如下:

  • train.csv/dev.csv:训练/验证数据
  • train_images/test_images:图像文件目录

3. 图像列预处理

原始数据中每行可能包含多张图像,我们只取第一张:

train_data[image_col] = train_data[image_col].apply(lambda ele: ele.split(';')[0])
test_data[image_col] = test_data[image_col].apply(lambda ele: ele.split(';')[0])

然后更新图像路径为绝对路径:

def path_expander(path, base_folder):
    path_l = path.split(';')
    return ';'.join([os.path.abspath(os.path.join(base_folder, path)) for path in path_l])

train_data[image_col] = train_data[image_col].apply(lambda ele: path_expander(ele, base_folder=dataset_path))

特征元数据构建

AutoGluon能自动识别特征类型,但对于图像路径需要显式指定:

from autogluon.tabular import FeatureMetadata
feature_metadata = FeatureMetadata.from_df(train_data)
feature_metadata = feature_metadata.add_special_types({image_col: ['image_path']})

模型训练配置

AutoGluon提供了专门针对多模态数据的预设配置:

from autogluon.tabular.configs.hyperparameter_configs import get_hyperparameter_config
hyperparameters = get_hyperparameter_config('multimodal')

该配置包含:

  • 多种表格模型
  • 基于Electra的文本模型
  • 基于ResNet的图像模型

训练与评估

使用TabularPredictor进行训练:

from autogluon.tabular import TabularPredictor
predictor = TabularPredictor(label=label).fit(
    train_data=train_data,
    hyperparameters=hyperparameters,
    feature_metadata=feature_metadata,
    time_limit=900  # 15分钟
)

训练完成后查看模型表现:

leaderboard = predictor.leaderboard(test_data)

性能优化建议

  1. 数据采样:对于大型多模态数据集,建议先采样小批量数据测试模型效果
  2. 时间预算:增加训练时间通常能提升模型性能
  3. 资源分配:确保有足够GPU内存处理图像和文本模型

总结

通过本教程,我们学习了如何使用AutoGluon处理包含结构化数据、文本和图像的多模态数据。AutoGluon自动完成了特征工程、模型选择和超参数调优等复杂步骤,让我们能够专注于解决业务问题而非技术细节。

对于希望进一步探索AutoGluon的读者,建议尝试:

  1. 使用完整数据集训练
  2. 调整时间预算观察性能变化
  3. 尝试不同的预设配置

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
发出的红包

打赏作者

徐举跃

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

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

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

打赏作者

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

抵扣说明:

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

余额充值