实用指南:【阿里AI大赛】-二手车价格预测实战指南(实测MAE<500!!!)

二手车价格预测全流程实战:从数据探索到模型融合的完整指南

一个适合新手的、可复现的机器学习项目实战,带你一步步构建高精度二手车价格预测模型


文章目录(点击可跳转)


一、项目概览:我们要解决什么问题?

二手车价格预测是一个经典的回归预测问题,目标是根据车辆的品牌、型号、使用年限、配置等多个特征,预测其市场价格。本项目采用MAE(平均绝对误差)作为评价指标,最终利用三模型加权融合,将 MAE 降至约450.66,相比单模型有明显提升。

无论你是机器学习初学者,还是希望平台实践一个完整项目的开发者,该项目都能为你提供一个清晰的路线图和可复现的代码框架。


二、第一站:数据探索(EDA)- 揭开素材的面纱

理解材料、发现问题、把握方向。就是数据探索是所有机器学习项目的第一步,目标

核心发现:

  1. 目标变量呈长尾分布:价格 price 严重右偏,直接建模效果不佳,后续需进行对数变换(log1p)。
  2. 高相关性特征:匿名特征 v_0v_3v_8v_12 与价格相关性超过 0.65,是关键预测因子。
  3. 隐藏的缺失值notRepairedDamage 列中的 "-" 实际上是缺失值,需转换为 NaN 再处理。
  4. 明显的异常值power 列存在 600+ 的极端值,需进行截断或修正。

可执行提示:

你可能使用以下提示词快速开始EDA:

“请对内容集进行探索性数据分析(EDA),分析每个字段的分布、缺失值情况,并计算特征与目标变量 price 的相关性。将关键发现总结出来。”


三、第二站:信息预处理 - 构筑坚实的内容基础

目标是生成一份清洁、完整、可供特征工程使用的数据集。

核心处理流程:

  1. 合并数据:将训练集(15万条)与测试集(5万条)合并,确保所有转换一致。
  2. 处理缺失与异常:填充缺失值,对 power 列进行异常值截断。
  3. 内存优化:转换数据类型(如 int32float32),减少内存占用。

产出文档:

train_data_clean.csv — 经过基础清洗后的完整数据集。

AI 提示词示例:

“基于 EDA 发现,请编写一个数据预处理脚本。合并训练集和测试集,处理 notRepairedDamage 的值,并对 power 列进行异常值截断。最后优化数据类型以减少内存占用。”


四、第三站:特征工程 - 从数据中挖掘"黄金"

特征工程是提升模型性能的关键步骤,目标是从原始数据中构造出信息量更丰富的特征。

核心策略:

  • 时间特征:从 regDatecreatDate 提取车龄、注册月份等。
  • 交叉组合特征:如 brand + model 组合成新特征。
  • 统计特征:对匿名 V 系列特征计算均值、最值等;按品牌统计价格均值、中位数等。

⚠️ 防泄露原则:

所有统计特征必须在训练集上计算,再应用到测试集,避免信息泄露。

AI 提示词示例:

“请创建一个特征工程脚本。输入 train_data_clean.csv,生成时间特征、V系列统计特征、类别交叉特征和基于brand的统计编码特征。确保所有统计编码都基于训练集计算以防止泄露。最后保存为 data_with_advanced_features.csv。”

产出文件:

data_with_advanced_features.csv — 包含所有原始特征与新构建特征的数据集。


五、第四站:多模型训练 - 构建三位一体的预测核心

我们选择了三个主流梯度提升模型进行训练,利用它们的多样性提升最终融合效果。

统一的训练协议:

  • 5折交叉验证:使用相同的 random_state=42,确保预测结果可对齐。
  • 目标变量变换:对 price 进行 log1p 变换,预测后再通过 expm1 还原。
  • 负值处理:使用 np.clip(pred, 10, None) 防止出现负价格。

5.1 CatBoost:类别特征处理大师

  • 核心优势:原生支持类别特征,无需手动编码。
  • 输入data_with_advanced_features.csv
  • 预期性能:单模 OOF MAE ≈ 480

5.2 LightGBM:速度与精度的平衡者

  • 关键差异:需对类别特征进行标签编码(Label Encoding)。
  • 预期性能:单模 OOF MAE ≈ 500

5.3 XGBoost:稳定可靠的性能基石

  • 关键差异:同样应该标签编码。
  • 预期性能:单模 OOF MAE ≈ 495

六、第五站:模型融合 - 完成 1+1+1 > 3

我们采用加权平均融合,借助两步优化法寻找最优权重组合:

两步权重优化法:

  1. 随机搜索:在权重空间中随机采样,快速找到表现较好的初始权重。
  2. SLSQP 精确优化:以随机搜索结果为起点,使用 scipy.optimize.minimize 进行数学优化,找到局部最优解。

输入文件:

  • oof_predictions_catboost.csv
  • oof_predictions_lightgbm.csv
  • oof_predictions_xgboost.csv
  • 及各模型的测试集预测文件

AI 提示词示例:

“请编写一个模型融合脚本。加载三个模型的 OOF 和测试集预测。先用随机搜索寻找初始权重,再用 SLSQP 优化。最后用最优权重融合测试集预测,生成最终提交文档 submission_stacking_optimized.csv。”


七、最终成果:融合带来显著提升

模型OOF MAE
CatBoost 单模~480
LightGBM 单模~500
XGBoost 单模~495
三模型加权融合~450.66

融合后 MAE 相比最佳单模(CatBoost)降低了约 10 个点,验证了融合策略的有效性。


八、项目工具箱:关键文件与脚本概览

核心脚本:

  • create_advanced_features.py — 特征工程
  • train_catboost.py — 训练 CatBoost
  • train_lightgbm_model.py — 训练 LightGBM
  • train_xgboost_model.py — 训练 XGBoost
  • stacking_optimized.py — 模型融合

关键数据文件:

  • train_data_clean.csv — 清洁数据
  • data_with_advanced_features.csv — 特征工程后数据
  • oof_predictions_*.csv — 各模型 OOF 预测
  • submission_stacking_optimized.csv — 最终提交文件

九、未来征途:探索性能优化的新前沿

假设你希望进一步优化模型,可以尝试以下方向:

  • 超参数优化:使用 Optuna、Hyperopt 进行贝叶斯搜索。
  • 特征选择:基于特征重要性剔除冗余特征。
  • 模型扩充:引入 NGBoost、TabNet 等新模型。
  • 高级融合:从加权平均升级到 Stacking(元模型学习)。
  • 伪标签技术:谨慎使用高置信度的测试集预测反哺训练。

十、结语

希望在此基础上进行二次开发,它都能为你提供一个坚实的起点。就是这个任务不仅是一个完整的机器学习实战案例,更是一个可扩展、可优化的基线系统。无论你是想学习完整的建模流程,还

posted on 2026-01-16 11:23  ljbguanli  阅读(0)  评论(0)    收藏  举报