返回列表

1st private (1st public) place + code

388. TReNDS Neuroimaging | trends-assessment-prediction

开始: 2020-04-23 结束: 2020-06-29 医学影像分析 数据算法赛
第1名(私有榜第1,公开榜第1)方案 + 代码

第1名(私有榜第1,公开榜第1)方案 + 代码

团队: Nikita Churkin (@churkinnikita), Dmitry Simakov (@simakov)
比赛: TReNDS Neuroimaging Competition

首先,感谢组织者、Kaggle 团队和所有参与者:这对我们的团队来说是一个重要且非常令人兴奋的挑战。此外,我们要感谢在 Kaggle 讨论区祝我们好运的每一个人。

我们方法的核心是:

  • I. 从 3D fMRI 数据中生成强大的特征。
  • II. 训练集-测试集的“匹配”。
  • III. 训练多样化的集成模型(不同的模型和特征子集)。
  • IV. 将所有内容组合在一起。

让我们详细描述一下细节。

I. 从 3D fMRI 数据生成特征

起初我们尝试使用 3D CNN 模型,但没有在上面花太多时间。一个小型网络(没有预训练的 resnet10)配合 AdamW、L1 正则化、ard 层、快照和 CutOut3D 增强作为回归器效果更好。3D 自编码器(简单的或类似 UNet 的)+ PCA(或 ICA)也有效,但对我们来说效果稍差。

总体得分相当低(只有 age 和 domain2-var2 高于中位数预测),并且与其他特征的组合很困难(3D CNN 模型训练 10 个 epoch,而基于 loadings 和 fnc 的 MLP 训练 70 个 epoch)。所以我们(主要是 @simakov)认为这对许多前 20 名的参与者来说是一个太难的问题,他们必须使用不同的方法(很高兴我们错了,你们的解决方案很酷且有趣!)。

我们的研究表明,(显然)最重要的问题是 3D 数据的高维性。大多数相关论文使用某种降维方法来解决这个问题。我们在该过程之后已经有了数据(见数据描述)。但我们想更进一步。如果我们理解正确的话,数据准备流程包括两个阶段:受试者内水平和受试者间水平(如果能从 @miykael 那里听到更多关于这方面的信息会很酷)。对于第二个阶段,我们必须处理所有受试者,但它们无法放入内存。Nipype 也许可以处理这样的数据,但对于快速使用来说太复杂了(而且 @miykael 出色的笔记本也没有帮助)。所以,我们使用了经典工具——sklearn!Sklearn 有一些用于小批量降维的算法:字典学习和增量 PCA,带有有用的方法 partial_fit

理论上,我们倾向于使用尽可能多的组件(3D 扫描中可能包含大量信息),使用尽可能多的特征(通道)(为了它们之间更好的交互),并拥有最小的批量大小(内存限制)。该算法的条件是 batch-size >= n_components。

最有用的方案是 n_components 为 200,batch-size 为 200 的增量 PCA。我们将通道按每组 10 个分割并在内部展平(总共 6 组)。所有训练在 24 线程处理器和 64GB 内存上耗时 9 小时。结果,我们得到了 1200 个 PCA 特征,它们将我们的模型提升了 2.3e-3。为了增加多样性,我们还尝试了 n-components 100,batch-size 100 和 n-iters 10 的字典学习(训练过程耗时 2 天)。我们在训练集 + 测试集上拟合模型,没有任何额外的预处理(不同的设置会产生较低的分数或需要更多的内存)。

我们拒绝在提交中使用 3D CNN 模型——时间太长了,而且我们已经在 CV 和公开 LB 上看到了很好的分数。

此外,我们计算了一些简单的统计数据,如 3D 扫描每个特征内的平均值、标准差和分位数,以及 FNC 矩阵的类似统计数据。

II. 训练集-测试集匹配

构建特征的预处理

这个想法其实很简单:在测试集的不同列中添加偏置,使其更接近训练集。线性模型在比赛中表现良好,因此预期添加偏置会有很大帮助(至少对于线性模型而言)。有很多方法可以找出可能的偏置:我们使用了最小化 train[col] 和 test[col]+ b 之间的 Kolmogorov-Smirnov 检验统计量。

Offsets distribution

您可以看到结果分布并不完美匹配,但所有差距基本消失了:这足以显著提升任何单一模型或整个集成的公开/私有分数。我们对 site2 数据(已知点 + 分类器输出)使用了偏置,并对其他测试数据使用了单独的偏置。

同样的逻辑可以应用(作为后处理)于提交。

设计良好的 site2 分类器