返回列表

2nd Public/13th Private Solution

616. NeurIPS 2024 - Predict New Medicines with BELKA | leash-BELKA

开始: 2024-04-04 结束: 2024-07-08 药物研发 数据算法赛
2nd Public/13th Private Solution
作者: M Sato 及队友
发布日期: 2024-07-09
竞赛排名: 第 13 名 (私有榜) / 第 2 名 (公开榜)

公开榜第 2 名/私有榜第 13 名解决方案

我们要感谢 Kaggle 组织了如此有趣的竞赛。我们也感谢 @tetsuya3510@hengck23@ahmedelfazouan 分享了影响我们解决方案的 Notebook。非常感谢我的队友 @yyyu54@Ogurtsov@antoninadolgorukova 并肩作战,直到我们用完了所有 480 次提交机会。我们都在同一时间达到了竞赛大师(Competitions Master)等级!

方法概述

我们针对具有共享构建块(Shared Building Blocks)和非共享构建块的分子采用了不同的方法。

1. 共享构建块

我们使用了 CNN、GBDT 和 GNN 模型的集成。

CNN 模型

这是基于 @ahmedelfazouan 的优秀公开 Notebook 的两个变体。
数据: 与公开 Notebook 中使用的数据集相同(链接)。
模型架构:
CNN Model Architecture
主要改动: 我们将滤波器大小从 32, 64, 96 加倍至 64, 128, 192;卷积核大小从 3, 3, 3 增加至 19, 9, 3。ReLU 激活函数被替换为 SiLU。此外,对于第二个模型,我们在嵌入层后添加了一个双向 GRU 层,并将其与全局最大池化后的卷积层连接起来。
训练参数: 见文末表格。
我们对上述两个模型进行了加权平均,这两个模型分别使用了包含和不包含验证集的数据进行训练,总共使用了四个 CNN 模型。

其他模型:

XGBoost (使用 R 编写), LightGBM (使用 Python 编写):

为了达到最大的多样性,模型在不同的训练数据子集上使用不同的特征进行训练。所有模型均针对每种蛋白质单独训练(代码链接)。
数据: 包含所有结合分子的样本以及非结合分子的随机样本(GBDT 总共 5000 万或 4000 万,chemprop 为 1000 万)。
特征: 对于一个模型,我们将 chemprop(版本 2.0,FFN 中第 3 个线性层的输出)的预测值添加到 SECFP4 (bits=1024);对于另外两个模型,我们将 BB 活性特征(当给定 BB smiles 出现在给定位置时结合的化合物比例)添加到 ECFP4 (bits=1024)。对于 LightGBM,我们使用了 SECFP4 (bits=1024) 和 SECFP6 (bits=2048)。
训练: 一个模型在训练数据的 5 个部分上训练了五次,每个部分缺少 20% 的随机 BB,其他模型在 5000 万样本上训练(排除验证集和测试集子集)。
XGBoost 训练参数: eta 0.05, max_depth: 25, subsample: 0.2, sampling_method: gradient_based, colsample_bytree: 0.4, min_child_weight: 4, gamma: 2, num_boost_round = 5000, early_stopping_rounds = 30。
LightGBM 训练参数: max_depth: 11, bagging_fraction: 0.9, learning_rate: 0.05, colsample_bytree: 1, colsample_bynode: 0.5, lambda_l1: 1, lambda_l2: 1.5, num_leaves: 490, min_data_in_leaf: 50。

GNN:

我们使用了 @hengck23 的这个公开 Notebook,并做了 minor 改动(原子类型列表被截断为训练/测试集分子中的实际原子)。

对于这部分,我们使用加权平均来集成每种蛋白质的预测,使用本地分数(与 leaderboard 完美相关):BRD4: 4 个模型,HSA: 7 个模型,sEH: 5 个模型。

2. 非共享构建块

为具有非共享 BB 的分子创建可靠的交叉验证很困难,因此我们基于公开榜分数进行了两种集成方法,并将它们用于最终提交。

最终提交 1 (公开榜 0.488/私有榜 0.275):排名集成

对于此解决方案,为了最小化由于公开榜和私有榜分数差异引起的波动,我们对以下两个基于 ChemBERTa 的模型进行了集成,这两个模型在非共享块中对所有蛋白质都给出了相对较好的预测。我们将每个模型的预测转换为排名,以考虑模型之间的尺度差异。
模型架构:
ChemBERTa Model Architecture

训练参数: 见下表。
对于上述两个模型,在五个随机折上对每个 epoch 进行预测。这些预测的平均值是在总共 5 个 epochs × 5 个折 × 2 个模型上计算得出的。

最终提交 2 (公开榜 0.529/私有榜 0.277):按蛋白质排名集成

我们使用了一个 XGBoost 模型(ECFP4 特征,如上所述在 5 个训练数据子集上训练,但在具有非共享 BB 的子集上进行验证),以及七个具有不同分类头和训练参数的 ChemBERTa 模型。我们对每种蛋白质的每个模型进行评分,并考虑分数和预测的多样性来选择权重(BRD4: 4 个模型,HSA: 3 个模型,sEH: 4 个模型)。很难详细描述所有八个模型,因此权重最高的两个模型在最终提交 1 中进行了描述(欢迎随时提问!)。

训练参数:

设置 CNN ChemBERTa
优化器 Adam Adam
学习率 1e-3 3e-4
优化器动量 beta1, beta2 = 0.9, 0.999 beta1, beta2 = 0.9, 0.999
优化器权重衰减 0.05 0.01
批次大小 4096 1024
训练轮次 50 5
ReduceLROnPlateau patience, factor = 3, 0.05 /
早停 (EarlyStopping) patience = 5 /
同比赛其他方案