返回列表

#2 Solution | 8 Models Ensemble

577. Playground Series - Season 3, Episode 23 | playground-series-s3e23

开始: 2023-10-03 结束: 2023-10-23 缺陷检测 数据算法赛
#2 解决方案 | 8个模型的集成
作者:Oscar Aguilar | 排名:第2名 | 发布日期:2023-10-24

#2 解决方案 | 8个模型的集成

首先,我要衷心感谢Kaggle举办这一期的游乐场系列比赛。在本文中,我将简要介绍我的方法,大部分内容可以在我的笔记本中找到。

预处理

最初,我直接对未经任何转换的数据进行建模,得到了不错的CV和LB分数(约0.793的CV分数和0.790的LB分数)。随后,我按照@ambrosm这篇帖子中建议的方法,对所有输入特征进行了对数变换。令人惊喜的是,在对输入进行对数变换后,我所考虑的大多数基于树和梯度提升的模型性能都有小幅提升。

模型与集成

在我的笔记本中,我训练了以下模型:

  • 随机森林
  • 极端随机树
  • 直方图梯度提升
  • LightGBM
  • XGBoost
  • CatBoost

我使用爬山集成方法将这六个模型进行集成,得到了0.7907的LB分数,如下图所示。

为了增加集成模型的多样性,我将六个树模型的爬山集成结果与这篇笔记本中提出的Nyström逻辑回归模型进行了集成。这使得我的LB分数从0.7907提升到了0.79099,如下图所示。

最后,我决定加入神经网络模型到集成中,灵感来自@sauravpandey11这篇笔记本。这使得我的LB分数从0.79099进一步提升到了0.79101,如下图所示。

遗憾的是,我并没有选择上述提交。我选择了另一个具有稍高LB分数的集成模型。

未成功的方法

我尝试了一些不同的方法:

  • 最初我尝试使用主成分分析(PCA)来减少输入特征的数量,以缩短模型构建时间。在我的笔记本中,我指出10个主成分可以解释数据中99%以上的变异性。然而,使用PCA替代对数变换后的特征并没有提升模型性能。

  • 我还尝试了t-SNE来观察是否可以分离两个类别,但并未奏效。

  • 我也尝试了如笔记本中所示的聚类方法。但它失败了。我甚至尝试了使用聚类结果进行目标编码,但模型性能没有任何提升。

结论

在本次比赛中,集成和模型多样性是获胜的关键!