返回列表

7th place solution

520. Tabular Playground Series - Nov 2022 | tabular-playground-series-nov-2022

开始: 2022-11-01 结束: 2022-11-30 数据算法赛
第7名方案

第7名方案

作者: MPWARE (Grandmaster) | 比赛排名: 第7名

各位 Kaggle 用户好!

感谢 Kaggle 举办 TPS(Tabular Playground Series)比赛,这是我很久以来一直想参加的比赛。

团队信息

@mpware,个人参赛。

比赛成绩

公开榜排名第97名 (0.51430),私有榜排名第7名 (0.51892)。

方案简述

我花了一些时间在提供的5000个特征中寻找最佳模型。我使用了两种特征选择方法,在交叉验证(CV)中取得了不错的效果:

  • 基于 LossFunctionChange 的 CatBoost 特征选择
    对于每个特征,LossFunctionChange 表示包含该特征的模型损失值与不包含该特征的模型损失值之差。
    参考文档:CatBoost Feature Selection
    我尝试了 1000、500、275、250、200 个特征。效果最好的是 250 个特征。

  • 100次运行的 Null Importance 特征选择
    随机打乱目标值并计算特征重要性,重复此过程多次(100次)以获得重要性分布。
    将其与未打乱目标值时的重要性(即我们要解决的问题)进行比较,如果该重要性混杂在打乱后的重要性中,则意味着该特征对我们的问题不重要。我们只保留重要的特征。
    参考链接:Feature Selection with Null Importances
    在此过程结束时,我选择了 350 个特征。

我基于这些特征工程训练了模型。经典的 LightGBM/GBDT 在 CV(5折)中表现最好,CatBoost 和 NN(神经网络)也不错。

最终,我的提交结果只是以下模型的简单平均

  • 3个 LightGBM/GBDT 模型(分别使用 250、275、350 个特征)
  • 3个 NN 模型(同样使用 250、275、350 个特征)
  • 3个最佳单模型:2xLightGBM/GBDT(250 和 629 个特征)+ 1xCatBoost(275 个特征)

为了了解 CV/LB 方差/稳定性,我对整个过程使用了 5 个随机种子。在 CV 和 LB 上波动都在 +- 0.005 左右。在如此大的方差下,LB 榜单晃动的风险可能很高。

使用的库/算法

  • CatBoost
  • LightGBM/GBDT
  • TensorFlow/Keras

注:我第一次尝试了 AutoML (AutoGluon) 工具。它没有帮助提高分数,但它提供了快速的参考结果,帮助我朝着正确的方向前进。

提升分数的关键点

  • 特征选择
  • NN + GBM 模型集成
    超参数网格搜索的结果并不显著。

一些无效的尝试

  • 将预测值平移 -+ 0.00XX
  • LOFO (Leave One Feature Out) 特征选择
  • 删除包含困难样本的特征(因为它们已经在我最好的列表中了)
  • 所有类型的 L2 模型效果都不显著

比赛心得

相信你的 CV(交叉验证),通过尝试不同的随机种子来观察你的预测结果有多稳定。

祝好。

同比赛其他方案