zoukankan      html  css  js  c++  java
  • 浅析GENIE3基因调控网络推断

    GENIE3

    GENIE3(GEne Network Inference with Ensemble of trees), 使用基于树的集成学习算法,来通过基因表达数据来推断基因调控网络。

    小知识点: GENIE3末尾的3并不是指GENIE的第三版本,而是因为通过法语口音来发音的话, treethree发音是一样的。附上两个法语发音: tree, three

    GENIE3内置了两种基于树的集成学习算法,Random Forests 和Extra-Trees. 集成学习,组合多个相对较弱的学习算法以期获得更好的性能。随机森林则是有多个决策树来构成的。水平有限,本文将简单讲解Random Forests,随机森林如何应用于基因调控网络的推断。

    决策树

    首先先介绍一下决策树, 它是基于if-then-else 规则的学习算法。举一个例子,假设我们想知道基因表达量是否受组蛋白修饰的影响,于是我们可以获取这些数据:
    图文无关,随便截的

    Chip-seq测序分析而来的组蛋白修饰数据,比如H3K4me1, H3K36me3, H3K27ac。和RNA-Seq分析得到基因基因表达量数据。然后我们通过分析整理得出一张组蛋白修饰富集区域和相应区域所在基因的表达量变化的一张表格。

    H3K36me3 H3K4me1 H3K27ac geneX
    0 1 1 up
    1 0 1 up
    1 1 0 up
    0 0 1 down
    0 1 0 down
    1 0 0 down

    表格中0代表没有显著富集,1代表在gene所在位置有显著富集, up,down分别表示对应基因表达量是上调还是下调。当然上面这个数据,是我故意编的,与实际数据应该差得很远,不作真,仅为方便演示。然后我们就可以根据组蛋白修饰富集情况来得出一个简单的决策树:
    image.png

    类似上面这种,根据一些条件,来判断类别的应用称为分类。比如一个课题组坑不坑;一个西瓜是好还是坏;明天是下雨,下雪,还是下东海,等。

    不过,当前我们要讨论的是基因间的调控关系, 在生物体内,基因调控机制是复杂的,一个基因受多个转录因子调控,一个转录因子调控多个基因。我们不能简单的判断一个基因是否调控另一个基因。我们还需要考虑转录因子和靶基因的调控关系。

    这种调控关系,我们采用回归的方式来获取。回归用于预测连续的、具体的数值。比如根据房子大小,位置,楼层,朝向,来预测房子的售价;根据靶基因的多个转录因子基因表达量来预测靶基因的表达量。

    image.png
    上图中,gene1,2,3是转录因子, gene4是受gene1,2,3调控的靶基因。从上图决策树可以看出,gene4的表达受gene1,2,3的调控作用。它是一个很简单的回归树。gene1,2,3对gene4的调控作用不一,从而可以得到不同重要性分数。

    私以为,上图回归树思想为GENIE3用于构建调控网络关系的重要原因之一。当然作者没直接用回归决策树,而是使用基于决策树的集成学习算法,当然是因为决策树有缺点了。不过基本调控关系的构建思想还是回归树了。

    还有必须提及的是,上面的例子是我自定义的,决策树是手动构建的,比如分类的例子中,第一次选择H3K36me3是否富集作为分类标准,第二次选择H3K4me1是否富集作为分类标准等。在回归的例子中,第一次分类选择Gene3是否<1000来作为分类标准,第二次又选择什么作为分类标准。

    这在实际使用决策树时,并不是人为选择的,实际应用中,通常输入属性或特征有几百上千上万的都有。在基因调控关系构建过程中,也是选择几百个转录因子作为输入的,预测靶基因的。这并不是人为选择,而是通过算法计算挑选而来的。 决策树中同一数据 ,使用了不同的分类标准,谁先谁后,画出的树不一样,最后的效果都是不一样的。不过这也不是本文重点,就不在提及,感兴趣的童鞋可以区搜索“决策树 CART”。

    随机森林

    三个臭皮匠,顶个诸葛亮。由于单使用一个决策树,来进行预测。其结果容易受异常值的影响,且容易发生过拟合(虽然GENIE3,不通过训练模型,来预测新的调控关系,但是如果过拟合发生,则可能会得出错误的调控关系)。所以随机森林(RF)整合多个决策树,综合考虑不同决策树的输出结果,来得到最终结果。
    https://levelup.gitconnected.com/random-forest-regression-209c0f354c84

    随机森林的随机体现在两个方面:

    1. 样本的随机,RF中的每棵决策树的输入样本都是随机从所有样本中选取N个
    2. 特征的随机,RF中的每棵决策树的输入特征都是随机从所有特征中选取K个

    这样的随机避免了异常样本,或特征对结果的影响。最终结果将参考所有决策树的输出结果,在分类任务,可通过投票来决定最终的结果属于哪一类。在回归任务中,可以将决策树的输出结果进行平均。

    网络推断

    如果明白前面回归树来预测靶基因表达量,下面的图片就好理解了。

    https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2946910/

    上图中 Expression data 是行为样本,列为基因。这与GENIE3的R包的输入(行为基因,里为样本)是不一致的,但这没什么关系,因为R包里会将输入转置再进行运算的。

    图中有G个基因,将会以每个基因作为输出(靶基因表达量),其余基因作为输入(调控基因表达量)来构建G个随机森林模型。进而计算每一个模型中,每个调控基因对靶基因的重要性,从而得出它们之间的调控关系。然后根据所有模型的调控关系进行排序。

    有一点需要注意的是,在上图中,是将除挑选为靶基因以外的所有基因都作为输入基因(regulatory genes)。然而作者建议指定regulatory genes, 这时,当挑选的靶基因不在regulatory genes时,输入基因都是regulatory genes,当挑选的靶基因在regulatory genes时,输入基因是除台挑选靶基因意外的其余regulatory genes.

    GENIE3使用

    GENIE3的使用简单,参考文档https://bioconductor.org/packages/release/bioc/vignettes/GENIE3/inst/doc/GENIE3.html

    其他

    GENIE3有Python版本和R版本,熟悉这两种语言的童鞋,可以去看一下源码。

    有些东西没写,有些也没写清楚。以后再改一下吧~

    参考

    https://www.cnblogs.com/fionacai/p/5894142.html
    https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2946910/
    Gene Regulatory Networks Methods and Protocols
    https://github.com/vahuynh/GENIE3

  • 相关阅读:
    这些 Drawable 的小技巧,你都了解吗?
    Android 软键盘的显示和隐藏,这样操作就对了
    在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑
    聊聊 Material Design 里,阴影的那些事儿!
    PAT 1069 1070 1071 1072
    PAT1021 Deepest Root
    关于素数:求不超过n的素数,素数的判定(Miller Rabin 测试)
    PAT《数据结构学习与实验指导》实验项目集 2-05 2-06 2-07 2-08
    LeetCode:Gas Station
    LeetCode:Candy
  • 原文地址:https://www.cnblogs.com/huanping/p/14598716.html
Copyright © 2011-2022 走看看