返回列表

35th Place Solution: Ensemble 10 Models with Hill Climbing

642. CIBMTR - Equity in post-HCT Survival Predictions | equity-post-HCT-survival-predictions

开始: 2024-12-04 结束: 2025-03-05 临床决策支持 数据算法赛
第 35 名解决方案:使用爬山算法集成 10 个模型
作者: tlhoerd | 发布日期: 2025-03-06 | 竞赛排名: 第 35 名

第 35 名解决方案:使用爬山算法集成 10 个模型

很高兴获得我的第一枚银牌,这也是我第一次从头到尾参加完一场竞赛而没有中途放弃。

解决方案概述

我的解决方案由三部分组成:
第一部分。 源自 Chris 笔记本的模型。我使用了 XGBoost、LightGBM 和 CatBoost,配合 KM、NA 和 Cox 目标变换。此外,每个模型都在两个随机种子下训练然后平均。
第二部分。 带有 pairwise ranking loss 的 LitNN。这个模型可以显著提升我的 CV 和 LB,所以我在三个随机种子上微调了它们。其中一个模型的 CV 可以达到 0.683,但它总是损害我集成模型的 CV,所以我没有将其包含在最终提交中。
第三部分。 Yunbase。我直接使用公开的 yunbase 不做任何更改。这个模型将我的 CV 从 0.6869 提高到了 0.6876。我认为其独特的特征工程和训练设置提升了我的集成模型的多样性。
最后,我使用爬山算法来集成这些模型,搜索步长为 0.01。在我的案例中,爬山算法优于 Optuna。

有用技巧

  1. 幂变换 (scipy.stats.yeojohnson)。在第一部分中,我在任何其它目标变换之前对 efs_time 应用了幂变换。这个想法来自 Chris,因为 RMSE 和 MSE Loss 适合归一化的目标。我分别在 event/survival 组中应用它。
  2. 在爬山算法中启用负权重。我发现直接平均第一部分和第二部分的模型会导致 CV 和 LB 下降。我猜这是因为某些模型存在偏差(倾向于预测得比真实值高/低)。因此,我在集成时启用了负权重,这显著改善了我的 CV 和 LB。

模型重要性

这张图展示了模型的标准化折外(out-of-fold)预测是如何被添加到集成中的。有趣的是,许多 CV 较低的模型首先被添加到集成中:
模型重要性图表

致谢

更重要的是,没有优秀的公开笔记本和启发性的讨论,我无法达到这个位置,我在这次竞赛中真的学到了很多模型和技巧。感谢你们的无私分享!!

同比赛其他方案