517. Open Problems - Multimodal Single-Cell Integration | open-problems-multimodal
首先,感谢 Kaggle 团队和 Open Problems 团队举办了如此精彩的比赛。我也要感谢所有的参赛者,特别是那些愿意分享代码和想法的慷慨参赛者,如 @ambrosm、@alexandervc、@baosenguo、@pourchot 等。没有他们的帮助,我不可能走得这么远。
你可以在 Github 上找到完整代码。
起初,我所有的特征工程方法都基于原始数据,但在仅仅将数据源更改为原始数据后,我的公开分数从 0.812 提高到了 0.813,因此所有的特征工程过程都基于原始数据。
我的预处理方法是使用 np.log1p 处理原始数据。我也尝试过其他预处理方法,如 MAGIC 和 TF-IDF,但它们无法提高我的 CV 分数。
模型的最终输入主要由六部分组成。其中三部分是降维部分,包括 Tsvd、UMAP 和 Novel’s method。其余是特征选择部分,包括 name importance、corr importance 和 rf importance。
TruncatedSVD(n_components=128, random_state=42)UMAP(n_neighbors=16, n_components=128, random_state=42, verbose=True)log1p,但在用 Novel’s method 的 Tsvd 结果替换 log1p 的 Tsvd 结果后,我发现 CV 分数下降了。但如果保留两者,CV 分数会稍微提高一点。所以我保留了 Novel’s method 的 Tsvd 结果。mygene 的额外信息。稍后我会发布完整的预处理代码,具体结果可以在那里找到。我也尝试过其他方法,包括 PCA、KernelPCA、LocallyLinearEmbedding 和 SpectralEmbedding。PCA 几乎没有帮助,并且与 Tsvd 一起使用时会导致严重的过拟合。我无法在 24 小时内完成流形方法,所以我放弃了它们。
我实施了类似私有测试的 CV 策略,但事实证明类似公开测试的策略更好。所以所有结果都基于 donors 的 GroupKFold。我在比赛中进行了三层堆叠,并且还对堆叠结果和独立模型的结果进行了集成。以下是我使用的模型,稍后我也会发布代码。
| 方法 | Stacking | NN | NN_online | CNN | kernel_rigde | LGBM | Catboost |
|---|---|---|---|---|---|---|---|