返回列表

3rd place solution

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

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

第3名解决方案

作者: Makotu (Grandmaster) | 比赛排名: 第3名

首先,感谢组织者、Kaggle管理团队以及所有与我一起参赛的选手,感谢你们组织了一场精彩的比赛!

在开始这次比赛之前,我对生物学领域一无所知。说实话,我现在仍然不太了解。
(正因为这是一个我完全陌生的领域,也许我才能不带偏见地尝试各种方法吧……?)

我想在下方分享我的解决方案。如果因为我的英语水平不高导致阅读困难,请多多包涵。


摘要

Multiome 部分

预处理

特征工程

基本上,预处理对准确率的贡献很大,但以下特征也对准确率有一定贡献。

  • 二进制特征 (Binary feature)
    将数据转换为 0/1 二进制格式,并通过 svd 降维至 16 维作为特征。
  • Word2Vec 向量特征
    对于每个细胞,选取表达水平最高的前100个基因排列起来,使用 gensim 进行向量化,获得每个基因的特征向量(16维)。
    https://radimrehurek.com/gensim/models/word2vec.html
    例如:
    CellA: geneB → geneE → geneF → …
    CellB: geneA → geneC → geneM → …
    使用每个细胞中前100个基因的向量平均值作为特征。
  • Leiden 聚类均值特征
    我使用 muon 的 leiden 聚类(23个簇)创建了聚类。
    https://muon.readthedocs.io/en/latest/api/generated/muon.tl.leiden.html#muon.tl.leiden
    在计算每个簇的特征平均值(23 簇 × 228942 特征)后,通过 svd 将其降维至 16 维并作为特征(23 簇 × 16 特征)。之后,基于聚类进行连接。
  • 连接矩阵特征 (Connectivy matrix feature)
    由于 muon 的 leiden 聚类会生成细胞间的邻接矩阵作为副产品,我也通过 svd 将其处理为 16 维特征来使用。

模型

  • MLP
    • 简单的4层 MLP;与公共笔记本中的 MLP 没有太大区别。
    • 目标变量通过 svd 降维至 128 维。
    • 使用 RMSE 损失函数。
  • CatBoost
    • 目标变量通过 svd 降维至 128 维。

集成

  • 我利用各种特征组合构建了近 20 个 MLP 和 3 个 CatBoost 模型,并采用了基于交叉验证(CV)的加权平均。

Cite 部分

预处理

  • 应用了与组织者相同的处理流程。
    use sc.pp.normalize_per_cell and sc.pp.log1p(排除了与目标蛋白显著相关的基因)

特征工程

我制作了很多特征,以下是一些效果较好的特征。

  • Leiden 聚类特征
    我使用 muon 的 leiden
同比赛其他方案