538. Playground Series - Season 3, Episode 8 | playground-series-s3e8
本次比赛的目标是最小化宝石价格预测的均方根误差(RMSE)。我的解决方案是一个两层堆叠模型。堆叠的第一层由 60 个不同的模型组成,使用了 XGBoost、CatBoost 和 LightGBM。第一层模型的选择是基于以 RMSE 为指导的模型空间搜索——我从局部 CV RMSE 分数为 574 或更低的第一层模型集合开始,以 0.1 为增量逐步降低此阈值,构建第二层 Ridge 模型,并寻找能给出最小第二层局部 CV 分数的模型组合。选择第一层模型的最佳截止值是 572.6。所有模型都是将训练数据分成 10 折生成的,预测是样本外(OOF)进行的,指标也是在 OOF 收集的。特征工程将在下面更详细地讨论。
[高影响] 特征工程
[高影响] 使用原始数据集
在本次比赛中,我总共生成了 1,816 个模型。其中 1,709 个是第一层模型——混合了 XGB、CatBoost、Ridge 和 LightGBM 模型。第一层模型是探索性的——主要集中在测试工程特征以及超参数搜索。我使用 Ridge 回归、混合和神经网络总共生成了 105 个第二层模型。大多数第二层模型是 Ridge 模型,用于搜索第一层模型的最佳选择。与 Ridge 回归相比,第二层混合模型表现不佳。虽然第二层神经网络比最佳 Ridge 模型提供了稍好的 CV 指标,但我所有的神经网络模型都在公共 LB 上出现了强烈的反弹,表明严重的过拟合(随后通过私有 LB 证实)。
除了模型堆叠为预测结果提供稳定性外,两个关键的见解是特征工程和重复项处理。在重复项方面,之前的比赛揭示了训练集和测试集之间的重复项,处理这些重复项对于顶级得分解决方案至关重要。在本次比赛中,原始数据中有 398 行在测试数据中重复,训练数据中有 1,440 行在测试数据中重复。我尝试了几种方法,作为后处理步骤将原始数据集和训练数据集的价格覆盖到测试数据集上。以公共 LB 分数为指导,覆盖原始数据集中的 398 行到其对应的测试行似乎产生了提升。然而,我对结果仍然非常怀疑,并在最终提交中进行了对冲,使用了应用和未应用该技巧的最佳 Ridge 模型。最终,更好的模型是没有应用该技巧的那个。
第二个见解——特征工程——尤为重要。在我的 EDA 中,我研究了几种不同的工程特征。第一个见解是,在现实世界中,切工、净度和颜色分类对应于数字刻度,该刻度用于在钻石之间进行质量比较。简单的测试表明,如果我们将分类转换为数字刻度,并确保 LightGBM、CatBoost 和 XGBoost 不将这些列视为分类性质,则可以获得相当大的提升。这一点通过对分类值使用不同的编码方法并比较它们的相对得分得到了证实(见下图)。虽然颜色刻度特征在我的 EDA 中似乎没有提供提升,但在使用它的模型调优版本中,它确实产生了微小的影响。另一个特征工程见解涉及纵横比和克拉值。通过将宝石的标准化纵横比除以夸张版本的克拉值,我们可以将低价值宝石与高价值宝石区分开来。
下面是一个摘要,解释了用于生成未调优 LightGBM 模型时不同方法及其结果。同样,每种模型类型的具体细节及其探索内容在我的 EDA 中有更详细的解释。
再次感谢 Kaggle 组织者继续推出 Playground 系列。同样,在如此短的时间内