deepNF: deep network fusion for protein function prediction
- 杂志: Bioinformatics
- IF: 4.531(2018)
- 分区: 2区
- github
Introduction
早期研究
自动化蛋白质功能预测能够提高我们的效率,特别是在高通量分子组学诞生后,一些网络(蛋白质交互网络PPI、基因交互网络、基因共表达网络、代谢网络等)被发现。从这些网络中提取拓扑特性可能是理解蛋白质功能的重要一环,原因如下:
- 相同功能的蛋白质可能是相互作用的【Sharan et al., 2007】;
- 相同功能的蛋白质可能在交互网络中有相似的拓扑属性【Milenkovic and Przulj, 2008】;
- 相同功能的蛋白质可能属于同一个复合物或pathway【Chen et al., 2014】。
CAFA【Radivojac et al., 2013】和MouseFunc【Pena-Castillo ~ et al., 2008】代表了一类尝试,其利用了大量的数据(network、sequence、structure等)来进行功能预测,这会优于只使用单个数据的方法【Cozzetto et al., 2013; Lanckriet et al., 2004; Wass et al., 2012】,但整合多种数据造成的复杂性和稀疏性也带来了挑战。本研究专注于network-based features的integration,更容易得到一般性的结论,并且容易和其他工作进行比较。
早期的network integration的研究:
- Bayesian inference【Franceschini et al., 2013; Lee et al., 2011】;
- kernel-based methods【Yu et al., 2015】,如GeneMANIA【Mostafavi et al., 2008; Mostafavi and Morris, 2012】;
上述方法会首先将多个来源的往来进行合并,整合成一个网络,然后再输入基于graph kernel的supervised或semi-supervised model去进行训练,这使得网络合并的时候可能损失了一些信息【Cho et al. (2016)】。
- 【Yan et al., 2010】在每个网络上训练一个classifier,然后使用ensemble learning的方法来将这些预测合并
但这样的方法又不能考虑到不同网络间的相互关系。
另外,这些方法还面临诸多问题:
- 网络的层次关系【Barutcuoglu et al., 2006】;
- negative examples(没有指定功能的proteins)【Youngs et al., 2013】;
- 不完整的功能注释【Gligorijevic et al., 2014】。
相关工作
Mashup【Cho et al., 2016】,可以克服fusing noisy和网络不完整的问题。流程为:
- matrix factorization得到低维表示;
- 使用SVM训练classifier预测功能标签。
这项工作重要的地方在于feature learning的过程(也称为network embedding)。但挑战也在于此,方法必须能够将network structure中的connectivity patterns学习到,基于:
- homophily(在网络中的距离)
- 其局部的连接模式,与在网络中的位置无关
而且学习到的特征在不同的蛋白质交互作用网络中是一致的。
实际上之前一些network embedding的方法,比如node2vec【Grover and Leskovec, 2016】和DeepWalk【Perozzi et al., 2014】,都是使用的一些shallow、linear的技术来实现的,这可能在捕捉非线性能力方面存在不足。
但实际上这两种方法都是node embedding的方法,不是network embedding的方法
但细一想,这篇文章的任务是学习蛋白质的低维表示,蛋白质确实是node,没错。只是他也把这个叫做network embedding而已。
基于当前Deep Learning技术的成功,一系列基于DNNs的方法【Cao et al., 2016; Grover and Leskovec, 2016; Wang et al., 2016】应运而生,而且在link prediction、network clustering、multi-label classification等领域取得了进步,但还没有研究致力于多种不同network类型的数据的整合。
本文概述
所以本研究提出了deep Network Fusion(deepNF)--一个整合多种网络数据学习蛋白质低维表示的方法:
- 能蹦捕捉多种PPI networks的复杂的topological patterns;
- 用于预测蛋白质的功能标签。
其使用分开的layers来分别学习不同的network types,然后使用deep AEs的架构将其融合到bottleneck layer的features中,最后使用SVM来进行预测。
deepNF的优势:
- 能够捕捉非线性特征,学习到的特征丰富;
- 能够处理noisy links,因为AEs被证明有降噪的效果【Vincent et al., 2010】;
- 可扩展,因为其特征学习的过程是无监督的。而且可以轻松地扩展到semi-supervised领域。
本研究将deepNF应用到human和yeast的STRING networks中来学习低维表示,使用GO annotation(2015)作为training label,并在GO annotation(2017)上进行验证。并和Mashup、GeneMANIA进行了比较,发现deepNF有显著的性能提升。
Methods
\(N=6\)表示不同的undirected weighted STRING networks,使用矩阵表示
\[\left\{\mathbf{A}^{(1)}, \mathbf{A}^{(2)}, \ldots, \mathbf{A}^{(N)}\right\}\]
每个矩阵有\(n\)个proteins,我们希望学习到一个\(d_c\)维的特征,其中\(d_c<<n\)。有下列3个步骤:
- 使用Random Walk with Restarts(RWR)和Positive Pointwise Mutual Information(PPMI)来捕捉networks中的结构信息;
- 使用AEs来融合PPMI matrices,提取低维特征;
- 使用SVM基于低维特征来预测功能标签。
1. RWR-PPMI表示
这里之所以选择RWR而不是node2vec和DeepWalk中的采样过程,是因为RWR计算更加方便、不需要额外的超参数调整。
进行Random Walk:
\[\mathbf{p}_{i}^{(t)}=\alpha \mathbf{p}_{i}^{(t-1)} \widehat{\mathbf{A}}+(1-\alpha) \mathbf{p}_{i}^{(0)}\]
\(\mathbf{p}_i^{(0)}\)是一个one-hot向量,其第\(i\)个元素是1。\(\alpha\)表示重启概率,用来控制其学习的特征是局部的还是全局的。是row-wise normalization后的邻接矩阵。
这里的意思是从某个点出发进行随机游走,则得到的sequence可以作为该点的特征
基于【Cao et al. (2016)】的操作,计算\(\mathbf{r}_i\)和\(\mathbf{R}\)
\[\mathbf{r}_{i}=\sum_{t=1}^{T} \mathbf{p}_{i}^{(t)}\]
\(T\)表示RW的步数,将所有的节点的\(\mathbf{r}_i\)组合形成\(\mathbf{R}\)。
表示的是在整个游走期间,到达某一点的"概率"。
当\(\alpha=1\)的时候
\[\mathbf{R}=\widehat{\mathbf{A}}+\widehat{\mathbf{A}}^{2}+\cdots+\widehat{\mathbf{A}}^{T}\]
其中\(\widehat{\mathbf{A}}^k\)是k阶邻接矩阵,即经过k次通路后是否相连。
所以,\(\mathbf{R}\)表示了network的高阶连接特性。
基于\(\mathbf{R}\)计算每个节点的PPMI表示
\[\mathbf{X}_{l m}^{(j)}=\max \left(0, \log _{2}\left(\frac{\mathbf{R}_{l m}^{(j)} \sum_{l} \sum_{m} \mathbf{R}_{l m}^{(j)}}{\sum_{l} \mathbf{R}_{l m}^{(j)} \sum_{m} \mathbf{R}_{l m}^{(j)}}\right)\right)\]
其中\(j\)表示network\(j\)。注意到,这个步骤可以直接在原始邻接矩阵上使用,但经过上两步可以减弱矩阵的稀疏性。
MI就是\(p(x,y)\)和\(p(x)p(y)\)的KL散度(相对熵),表示为\(\mathbb{E}_{p(x,y)}[\log{\frac{p(x,y)}{p(x)p(y)}}]\)。可以看得出来,上面的公式就是一个典型的MI。\(R_lm\)表示的是在\(l\)(或\(m\))的RW上出现\(m\)(或\(l\))的概率,所以经过归一化后可以看做是\(p(x,y)\),而分母可以看做是边际概率的乘积。MI是这些项的期望,则其每一项将都可以看做是每对点对所有点间相关性(即MI)的贡献。
2. 使用AEs整合networks
整个架构使用下图表示:
- 输入:\(\mathbf{X}^{(j)} \in \mathbb{R}^{n \times n}\)。
- 首先使用第一层,对每个网络分别提取器特征,激活函数是sigmoid。
- 第二层将得到的特征concat到一起,然后就是正常的NN的fc layers(L层),直到bottleneck layers,至此encoder结束。
- decoder是encoder的镜像。
- loss是binary cross entropy。
- 使用带有momentum的标准SGD进行训练,并探索了不同超参数(batchsize、lr、nums of hidden layers and units)的表现,结果在附录中。
3. 预测蛋白质功能
使用LIBSVM实现SVM来做分类,RBF kernel。
为了评价SVM的性能,使用了两种验证方式:
- 5-CV:将有标记的proteins分为training和testing,在training set中内嵌一个5-CV来进行超参数调整(RBF kernel的\(\gamma\)和正则化参数\(C\),grid search)。一共进行了10次交叉验证。
- temporal holdout validation:将GO annotation在2015和2017中相同注释的proteins作为training set,将2015和2017不同注释的proteins作为validation,将2015没有但2017补充的annotations作为test。使用validation调整超参数,在test上使用bootstrap验证1000次得到结果。【Jiang et al., 2016; Radivojac et al., 2013】
比较的方法:Mashup、GeneM,都使用了validation来进行超参数的调整。
评价指标:
- ACC
- Micro-averaged F1 score【Cho et al. (2016)】
- Micro-AUPR【Davis and Goadrich, 2006】
Macro是在类别的基础上平均,Micro是在样本的基础上进行平均。
Micro-AUPR指的是先把预测得分和标签都计算出来,然后将其concat到一起后计算一个AUPR值;Macro-AUPR是对每一个部分计算AUPR,然后平均。
f1 score是用下面的公式计算的: \[F_{\beta}=\left(1+\beta^{2}\right) \frac{\text { precision } \times \text { recall }}{\beta^{2} \text { precision }+\text { recall }}\] macro就是先计算每个类别的f1-score,然后平均;micro是先计算所有类别中的true positive、predicted positive、label positive,然后据此计算一个precision和recall,然后利用这两个计算f1-score。更加详细可见sklearn的解释。
4. 数据预处理
yeast的功能注释(标签)来自MIPS,其被组织为3个levels:
- level1,17个最主要的功能分类
- level2,74个功能分类
- level3,153最特殊的功能分类
human的功能注释来自GO,其分为3个大类:
- MF(molecular function)
- BP(biological process)
- CC(cellular component)
也被分为3个levels:
- 11-30:153 MFs,262 BPs,82 CCs;
- 31-100:72 MFs,100 BPs,48 CCs;
- 101-300:18 MFs,28 BPs,20 CCs。
关于GO的介绍,可以参见这篇博客
\(N=6\),使用的这六类网络是:
- neighborhood
- fusion
- cooccurence
- coexpression
- experimental
- database
Results
experiments的implementations:
- \(\alpha=0.98\),\(T=3\),通过validation得到
- AEs的架构和SVM的超参数也通过validation进行了搜索,其更详细的介绍再supplementary S3中
1. CV的结果
在Yeast数据集上的结果如下图所示,使用的是5-layers的架构:
在human数据集上,使用的是7-layers架构,正文中只有MF的结果,BP和CC的结果在附录中:
下图中,比较了单个网络和多个网络整合的结果,网络整合还是要好于单个网络的:
2. Temporal holdout validation的结果
在Yeast和human数据集上的结果依次展现在下面:
下图展示了deepNF和Mashup在单个GO term上的效果:
还有许多的结果需要去看supplementary files,这里就不贴出来了。
Conclusion
未来,期望能够将deepNF进一步发展,可以将proteins sequences、structure数据考虑到。
Questions
- 关于human的GO注释怎么分为3个levels的,没怎么看懂?
- 这里在实验的时候,是找的最好的architecture的deepNF和其他方法进行的比较,是不是不妥呀?