返回列表

9th Place Solution

388. TReNDS Neuroimaging | trends-assessment-prediction

开始: 2020-04-23 结束: 2020-06-29 医学影像分析 数据算法赛
第9名解决方案

第9名解决方案

作者: Giba (Grandmaster) | 比赛排名: 第9名

我参加这次比赛的时间比较晚,所以我采用了“暴力攻击”的策略。

我的解决方案基本上是一个大型的三层堆叠集成表格模型。
我的最终预测包含了24个基线模型:

  • 6x Ridge
  • 1x Lasso
  • 3x RAPIDS SVR
  • 2x XGboost
  • 2x KNN
  • 9x MLP
  • 1x 2D CNN

每个模型都使用不同的数据集进行训练,其中包括原始特征和从3D脑部扫描中提取的额外工程特征。

对于第二层的堆叠预测,我使用了4个模型:

  • BaggingRegressor(base_estimator=Ridge)
  • KNeighborsRegressor
  • NuSVR
  • RandomForestRegressor

我的最终预测是这4个模型的加权平均值。我最终的本地CV分数是0.1559,LB分数是0.15724(Public)/ 0.15742(Private)。我认为本地分数和LB分数之间的差距是由于一些site2的差异造成的。

每个fMRI扫描有4个维度(53, 52, 63, 53),这使得提取特征变得很困难。基本上,第一个轴代表53次不同的扫描(与时间无关),所以每次脑部扫描的维度只有(52, 63, 53)。

为了从fMRI数据中提取特征,我尝试了很多方法,但效果更好的方法是计算比较两次不同扫描图像的指标。所以,我的大部分特征是每个患者所有53次扫描的两两交互作用。通过这种方式,我创建了数千个特征来描述每个fMRI。

为了让MLP工作得更好,我必须在所有层中使用BatchNorm,并使用大约0.7~0.8的Dropout来保证良好的泛化能力。这是我模型中的一个关键点,因为大多数特征的信号非常小,或者只是随机噪声。

我的2D CNN是使用每个3D图像在x、y、z三个轴上的投影进行训练的。所以每个fMRI扫描被简化为一个2D表示。该模型的本地得分是0.17x。

  • 自动编码器嵌入对我来说没有效果。
  • 3D CNN对我来说得分很差,我很后悔没有在堆叠中使用它,因为顶级解决方案都用到了。
  • 针对site2的后处理对Public LB只有一点点作用。
  • 特征选择会导致训练集过拟合,所以我没有使用它。
  • 我很惊讶在这个小数据集(5877行)上使用简单的KFold进行交叉验证在堆叠中效果这么好。
  • RAPIDS t-SNE 特征没有起作用。
同比赛其他方案