目的 以 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 可靠评估是中小样本表格回归的关键增益来源;目标编码泄漏修复显著改变了集成权重的分配逻辑。
原始 SalePrice 严重右偏(偏度 1.88,均值 180,921 美元、中位数 163,000 美元),经 log1p 变换后偏度降至 0.12、近似正态,使回归误差在价格尺度上近似同方差。
| 缺失语义 | 代表性列(缺失率) | 处理方式 |
|---|---|---|
| "无此设施" | 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%) | 社区中位数 / 众数插补 |
| 策略 | 内容 | 效果 |
|---|---|---|
| 有序编码 | 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 万) | 最大增益项之一 |
以 LassoCV 为基准模型,逐步叠加特征工程策略,度量每一步的独立贡献。以下数据基于 25 折重复评估,确保增益稳健、非偶然波动。
| 步骤 | log-RMSE | Δ(步进增益) | 说明 |
|---|---|---|---|
| ① 原始特征 + log 变换 | 0.12909 | — | v1 基线,仅做数值标准化 |
| ② + 缺失语义化 + 有序编码 | 0.12100 | 填补策略从"均值插补"升级为语义化 | |
| ③ + 组合特征 + 离群处理 | 0.11520 | 离群处理是此阶段最大增益项 | |
| ④ + 面积比值(Batch A) | 0.11280 | v2.1 最大单点增益,无需调参 | |
| ⑤ + 交互特征 + 目标编码(折内) | 0.11211 | 交互特征经 CV 筛选,增益有限但稳健 |
将评估从单 seed 5 折扩展到 5 seed × 5 折 = 25 折后,所有模型的误差均值都上升了约 0.0016~0.0020,标准差揭示了模型稳定性差异。LassoCV 以 0.11211 蝉联最佳单模型,且标准差最小(0.00662)。
| 模型 | OOF log-RMSE (mean ± std) | 备注 |
|---|---|---|
| LassoCV | 🏆 最佳单模型,稳定性最优 | |
| ElasticNetCV | ||
| Ridge | ||
| XGBoost | 树族最优(调参后) | |
| GradientBoosting | ||
| HistGB | ||
| LightGBM | ||
| RandomForest |
对 XGBoost / LightGBM / HistGB 做 TPE 贝叶斯搜索(各 30 trials × 3 折 + early_stopping)。调参后 25 折 OOF 均有约 0.002 的提升,但即便精细调参,XGBoost(0.11919)仍未能超越 LassoCV——在 1,460 条样本的高维稀疏场景下,线性模型的特征选择优势占主导。
| 模型 | 调参前(seed42, 5 折) | 调参后(25 折) | 提升 |
|---|---|---|---|
| XGBoost | 0.12152 | 0.11919 | |
| LightGBM | 0.12689 | 0.12456 | |
| HistGB | 0.12452 | 0.12265 |
对比了多种集成方案。修复目标编码泄漏后,OOF 加权平均(爬山精化 + bootstrap 稳定性校验)以 0.11073 成为最优方案,优于 Stacking(0.11177)。一个值得注意的变化是:泄漏修复前集成权重呈"Lasso 0.536 + XGB 0.322 两极主导",修复后变为线性三兄弟合计约 0.62、五个树模型各约 0.07~0.08 的互补结构——这说明泄漏曾让 XGBoost 获得了不应有的优势。
| 方案 | CV log-RMSE | 备注 |
|---|---|---|
| v1 基线 Stacking(原始特征) | 最初基线 | |
| 旧版加权集成(含目标编码泄漏,5 折) | 偏乐观 | |
| 最佳单模型 LassoCV(25 折) | ||
| Stacking(seed42, meta=RidgeCV) | ||
| L2 平滑权重(退化为 Lasso 单模型) | ||
| 加权平均(OOF 权重精化,25 折,8 模型) | ✅ 最优 |
按预测价格分段回检 OOF 误差,模型在不同价位表现差异显著,存在明显的系统性偏差。
| 价格段 | 误差特征 |
|---|---|
| < 12 万美元 | 误差最大(log-RMSE ≈ 0.164),且系统性高估。低价段样本少、异质性高(老旧房、foreclosure、特殊卖家动机) |
| 12–16 万美元 | 中等误差 |
| 16–20 万美元 | 最优区间(log-RMSE ≈ 0.083)。样本充足、特征区分度好 |
| 20–30 万美元 | 中等误差 |
| > 30 万美元 | 系统性低估。顶部样本稀疏,受限于特征天花板 |
| 方向 | 思路 |
|---|---|
| CatBoost | 原生有序目标统计(Ordered Target Statistics),对 Ames 大量有序品质型特征可能更友好 |
| 自动化特征搜索 | featuretools 或遗传算法,系统挖掘高阶交互,减少手工尝试的盲目性 |
| 深度学习基线 | TabNet / FT-Transformer,验证非线性架构在小样本结构化数据上的真实价值 |
| 分位数回归 / 两阶段建模 | 针对误差分析中暴露的极端价格段偏差(低价高估、高价低估) |