返回列表

16 th Solution

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

开始: 2024-12-04 结束: 2025-03-05 临床决策支持 数据算法赛
第 16 名解决方案 - Equity Post HCT Survival Predictions

第 16 名解决方案

作者: Luck is all you need (yxw666)

团队成员: leaf, yueming, DeepMayNotLearn

发布时间: 2025-03-11

竞赛排名: 16

竞赛名称: Equity Post HCT Survival Predictions

1. 致谢

首先,我想向以下开源作者和我的团队表示崇高的敬意:

(以上排名不分先后)

2. 方案介绍

2.1 神经网络 (NN)

2.1.1 多目标神经网络 (Multi-target NN)

A:目标一:CoxPHFitter 的交叉验证 (CV)

B:目标二:custom_target 尽可能地将 0 和 1 分开

def custom_target(self): 
        cus_target =  self.data[['efs','efs_time']]
        cus_target['y'] = self.data.efs_time.values
        mx = cus_target.loc[cus_target.efs==1,"efs_time"].max()
        mn = cus_target.loc[cus_target.efs==0,"efs_time"].min()
        cus_target.loc[cus_target.efs==0,"y"] = cus_target.loc[cus_target.efs==0,"y"] + mx - mn
        cus_target.y = cus_target.y.rank()
        cus_target.loc[cus_target.efs==0,"y"] += 2*len(cus_target)
        cus_target.y = cus_target.y / cus_target.y.max()
        cus_target.y = np.log( cus_target.y )
        cus_target.y -= cus_target.y.mean()
        cus_target.y *= -1.0    
        return cus_target

我们训练了两个简单的模型(CNN,DNN)来拟合这两个目标。

2.1.2 开源 ODST (Opensource ODST)

我们做了一些更改:

  • 1. 用 train[col].mode()[0] 填充未见过的类别,而不是 np.nan。
if ind.any():
    val.loc[ind, col] = train[col].mode()[0]
  • 2. 使用权重(每个 fold 的 race_index)来集成每个 fold。

2.1.3 我们的 ODST(纯 torch 版本,不使用 torch lightning)

  • 1. 来自 yunsuxiaozi 笔记本的一些额外特征。
  • 2. 稍微更改了超参数。
  • 3. 使用权重集成每个 fold 的最佳指标。
  • 4. 使用 seed_torch(42+fold) 来训练每个 fold 的模型。

2.2 GBDT 树模型

对于树模型部分,我们使用两个具有不同特征的分类树进行后处理。并使用 xgboost、lightgbm 和 catboost 来训练公共代码中提到的通用目标。我们树模型使用的特征在公共代码中很容易看到。

3. 方案概述

更多细节请参考:https://www.kaggle.com/code/kudosn/nn-tree-ensemble

方案结构图

(方案结构图)

提示: 如果想运行此 notebook,请将 from cib_metric import score 改为 from metric import score,我们刚发现 UTILITY SCRIPTS 已被删除。

4. 最后,请允许我再次向开源工作者表示崇高的敬意

致谢图片

(惊喜图片)

同比赛其他方案