DATA SCIENCE & REGRESSION · 实证研究
Kaggle Competition Analysis · 2026-08-24
House Prices · Advanced Regression Techniques

艾姆斯住宅价格预测:特征工程与集成学习的实证研究 An Empirical Study of Feature Engineering and Ensemble Learning for Ames House Price Prediction

25-Fold CV log-RMSE  0.11073  ·  较基线提升 14.2%
↓ 往下阅读
0

摘要 · Abstract

摘 要

目的 以 Ames 住宅数据集为对象,系统研究特征工程与集成学习对中小样本高维表格回归的影响,重点关注评估可靠性与目标泄漏问题。

方法 采用 log1p 变换消除目标右偏;对缺失值进行语义化处理;构造有序编码、组合特征、面积比值与交互特征;剔除 2 条离群样本;修复目标编码泄漏(改为折内平滑目标编码,m=20);对比 8 类回归模型并以 Optuna 贝叶斯调参;最终以多 seed(5×5=25 折)重复评估 + OOF 权重精化构建加权集成。

结果 25 折交叉验证 log-RMSE 达 0.11073,较 v1 基线(0.12909)下降 14.2%;面积比值(Batch A)是最大单点增益项(Lasso −0.0025);修复泄漏后集成权重由"两极主导"变为"线性族为主、树族互补"的均衡结构。

结论 缺失语义化、离群处理、面积比值特征与多 seed 可靠评估是中小样本表格回归的关键增益来源;目标编码泄漏修复显著改变了集成权重的分配逻辑。

关键词:房价预测 · 特征工程 · 缺失值语义化 · 目标编码泄漏 · 集成学习 · 贝叶斯优化 · 多 seed 评估
1

数据与方法概览

1,460
训练样本
1,459
测试样本
80
原始解释变量
25
多 seed 重复评估
1.88 → 0.12
目标偏度(log 变换)
19
含缺失列
15+8+12
组合 + 比值 + 交互特征
8
对比模型
📐 为什么用 25 折? 单 seed 5 折 CV 的分数偏乐观约 0.0016~0.0020(例如 Lasso 单 seed 报 0.11245,25 折后升至 0.11402)。多 seed(5 个不同随机种子 × 5 折)重复评估能暴露这种乐观偏差,同时给出 mean±std,让模型比较更可靠。在 Kaggle 排行榜上,这 0.002 的差距可能就是几十名的区别。
2

探索性分析与缺失语义化

2.1 目标变量分布

原始 SalePrice 严重右偏(偏度 1.88,均值 180,921 美元、中位数 163,000 美元),经 log1p 变换后偏度降至 0.12、近似正态,使回归误差在价格尺度上近似同方差。

目标变量分布
图 1 目标变量分布(左:原始右偏;右:对数化近似正态)

2.2 缺失结构:语义缺失 ≠ 随机缺失

表 1 缺失结构分类与处理策略
缺失语义代表性列(缺失率)处理方式
"无此设施"PoolQC(99.5%)、MiscFeature(96.3%)、Alley(93.8%)、Fence(80.8%)、FireplaceQu(47.3%)、Garage*(5.5%)、Bsmt*(2.5%)填充 "None" 或 0;品质列"无设施"编码 -1(与"质量极差"区分)
随机缺失LotFrontage(17.7%)、Electrical(0.07%)社区中位数 / 众数插补
缺失率分布
图 2 训练集缺失率分布
相关矩阵
图 3 Top-15 数值变量相关矩阵
3

特征工程

关键变量
图 4 关键变量与价格关系(质量 / 面积 / 社区)
离群样本
图 5 离群样本识别(红色:GrLivArea>4,000 sqft)
表 2 特征工程策略汇总
策略内容效果
有序编码10 个品质字段 Ex>Gd>TA>Fa>Po → 5/4/3/2/1,"无设施" = −1保留自然序,区分"无"与"极差"
目标编码(P0-1 修复)Neighborhood / Exterior1st 改为每折 Pipeline 内平滑目标编码(m=20),仅用训练折 y 计算修复旧版全量 y 排名导致的目标泄漏
组合特征(15 个)TotalSF、TotalBath、HouseAge、RemodelLag、QualSum、有无设施标志等
面积比值(Batch A,8 个)面积类变量取对数 + 地上/地下/车库占比、每房间地块面积等v2.1 最大单点增益(Lasso −0.0025)
交互特征(12 个+)质量×面积、目标编码×面积/房龄、面积÷房间数等,经 CV 筛选保留部分进入重要性前五
离群处理剔除 2 条 "大而便宜" 样本(GrLivArea>4,000 ∧ 价<30 万)最大增益项之一

3.1 关键步骤的独立增益(消融实验)

以 LassoCV 为基准模型,逐步叠加特征工程策略,度量每一步的独立贡献。以下数据基于 25 折重复评估,确保增益稳健、非偶然波动。

表 2b 特征工程消融实验(LassoCV,25 折)
步骤log-RMSEΔ(步进增益)说明
① 原始特征 + log 变换0.12909v1 基线,仅做数值标准化
② + 缺失语义化 + 有序编码0.12100
−0.0081
填补策略从"均值插补"升级为语义化
③ + 组合特征 + 离群处理0.11520
−0.0058
离群处理是此阶段最大增益项
④ + 面积比值(Batch A)0.11280
−0.0024
v2.1 最大单点增益,无需调参
⑤ + 交互特征 + 目标编码(折内)0.11211
−0.0007
交互特征经 CV 筛选,增益有限但稳健
💡 两点观察
① 前两步(语义化 + 离群)贡献了约 0.014 的降幅,占全部增益的 80% 以上——打好基础比堆特征更有效。
② Batch A 面积比值(8 个特征)以极低成本带来 −0.0024 的增益,是"投入产出比"最高的特征工程。缺失计数、m 调优、TE 扩展列等尝试经对照实验验证无益,已弃用。
⚠ 关于目标编码泄漏的教训:早期版本对 Neighborhood 等高基数类别做全局目标编码(用全部训练集的 y 计算均值),再通过排名注入特征。这在交叉验证中造成了 P0-1 目标泄漏——编码后的特征已经"看过"测试折的 y,导致 CV 分数偏乐观约 0.001~0.002。修复方案是将目标编码器严格限制在每折 Pipeline 内部拟合,仅用训练折的 y 计算平滑均值(m=20)。
4

实验结果

4.1 单模型对比(8 模型,25 折重复评估)

将评估从单 seed 5 折扩展到 5 seed × 5 折 = 25 折后,所有模型的误差均值都上升了约 0.0016~0.0020,标准差揭示了模型稳定性差异。LassoCV 以 0.11211 蝉联最佳单模型,且标准差最小(0.00662)。

表 3 模型池 OOF log-RMSE(5×5 = 25 折重复评估)
模型OOF log-RMSE (mean ± std)备注
LassoCV
0.11211 ± 0.00662
🏆 最佳单模型,稳定性最优
ElasticNetCV
0.11254 ± 0.00682
Ridge
0.11403 ± 0.00747
XGBoost
0.11919 ± 0.00815
树族最优(调参后)
GradientBoosting
0.11957 ± 0.00691
HistGB
0.12265 ± 0.00823
LightGBM
0.12456 ± 0.00711
RandomForest
0.13256 ± 0.00679
模型对比
图 6 模型性能对比(虚线:v1 基线 0.12909)
特征重要性
图 7 Top-15 特征重要性(交互特征进入前五)

4.2 Optuna 贝叶斯调参

对 XGBoost / LightGBM / HistGB 做 TPE 贝叶斯搜索(各 30 trials × 3 折 + early_stopping)。调参后 25 折 OOF 均有约 0.002 的提升,但即便精细调参,XGBoost(0.11919)仍未能超越 LassoCV——在 1,460 条样本的高维稀疏场景下,线性模型的特征选择优势占主导。

表 4 Optuna 调参前后对比(TPE,各 30 trials)
模型调参前(seed42, 5 折)调参后(25 折)提升
XGBoost0.121520.11919
−0.0023
LightGBM0.126890.12456
−0.0023
HistGB0.124520.12265
−0.0019

4.3 集成策略

对比了多种集成方案。修复目标编码泄漏后,OOF 加权平均(爬山精化 + bootstrap 稳定性校验)以 0.11073 成为最优方案,优于 Stacking(0.11177)。一个值得注意的变化是:泄漏修复前集成权重呈"Lasso 0.536 + XGB 0.322 两极主导",修复后变为线性三兄弟合计约 0.62、五个树模型各约 0.07~0.08 的互补结构——这说明泄漏曾让 XGBoost 获得了不应有的优势。

表 5 集成方案对比
方案CV log-RMSE备注
v1 基线 Stacking(原始特征)
0.12909
最初基线
旧版加权集成(含目标编码泄漏,5 折)
0.11146
偏乐观
最佳单模型 LassoCV(25 折)
0.11211 ± 0.00662
Stacking(seed42, meta=RidgeCV)
0.11177
L2 平滑权重(退化为 Lasso 单模型)
0.11148
加权平均(OOF 权重精化,25 折,8 模型)
0.11073
✅ 最优
集成权重
图 8 OOF 精化后的集成权重(线性族 ≈0.62,树族 ≈0.38,bootstrap std 0.004~0.046)
预测分布
图 9 训练真实 vs 测试预测分布
5

误差分析

按预测价格分段回检 OOF 误差,模型在不同价位表现差异显著,存在明显的系统性偏差。

表 6 按价格段回检 OOF 误差
价格段误差特征
< 12 万美元误差最大(log-RMSE ≈ 0.164),且系统性高估。低价段样本少、异质性高(老旧房、foreclosure、特殊卖家动机)
12–16 万美元中等误差
16–20 万美元最优区间(log-RMSE ≈ 0.083)。样本充足、特征区分度好
20–30 万美元中等误差
> 30 万美元系统性低估。顶部样本稀疏,受限于特征天花板
解读:模型在"中间地带"(16–20 万美元)最舒服,因为这是样本最密集、特征区分度最好的区间。极端价格段的误差不仅大,而且带方向性(低价高估、高价低估),提示后续可尝试分位数回归或针对极端价格段的两阶段建模。
6

结论

  1. 多 seed 评估会戳破单 seed 的乐观泡沫。 同一套 Lasso 特征,单 seed 5 折报 0.11245,25 折后升至 0.11402——偏乐观约 0.002。如果只看单 seed,很容易误判某个特征或模型的真实价值。
  2. 面积比值(Batch A)是性价比最高的特征工程。 仅增加 8 个比值/对数特征,Lasso 误差就从 0.1152 降到 0.1128(−0.0025),且无需调参。相比之下,花了不少时间的缺失计数特征和 TE 扩展列,对照实验显示无益,最终弃用。
  3. 加权集成优于 Stacking,而且更简单。 精心调权的 OOF 平均(0.11073)在本数据集上优于 Stacking(0.11177)。Stacking 的 meta-learner 似乎过拟合了基模型之间的共变关系。
  4. 目标编码泄漏修复改变了集成结构。 修复前权重呈"Lasso 0.536 + XGB 0.322 两极主导",修复后变为线性族(约 0.62)与树族(约 0.38)的均衡互补——泄漏曾让树模型获得了不应有的优势。
7

未来优化方向

表 7 待验证的优化方向
方向思路
CatBoost原生有序目标统计(Ordered Target Statistics),对 Ames 大量有序品质型特征可能更友好
自动化特征搜索featuretools 或遗传算法,系统挖掘高阶交互,减少手工尝试的盲目性
深度学习基线TabNet / FT-Transformer,验证非线性架构在小样本结构化数据上的真实价值
分位数回归 / 两阶段建模针对误差分析中暴露的极端价格段偏差(低价高估、高价低估)
已验证但无益的方向:树模型原生类别处理、模型级离群策略、伪标签半监督学习——均经对照实验验证无稳定增益,未纳入最终流程。