返回列表

# 28 Solution | Problem with private LB score

544. Playground Series - Season 3, Episode 12 | playground-series-s3e12

开始: 2023-04-04 结束: 2023-04-17 临床决策支持 数据算法赛

#28 解决方案 | 关于私有排行榜分数的问题

大家好Kaggle,

首先,我要向所有参加本次竞赛的参与者表示感谢。我非常高兴能在这次 playground 系列赛中获得前3%的成绩,尤其这是我第二次参加此类活动。我必须承认,我的成功归功于比赛期间宝贵的经验分享和知识交流。我从这些讨论和贡献中学到了很多,非常感谢各位数据科学家为提升我们集体教育水平所付出的努力。

我要特别感谢以下 notebooks:

以及这个讨论主题:

我提交的最佳解决方案

我认为,和许多人一样,我最好的私有分数并未提交,我将在本主题后面部分讨论这一点。现在我想讨论让我获得第28名的决策过程。

特征工程

  • 大部分特征工程我采用了这个 notebook 的方法:https://www.kaggle.com/code/tetsutani/ps3e12-eda-ensemble-baseline/notebook
  • 我还添加了一些二进制特征,如 hydration status(水合状态)、osmo_status(渗透压状态)和 calc_status(钙状态)
  • 异常值处理部分也非常重要,它在我理解公开分数方面起到了巨大作用

模型

  • 比赛期间我尝试了不同模型的组合,在这个解决方案中使用了经过 optuna 优化的加权集成,包括 XGBoost、CatBoost、LGBM、GradientBoosting、逻辑回归、随机森林、SVC 和 KNN
  • 我还使用了10折交叉验证来训练模型。虽然数据集非常小,10折似乎过多,但我测试了3、5、7、8和12折,发现10折对我而言是最优的

我发现的分数计算问题

本次比赛我总共提交了26次,大多数提交都是为了通过尝试不同模型组合来优化集成模型。每次我尝试更改特征工程时,分数总是下降(不包括异常值处理部分)。

结果,很可能是由于我比赛经验不足,我到达了无法再获得比之前更高分数的瓶颈。虽然理论上我认为某些解决方案应该表现更好,因为我更加注意防止过拟合,并确保模型在交叉验证中表现更好。尽管如此,我无法在公开排行榜上进入前140名。

然而,当我开始尝试使用 IQR 方法处理异常值并测试不同的 k 值时,我注意到了一些奇怪的现象。我假设大多数参与者可能会对公开排行榜过拟合,即使它只占全部数据的20%。因此,我决定为最终提交选择最优的解决方案。结果证明我的假设仍然不完全正确。

我有一个与上述描述类似的解决方案,但使用了更少的模型。我排除了 KNN 和 GradientBoosting,并使用0.3和0.7分位数代替0.25和0.75。这个决定在公开排行榜上只获得了 modest 的分数,但如果提交的话本可以让我进入当前排行榜的第16名。

分数对比截图

结论

最终,虽然我有一些假设,但我仍然不完全确定是什么导致了这次比赛中的这种结果。不过无论如何,我对结果感到满意,很高兴参与了比赛并学到了很多,再次感谢大家的精彩体验,期待在下一次比赛中再见。

同比赛其他方案