返回列表

15th Place Solution

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

开始: 2024-12-04 结束: 2025-03-05 临床决策支持 数据算法赛
15th Place Solution - 第 15 名解决方案

第 15 名解决方案

作者:tamryow (MASTER)

发布时间:2025-03-06

竞赛排名:第 15 名

首先,我要感谢 Kaggle 社区分享伟大的想法和参与讨论。我也要感谢主办方组织了这次有趣的任务竞赛。

概述

  • 专注于指标机制和模型性能的集成(Ensemble)
  • 堆叠 GBDT 模型和各种转换后的目标变量

目标变量转换

我使用了公开笔记中的转换方法(Kaplan, Nelson 等)和 Rank Gauss 转换。
因为使用 Kaplan 等方法会减少目标变量的唯一值数量,我担心信息量会减少。
因此我使用了不减少唯一值的 Rank Gauss 转换,随后 LB(Leaderboard)略有提升。

[简单 XGB 结果]

CV Public LB Private LB
Kaplan 0.675
Nelson 0.680 0.685 0.688
Rank Gauss 0.680 0.686 0.689

模型

我实施了两次 30 个模型的堆叠。
当进行第 n 次堆叠时,我使用第 n-1 次的 OOF 作为特征。

30 个模型 = GBDTs(XGB, CAT, LGB) : 3 * 各种目标和设置 : 10

[集成结果(详情见下文)]

CV Public LB Private LB
无堆叠及以下集成 0.687 0.689 0.693
第 1 次堆叠及以下集成 0.690
第 2 次堆叠及以下集成 (最终提交) 0.694 0.691 0.695

集成

我使用 Rank Gauss 转换后的目标变量实施了如下集成:

  1. 集成仅用 efs=1 数据训练的模型和用所有数据训练的模型
  2. 如果上述预测低于相对于全数据模型预测的阈值,则用全数据训练模型的预测进行替换。
    y_pred.loc[oof['pred']<threshold,'prediction'] = oof['pred']

我认为竞赛分数由两部分计算得出。一部分 (a) 是比较每个 efs=1 的预测,另一部分 (b) 是比较 efs=0 预测对抗 efs=1 预测。
通过仅训练 efs=1 数据,'a' 部分分数会非常高。
'a' 部分分数可以通过集成 1 来改进。
'b' 部分分数可以通过集成 2 来改进。

[第 2 次堆叠结果]

'a' 部分 (efs=1) CV CV (a+b 部分)
efs=1 数据模型 0.745 0.561
所有数据模型 0.597 0.686
集成 1 0.684 0.669
集成 2 (最终提交) 0.680 0.694

无效的方法

・目标编码 (Target encoding)
・使用 Umap/t-SNE 作为特征

同比赛其他方案