AutoGluon 实战:用 AutoMM 深度表格模型与树模型集成预测加州房价(Kaggle 竞赛复现指南)

发布时间:2026/9/15 20:13:32

AutoGluon 实战:用 AutoMM 深度表格模型与树模型集成预测加州房价(Kaggle 竞赛复现指南) AutoGluon 实战用 AutoMM 深度表格模型与树模型集成预测加州房价Kaggle 竞赛复现指南【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon本文以 AutoGluon 仓库中的 Kaggle 加州房价预测实战示例examples/automm/kaggle_california_house_price/README.md为核心系统讲解如何将 AutoMMAutoGluon-Multimodal内置的深度表格模型FT-Transformer / MLP通过AG_AUTOMM桥接进 AutoGluon-Tabular并与 LightGBM、CatBoost 等树模型组成加权集成、5 折 Bagging 与 5 折 Stacking 三种集成方案。读完本文你将掌握一个表格 文本混合特征回归任务的完整竞赛工作流包括数据下载与预处理、AutoMM 双模式超参数配置、三种集成模式的选择依据以及提交文件的生成逻辑。任务背景为什么要用多模态思路做表格回归加州房价预测Kaggle: California House Price Competition是一个典型的混合型回归任务目标是依据房屋信息预测成交价Sold Price。从仓库示例描述看数据特征不仅包含卧室数量、居住面积等数值字段还包含**位置、附近学校、卖家描述seller summary**等类别型与文本型信息。测试集中的房屋在训练集之后售出属于时序切分场景对模型的泛化能力提出了更高要求。正因如此示例没有把数据当作纯表格来处理而是同时启用AutoMM 中的深度表格模型处理数值与类别特征HuggingFace 文本骨干网络处理卖家描述等文本列融合模块fusion_mlp / fusion_transformer把各模态表示融合后预测房价。这正是 AutoGluon 的独特之处MultiModalPredictor天然支持数值 类别 文本 图片的混合输入因此即使是一个 Kaggle 房价竞赛也能以多模态方式建模并把深度模型与经典树模型在同一框架内做自动集成。数据准备与下载示例脚本默认从本地目录california-house-prices读取数据包含train.csv、test.csv与sample_submission.csv。数据需先从 Kaggle 下载并解压需 Kaggle CLI 与账号认证kaggle competitions download -c california-house-prices unzip california-house-prices.zip -d california-house-prices若数据已下载到其他路径可通过--data_path参数指定python3 example_kaggle_house.py --data_path /path/to/california-house-prices五种实验模式从单模型到深度集成仓库 README.md 给出了五种可复现的实验命令覆盖单个深度模型 → 深度模型自集成 → 深度模型 树模型混合集成的完整路径# Single MultiModalPredictor (MLP) python3 example_kaggle_house.py --automm-mode mlp --mode single 21 | tee -a logs/automm_single_mlp.txt # Single MultiModalPredictor (FT-Transformer For Tabular) python3 example_kaggle_house.py --automm-mode ft-transformer --mode single 21 | tee -a logs/automm_single_ft.txt # MultiModalPredictor 5-Fold Bagging python3 example_kaggle_house.py --automm-mode ft-transformer --mode automm_bag5 21 | tee -a logs/automm_ft_bag5.txt # MultiModalPredictor other Tree Models (Weighted Ensemble) python3 example_kaggle_house.py --automm-mode ft-transformer --mode weighted 21 | tee -a logs/automm_ft_weighted.txt # MultiModalPredictor other Tree Models (5-fold Stack Ensemble) python3 example_kaggle_house.py --automm-mode ft-transformer --mode stack5 21 | tee -a logs/automm_ft_stack5.txt各模式的含义与实现要点对应脚本 example_kaggle_house.py 中的分支逻辑模式使用的 Predictor集成策略实现要点singleMultiModalPredictor无单个模型直接用predictor.fit(train_df, hyperparametersautomm_hyperparameters)训练single_bag5TabularPredictorAutoMM 模型 5 折 Baggingnum_bag_folds5, num_stack_levels0超参数中只保留AG_AUTOMMweightedTabularPredictor加权集成含树模型num_bag_foldsNone, num_stack_levelsNonestack5TabularPredictor5 折 Stacking 集成num_bag_folds5, num_stack_levels1automm_bag5TabularPredictor同single_bag5命令行别名脚本内与single_bag5共用同一分支注意README 中--mode automm_bag5与脚本 argparse 的合法取值stack5 / weighted / single / single_bag5略有出入实际运行时可使用脚本支持的single_bag5效果一致。命令行参数逐项解读脚本顶部定义了完整的参数体系理解它们才能灵活调整实验parser.add_argument(--mode, choices[stack5, weighted, single, single_bag5], defaultweighted, helpstack5 means 5-fold stacking. weighted means weighted ensemble. single means use a single model. single_bag5 means 5-fold bagging via the AutoMM model.) parser.add_argument(--automm-mode, choices[ft-transformer, mlp], defaultft-transformer, helpFusion model in AutoMM.) parser.add_argument(--text-backbone, defaultgoogle/electra-small-discriminator) parser.add_argument(--cat-as-text, defaultFalse) parser.add_argument(--data_path, typestr, defaultcalifornia-house-prices) parser.add_argument(--seed, typeint, default123) parser.add_argument(--exp_path, defaultNone) parser.add_argument(--with_tax_values, default1, typeint)参数默认值作用--modeweighted集成策略single/single_bag5/weighted/stack5--automm-modeft-transformerAutoMM 融合模型类型ft-transformer或mlp--text-backbonegoogle/electra-small-discriminator文本骨干网络HuggingFace checkpoint--cat-as-textFalse是否将类别特征转为文本送入文本模型对应data.categorical.convert_to_text--data_pathcalifornia-house-prices数据目录--seed123随机种子同时设置 torch / numpy / random--exp_path自动生成输出目录默认形如automm_kaggle_house_{mode}_{automm_mode}_cat_to_text{cat_as_text}_{text_backbone}--with_tax_values1是否保留房产税相关特征0 则删除特征工程与标签处理preprocess函数见 example_kaggle_house.py完成了五步关键处理其中对数变换对右偏的价格类特征至关重要def preprocess(df, with_tax_valuesTrue, log_scale_lotTrue, log_scale_listed_priceTrue, has_labelTrue): new_df df.copy() new_df.drop(Id, axis1, inplaceTrue) # 清理学校名称后缀如 Xxx Elementary School - Xxx new_df[Elementary School] new_df[Elementary School].apply( lambda ele: str(ele)[:-len( Elementary School)] if str(ele).endswith(Elementary School) else ele) if log_scale_lot: new_df[Lot] np.log(new_df[Lot] 1) if log_scale_listed_price: log_listed_price np.log(new_df[Listed Price]).clip(0, None) new_df[Listed Price] log_listed_price if with_tax_values: new_df[Tax assessed value] np.log(new_df[Tax assessed value] 1) new_df[Annual tax amount] np.log(new_df[Annual tax amount] 1) else: new_df.drop(Tax assessed value, axis1, inplaceTrue) new_df.drop(Annual tax amount, axis1, inplaceTrue) if has_label: new_df[Sold Price] np.log(new_df[Sold Price]) return new_df要点说明删除Id纯标识列对预测无信息量学校名称清洗去除冗余后缀使类别更紧凑降低类别基数1再取对数处理可能为 0 的数值如无地块面积避免log(0)标签对数化np.log(Sold Price)把右偏的房价压缩为正态分布配合eval_metricr2训练回归模型推理后再用np.exp(...)还原为真实价格用于提交。标签列与评估指标在脚本中固定为label_column Sold Price eval_metric r2AutoMM 双模式FT-Transformer 与 MLP 的模型组合get_automm_hyperparameters根据--automm-mode组装 AutoMM 的超参数核心是通过model.names声明参与训练的模块列表if mode ft-transformer: hparams {model.names: [ft_transformer, hf_text, fusion_transformer], model.hf_text.checkpoint_name: text_backbone, data.categorical.convert_to_text: cat_as_text} elif mode mlp: hparams {model.names: [categorical_mlp, numerical_mlp, hf_text, fusion_mlp], model.hf_text.checkpoint_name: text_backbone, data.categorical.convert_to_text: cat_as_text}FT-Transformer 模式由三部分构成模块名与常量可对照 constants.py 中的FT_TRANSFORMERft_transformer处理数值 类别特征的深度表格模型hf_textHuggingFace 文本骨干默认google/electra-small-discriminator处理卖家描述等文本列fusion_transformer基于 Transformer 的跨模态融合头汇总表格与文本表示。FT-Transformer 的默认配置可在 configs/model/default.yaml 中查看data_types明确声明它只消费categorical与numerical两类特征ft_transformer: data_types: [categorical, numerical] embedding_arch: [linear] token_dim: 192 hidden_size: 192 num_blocks: 3 attention_num_heads: 8 attention_dropout: 0.2 residual_dropout: 0.0 ffn_dropout: 0.1 ffn_hidden_size: 192 ffn_activation: geglu head_activation: relu normalization: layer_norm merge: concat pooling_mode: cls更多可调参数的含义可参考配套的深度表格模型示例 tabular_dl/README.md例如num_blocksTransformer backbone 中 block 的数量token_dim类别/数值 tokenizer 输出的 token 维度hidden_sizeFT-Transformer 主干的嵌入维度ffn_hidden_size/ffn_dropout/ffn_activationFFN 层维度、dropout 率与激活函数支持relu、gelu、reglu、leaky_reluattention_dropout注意力层的 dropout 率embedding_arch数值特征嵌入层结构列表。示例中给出的调参写法hyperparameters { model.names: [ft_transformer], model.ft_transformer.num_blocks: 5, model.ft_transformer.ffn_dropout: 0.0, }MLP 模式将ft_transformer替换为两个专用 MLPcategorical_mlp编码类别特征numerical_mlp编码数值特征hf_text文本骨干不变fusion_mlpMLP 型融合头。MLP 模式参数量更小、训练更快适合快速基线验证FT-Transformer 模式表达力更强通常能取得更好精度在 tabular_dl/README.md 的 11 个公开表格基准数据集上AutoMM FT-Transformer 在多数数据集上达到或接近论文 SOTA 水平该表同时给出各数据集的rmse/acc指标、样本数与特征规模可作为复现参考。类别转文本--cat-as-textdata.categorical.convert_to_text控制是否把类别特征拼接成文本让hf_text一并学习。默认配置见 configs/data/default.yaml其中还提供了convert_to_text_template取值direct/list/text/latex预设库 utils/presets.py 中的convert_categorical_to_textpreset 即使用latex模板将类别组织为文本。对加州房价这类含位置、学校等语义化类别字段的任务开启该选项往往能利用预训练语言模型的知识带来增益代价是训练时间上升。桥接机制AG_AUTOMM如何接入 AutoGluon-Tabular混合集成阶段脚本把 AutoMM 的超参数放入tabular_hyperparameters以AG_AUTOMM作为模型键tabular_hyperparameters { GBM: [ {}, {extra_trees: True, ag_args: {name_suffix: XT}}, ], CAT: {}, AG_AUTOMM: automm_hyperparameters, }GBM训练两份 LightGBM一份默认配置一份启用extra_treesTrue后缀XTCAT为 CatBoostAG_AUTOMM则是 AutoMM 深度模型的注册名。AG_AUTOMM的底层实现在 tabular/src/autogluon/tabular/models/automm/automm_model.py其关键事实ag_key AG_AUTOMMag_name MultiModalPredictor是AbstractModel的子类包装器GPU 强制要求gpu_required True、minimum_num_gpus 1即该模型必须搭配 GPU 训练支持binary/multiclass/regression三类问题本示例属于回归在_construct_column_types中根据特征元数据把列映射为image_path/text/categorical/numerical四类交给MultiModalPredictor默认fold_fitting_strategysequential_local即做 Bagging/Stacking 时各折按顺序在本地训练避免并行 GPU 冲突_fit内部会新建一个MultiModalPredictor(label..., problem_type..., eval_metric..., ...)并调用其fit同时将 Tabular 侧的verbosity、num_gpus、seed、time_limit透传下去。从源码结构可以推断任何 Tabular 的集成机制Bagging、Stacking、加权集成、分层采样都会把AG_AUTOMM当作普通成员模型参与进来而模型内部则完整复用 AutoMM 的多模态训练管线。三种集成策略选择依据与参数语义脚本中按--mode设置集成参数后统一调用TabularPredictor.fitif args.mode single_bag5: tabular_hyperparameters {AG_AUTOMM: automm_hyperparameters} num_bag_folds, num_stack_levels 5, 0 elif args.mode weighted: num_bag_folds, num_stack_levels None, None elif args.mode stack5: num_bag_folds, num_stack_levels 5, 1weighted加权集成num_bag_foldsNone, num_stack_levelsNone各模型独立训练后AutoGluon 在验证集上用加权含贪心选择组合预测。速度最快适合快速上线。single_bag5AutoMM 5 折 Bagging仅保留AG_AUTOMM5 折交叉验证训练 5 个子模型并平均预测可显著降低深度模型方差是提升单模型稳定性的首选。stack55 折 Stackingnum_bag_folds5, num_stack_levels1树模型与 AutoMM 都做 5 折 Bagging再用一层 stacker 模型学习它们的 OOF 预测通常精度最高但训练时间最长。训练完成后脚本会把leaderboard()结果导出为leaderboard.csv方便对比各成员模型与集成模型的r2分数leaderboard predictor.leaderboard() leaderboard.to_csv(os.path.join(args.exp_path, leaderboard.csv))推理与提交文件生成无论哪种模式最终提交逻辑一致对测试集预测后做np.exp逆变换还原真实价格并写入sample_submission.csv的Sold Price列predictions np.exp(predictor.predict(test_df)) submission_df[Sold Price] predictions submission_df.to_csv(os.path.join(args.exp_path, submission.csv), indexNone)注意测试集预处理时has_labelFalse因此不会对Sold Price取对数np.exp严格对应训练时的np.log变换保证预测值回到原始量纲。进阶阅读深度表格模型的完整复现基准若想深入理解 FT-Transformer 在纯表格数据上的表现可参考 examples/automm/tabular_dl 目录运行入口example_tabular.py支持--dataset_namead / ca / co / ep / he / hi / ja / mi / ya / ye / al 共 11 个数据集、--dataset_dir、--exp_dir、--gpu_id、--lr、--end_lr、--seed等参数run_all.sh一键复现论文基准以lr1E-4、seed0遍历 11 个数据集其结果表记录了每个数据集的样本数、数值/类别特征数、类别数及 AutoMM FT-Transformer 的指标可作为本示例调参的参照系。该目录中的tabular_hyperparameters与加州房价示例结构一致GBM CAT XGB AG_AUTOMM并展示了 AutoMM 的完整超参模板env.batch_size、optim.max_epochs、optim.lr_schedulepolynomial_decay、optim.patience等适合在房价任务上进一步微调复用。【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 20:13:32

Zvec向量数据库隐私保护指南:本地优先与多进程访问控制

Zvec向量数据库隐私保护指南:本地优先与多进程访问控制 【免费下载链接】zvec A lightweight, lightning-fast, in-process vector database 项目地址: https://gitcode.com/GitHub_Trending/zve/zvec Zvec 是一个轻量、极速的进程内向量数据库(i…

2026/9/15 20:08:31

PSM倾向得分匹配实战:从原理到R代码的因果推断指南

开头我先把我常用的一句话撂在这:拿观察数据做因果推断,PSM 倾向得分匹配(Propensity Score Matching)是性价比极高的第一站。不少朋友第一次接触 PSM,是在论文实证或者项目评估里碰了钉子——想评估培训、补贴、改版、…

2026/9/15 20:43:34

OI Wiki 树上随机游走:如何求从起点到终点的期望步数

OI Wiki 树上随机游走:如何求从起点到终点的期望步数 【免费下载链接】OI-wiki :star2: Wiki of OI / ICPC for everyone. (某大型游戏线上攻略,内含炫酷算术魔法) 项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki …

2026/9/15 20:43:34

基于Python+Vue的健身攻略推荐系统全栈开发实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 20:43:34

私有云项目管理软件选型指南:7款自托管工具深度对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 20:38:34

不用SDK,用cURL直连REST API高效获取A股行情数据

做量化回测的人应该都有过这种感受:明明只是想要日K线数据,却被官方 SDK 绑得死死的。最初我用 AlphaFeed 也是走"装 SDK→配环境→调封装方法"的老路,直到一次线上环境部署,官方 SDK 对目标系统的兼容性出了问题&#…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码