返回列表

First Kaggle competition : 10th place public leaderboard; Nth place private leaderboard

588. CAFA 5 Protein Function Prediction | cafa-5-protein-function-prediction

开始: 2023-04-18 结束: 2023-12-20 药物研发 数据算法赛
首次参加Kaggle竞赛:公共排行榜第10名,私人排行榜第N名

首次参加Kaggle竞赛:公共排行榜第10名,私人排行榜第N名

作者:Zong Ming Chua
发布日期:2023-08-22
最终排名:第4名

引言

首先,我要感谢主办方举办了一场非常精彩的比赛。比赛基于Kaggle平台开展,相比以往主要局限于专业实验室的参赛情况,这次竞赛向更广泛的人群开放了提交通道,能让更多人接触CAFA挑战实在令人欣慰。我们团队为这个问题付出了巨大努力,虽然在排名中未能达到预期目标,但回顾我们取得的进步仍令人谦卑。我们两人都是分子生物学家,在生物信息学和机器学习方面的经验有限,因此这次竞赛对我们来说如同一次"火的洗礼",从中学习到了很多。

方法

我们在模型中使用了以下数据集:
1) Prot-T5、ESM2和Ankh蛋白质语言模型(PLM)嵌入表示。我们对PLM的输出没有进行任何修改或微调,仅转换为float32格式以节省内存。
2) 一个表示每种蛋白质物种分类的二进制矩阵。
3) 通过对与每种蛋白质关联的学术论文摘要进行tf-idf分析获得的文本信息。

对于GO标签,我们分别从每个本体中按IA*频率排序选取了1500个BPO、800个CCO和800个MFO术语作为分类目标。

为确保跨数据集的一致性排序,所有数据集均按字母顺序排序,并移除了测试数据中的单个重复行。

我们使用Keras构建了一个简单的密集神经网络,将上述数据作为独立输入,在最终层连接起来以预测单个GO本体/域的所有标签。我们使用二元交叉熵(BCE)作为损失函数,Adam优化器(学习率lr=0.0003)和简单的学习率调度器。在调用model.fit()时,我们进一步使用IA权重作为class_weight。模型中还添加了dropout和批归一化层。

我们的模型使用KFold=5在训练数据的5个不同随机划分上进行了训练,然后对每个本体/域的预测结果进行简单平均,最后将结果连接起来。

我们观察到一个有趣的现象:在某些本体上,岭回归在PLM嵌入上的表现有时优于神经网络,这出乎意料,可能表明神经网络存在欠拟合问题。

未成功的方法

ProtBert嵌入表现不佳,最终完全没有使用。
STRING数据库的数据在最终模型中证明没有帮助。
我们尝试使用单独的Transformer层来处理通过Anc2Vec生成的标签嵌入(https://academic.oup.com/bib/article/23/2/bbac003/6523148),但并未提升模型性能。
我们尝试使用层次感知损失函数(https://papers.nips.cc/paper/2020/file/6dd4e10e3296fa63738371ec0d5df818-Paper.pdf),但其表现不如BCE。

得分

仅使用PLM嵌入和分类学信息,我们获得的公共排行榜(PL)分数约为0.55。加入文本信息后,PL分数提升至约0.58。
与公开的集成笔记本(https://www.kaggle.com/code/adaluodao/merge-datasets)进行集成后,PL分数进一步提升至约0.62。

更新

最终获得第4名!
生成我们模型的代码可在以下链接找到:
https://github.com/zongmingchua/cafa5
最终集成代码:
https://www.kaggle.com/code/zmcxjt/merge-datasets

同比赛其他方案