返回列表

4th place solution (with code)

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

开始: 2022-08-15 结束: 2022-11-15 基因组学与生物信息 数据算法赛
第4名解决方案(含代码)

第4名解决方案(含代码)

作者:Oliver Wang
比赛排名:第4名

简介

首先,感谢 Kaggle 团队和 Open Problems 团队举办了如此精彩的比赛。我也要感谢所有的参赛者,特别是那些愿意分享代码和想法的慷慨参赛者,如 @ambrosm@alexandervc@baosenguo@pourchot 等。没有他们的帮助,我不可能走得这么远。

你可以在 Github 上找到完整代码。

Cite 部分

数据预处理

起初,我所有的特征工程方法都基于原始数据,但在仅仅将数据源更改为原始数据后,我的公开分数从 0.812 提高到了 0.813,因此所有的特征工程过程都基于原始数据。

我的预处理方法是使用 np.log1p 处理原始数据。我也尝试过其他预处理方法,如 MAGICTF-IDF,但它们无法提高我的 CV 分数。

特征工程

模型的最终输入主要由六部分组成。其中三部分是降维部分,包括 TsvdUMAPNovel’s method。其余是特征选择部分,包括 name importancecorr importancerf importance

  • Tsvd: TruncatedSVD(n_components=128, random_state=42)
  • UMAP: UMAP(n_neighbors=16, n_components=128, random_state=42, verbose=True)
  • Novel’s method: 原始方法可以在这里找到。起初,我想用这个预处理方法替换简单的 log1p,但在用 Novel’s methodTsvd 结果替换 log1pTsvd 结果后,我发现 CV 分数下降了。但如果保留两者,CV 分数会稍微提高一点。所以我保留了 Novel’s methodTsvd 结果。
  • name importance: 主要基于 AmbrosM 的notebook。但在匹配时我添加了来自 mygene 的额外信息。稍后我会发布完整的预处理代码,具体结果可以在那里找到。
  • corr importance: 顾名思义,我选择了与目标相关性最高的前 3 个特征。存在重叠,选择的特征数量约为 104 个。
  • rf importance: 由于随机森林的特征重要性可能也适用于 NN 和其他模型,所以我选择了随机森林模型的前 128 个特征重要性。

我也尝试过其他方法,包括 PCAKernelPCALocallyLinearEmbeddingSpectralEmbeddingPCA 几乎没有帮助,并且与 Tsvd 一起使用时会导致严重的过拟合。我无法在 24 小时内完成流形方法,所以我放弃了它们。

模型

我实施了类似私有测试的 CV 策略,但事实证明类似公开测试的策略更好。所以所有结果都基于 donorsGroupKFold。我在比赛中进行了三层堆叠,并且还对堆叠结果和独立模型的结果进行了集成。以下是我使用的模型,稍后我也会发布代码。

方法 Stacking NN NN_online CNN kernel_rigde LGBM Catboost