返回列表

9th place solution – strong fundamentals

517. Open Problems - Multimodal Single-Cell Integration | open-problems-multimodal

开始: 2022-08-15 结束: 2022-11-15 基因组学与生物信息 数据算法赛
第9名方案 – 扎实的基础

第9名方案 – 扎实的基础

作者: vialactea (Grandmaster)
比赛: Open Problems in Single-Cell Analysis

感谢 Open Problems in Single-Cell Analysis 和 Kaggle 组织了这场激动人心的比赛。从小时候起,我就对理解事物的运作方式充满热情。有三个话题最让我着迷:宇宙是如何运作的(天体物理学和量子力学),大脑是如何运作的(AI),以及生命是如何运作的(遗传学和分子生物学)。这次比赛是一个绝佳的机会,可以将其中两个话题结合起来。不幸的是,我没能达到我来之前的期望。我没能想出任何有潜力推动该领域发展的好点子。许多年前,我读过几本关于遗传学的书,从《被遗忘祖先的阴影》(卡尔·萨根的超级粉丝)开始,但不幸的是,这些书在科学内容上都很浅显。我相信我在该领域的“文盲”状态是一个太大的障碍,难以克服。

我要祝贺获胜者,并感谢所有分享知识和想法的人,特别是 @ambrosm、@psilogram 和 @pourchot。我还要感谢并赞扬 @alexandervc 的贡献以及他激励他人和推进比赛相关科学的不懈努力。

我的旅程

在阅读了比赛描述、查看了数据、阅读了一些帖子并浏览了几个笔记本后,我列出了一组要尝试的想法。在那个阶段,我的希望主要寄托在其中的两个上:对未使用的测试数据进行伪标签和 NLP transformer 模型。我的计划是建立一个强大的模型,生成伪标签,改进模型以获得更好的标签,结合 transformer 模型,更好地理解问题,想出一些突破性的想法,并有充足的时间去探索它。我知道 cite 在 PB 分数中的权重更大,但我认为 multi 的低分数提供了一个更好的差异化机会。尽管我关注的是 multi,但我通常会先为 cite 编写新代码(创建输入、训练、分析结果、预测、集成),然后再针对 multi 进行调整。当时的想法是 cite 较小的数据量更容易让代码正确运行。

对能够产生伪标签的强大模型的需求导致了对集成的极大关注,我认为这对我的表现是不利的。此外,数据的大小证明是一个比我预期大得多的挑战。我投入这场比赛的时间中,超过 90% 的时间都花在了试图在 Kaggle 可用的内存范围内让事情正常运行上。我花了一段时间才建立起我的第一个集成并进行伪标签训练。结果非常令人失望。我想知道是因为模型对未见数据的泛化能力更好,还是伪标签根本不起作用。我又花了一些时间改进基础模型并再试一次,但结果同样糟糕。

然后我专注于对模型进行一些其他小的改进,同时构建一个更易于管理的整体流程(我将处理分成几个部分以应对内存和磁盘限制)。然后,家庭的需求以及近期股市暴跌期间重新审视几个潜在投资分析的需要,占用了我大量的个人时间。不知不觉中,比赛结束了,我还没有超越那些更基础的东西。如果重来一次,我会更多地关注更好地理解科学、更好的特征工程和更好的单个模型。

CV 策略

CV 策略是我定义的第一件事。根据我对问题的理解,我们必须做出两种类型的预测,为此我设计了两种不同的 CV 方法:

预测目标 CV 方法
3个已知捐赠者的未来某天 day (d):基于天数的3折交叉验证(multi为4折)
未知捐赠者的未来某天 day/donor (dd):基于天/捐赠者的9折交叉验证(multi为12折)。训练数据排除验证折中捐赠者或天数的任何记录。

虽然这个策略让我对结果有信心,但它的缺点是在训练期间留下了大量数据没用上。我决定改进这种方法,使用 day/donor 的一种变体,即我会将训练样本扩展到任何与验证集不属于同一捐赠者/天的数据(dde)。这种方法的缺点是它会过拟合,其结果不能完全信任。优点是它可以使用更多数据,从而产生更好的模型。下图说明了这 3 种方法,以及我如何将它们用于我选定的两次提交。

CV Strategy Diagram

正如你可能注意到的,我不关心 LB 排名范围。我没指望绝对的 LB 分数有什么意义,所以我只用它来检查 CV 的改进是否会转化为 LB 的改进。所有方法都提供了良好的 CV/LB 相关性,只有一个明显的例外,我怀疑是由 bug 引起的。

解决方案

特征工程

我在由 Optuna 优化的模型中使用了以下输入特征的组合:

  • Raw(原始):