返回列表

1st Place Solution | A Diverse Ensemble

554. Playground Series - Season 3, Episode 15 | playground-series-s3e15

开始: 2023-05-16 结束: 2023-05-29 预测性维护 数据算法赛
第一名解决方案 | 多样化的集成

第一名解决方案 | 多样化的集成

作者:Probably Overfitting | 发布日期:2023-05-31 | 投票数:26

这里一直是向社区成员学习的好地方,我也在此贡献自己的一份力量。

真是个惊喜!我最近才开始在 Kaggle 上参加比赛。我曾希望前进几名,但没想到能一举夺冠。正如 @iqbalsyahakbar 所说,这次变动非常巨大。

关键要点

  • 集成具有不同内部工作原理的模型,例如基于树的方法、神经网络、线性模型和最近邻算法,即使它们的个体性能较差。
  • 利用领域知识对数据进行操作。
  • 使用原始数据进行训练,但不用于验证。
  • 相信你的交叉验证(CV)。我尽量不去看公共排行榜的分数,专注于提升本地 CV 分数。我已达到一个极限,无法再进一步提升。我知道要么是我遗漏了什么技巧(比赛结束后我很想知道),要么 ~0.072 实际上就是该数据集的性能上限。需要说明的是:我曾提交过一个私人排行榜分数更好的结果,但因其 CV 分数较差而没有选择它。

有效的做法

  • 利用领域知识进行插补和范围截断: @shalfey 在比赛末期提到了这一点。我意识到,如果可以恰当地对“author”列进行插补,我们就可以根据“author”的值对其他特征的值进行截断,从而减少数据集中的噪声。此外,这一方法最初由 @arunklenin 在一个评论主题中提出。

  • 对“author”和“geometry”列进行类别编码

  • 迭代插补:使用树模型迭代地填充缺失值。感谢 @arunklenin 分享了这个方法 这里。我很好奇你是如何调整这些参数的,因为它们效果非常好。

  • 使用 Optuna 调整模型参数

  • 集成多样化的模型,包括基于树的方法和神经网络等。尽管其中某些模型性能较差,但它们的工作方式增加了集成模型的多样性,正如 @ambrosm 在以往多次比赛中所指出的。单一最佳模型的 CV 分数为 0.0730,而集成后将其降低至 0.0726。

  • 正确的交叉验证:10 折交叉验证,使我的 CV 分数达到 集成 RMSE 分数 0.07265 ± 0.00202

无效的做法

  • 基于领域知识对目标变量值进行截断。
  • 对“author”和“geometry”列进行独热编码并无太大帮助。由于特征数量增加,还延长了拟合时间。
  • 添加主成分分析(PCA)特征并无帮助。
  • 我尝试使用自动编码器,但似乎并没有带来显著提升。可能是未对此进行充分的交叉验证。
  • 我还尝试将所有特征值截断至 ±3 倍标准差范围内,以减少异常值。这在交叉验证中得到了更好的分数,但看起来过于乐观,约为 ~0.069。事实上,该提交的排行榜成绩更差。
  • 开箱即用的插补器效果较差。我认为基于树的方法效果最好,因为数据几乎呈现出一种“if-else”模式,具体取决于“author”和“geometry”等其他特征的值。

感谢所有参与并分享有趣想法的各位。下次再见!

同比赛其他方案