517. Open Problems - Multimodal Single-Cell Integration | open-problems-multimodal
首先,我们要感谢主办方提供了如此有趣的挑战,同时也感谢让我们有机会使用 Saturn cloud。
由于主办方最初提供了公开榜单和私有榜单划分方式的信息,我们决定利用这些信息,设计尽可能接近私有榜单测试集的本地验证方案。因此,可以说我们对公开榜单的排名并不太关注。
验证方案如下图所示(针对 citeseq 任务部分)。由于训练数据集中有三天,分割数为6;multiome 任务的方案相同,但由于天数较多,分割数为9(在最后阶段我们稍微修改了方案,使得验证集总是只包含最近的一天)。
由于训练数据集中最后一个可用日期总是包含在验证折叠中,我们无法使用这种验证方案进行传统的折叠融合。因此,当我们想要提交时,我们使用了带有打乱功能的常规 KFold 验证。
具体方法如下:所有的假设和实验,包括超参数调整,都在“真实 CV”上进行测试,之后这些模型在 KFold 上重新训练。
我们在两个任务中都使用了 PCA 进行降维。我们也尝试了自编码器,但效果略逊于 PCA。
对于 citeseq 任务,我们还以原始形式使用了“重要”特征。
此外,我们基于元数据对“重要”列进行聚合,创建了一些额外特征(例如 "mean_feature_1_by_donor")。这些特征在本地 CV 上为 GBDT 模型带来了 +0.0003 的提升。
pyBoost 似乎是多输出任务的新 SOTA(至少在 GBDT 模型中)。它仅使用 GPU,训练速度极快,且非常易于定制。
在解决 multiome 任务时,我们注意到第7天的性能显著下降(在“真实 CV”上)。我们推测原因可能是时间上的数据漂移,因此我们尝试不使用所有可用天数,而仅使用最后一个可用天数来训练模型。在本地,这使我们的分数提高了 +0.02。
然而,问题在于公开榜单中没有未见过的天数,因此仅在最后一个可用天数上训练模型严重拉低了我们的公开分数(从 0.814 降至 0.808)。尽管如此,我们决定遵循“相信你的 CV”这一信条,结果这一特定提交成为了我们在私有榜单上的最佳成绩。
我们还进行了一项关于天数相似性的研究,发现在可用的训练天数中,第3天与私有榜单的第10天最相似(第7天是第二相似的)。尽管如此,由于对于其他天数来说,最相似的天数总是时间上最接近的那一天,我们最终决定在第7天的数据上训练模型。