阅读笔记三:Oil and Gas Reservoirs Parameters Analysis Using Mixed Learning of Bayesian Networks

问题:

开发一个新的油藏,普遍的方法是分析一个与之相似的油藏来得到我们想要的数据。但是不容易找到一个合适的、相似的样本进行分析,所以这种方法预估的储量不准确。

普通的解决方案:

  1. 使用MCMC算法进行建模:缺点是,对于高维问题需要大量内存和时间,并且它没有找到参数之间的关系。
  2. 使用CIPF:需要对依赖结构有一定的理解,并且收敛的速度慢。
  3. 使用copula:专家要对copula族进行抉择。

作者提出的方案:

使用机器学习技术对油藏储层特点进行自动化分析和建模。我们该选择哪种机器学习方法呢?作者选择使用贝叶斯学习。(至于为什么,文中描述的原因我理解的不是很清楚,所以这里暂时不记录缘由)。
下面我们介绍一下贝叶斯网络结构的定义:贝叶斯网络从图形上看就是个DAG图,每个顶点都表示一个随机变量。对于每个顶点 X i X_i Xi都满足: ( X i ⊥  NonDescendants  X i ∣ P a X i G ) \left(X_i \perp \text { NonDescendants } X_i \mid P a_{X_i}^G\right) (Xi NonDescendants XiPaXiG)
其中 P a X i G P a_{X_i}^G PaXiG代表图G中 X i X_i Xi的父节点,  NonDescendants  X i \text { NonDescendants } X_i  NonDescendants Xi代表图中不是 X i X_i Xi的子节点的节点。
整个表达式的意思就是:顶点 X i X_i Xi它独立于除了它自己的父节点之外的所有不是它子节点的顶点(也可以理解成除了父节点和子节点,与其他节点都是独立的)
factorization定义:假如 G G G是随机变量 X 1 、 X 2 、 . . . X n X_1、X_2、...X_n X1X2...Xn的贝叶斯网络,如果P满足 P ( X 1 , … , X n ) = ∏ i = 1 n P ( X i ∣ P a X i G ) P\left(X_1, \ldots, X_n\right)=\prod_{i=1}^n P\left(X_i \mid P a_{X_i}^G\right) P(X1,,Xn)=i=1nP(XiPaXiG)我们就说P是根据图G分解在相同空间上的分布(这里的理解有点生硬),但是上面这个式子不难,它所表达的意思就是 P a X i G P a_{X_i}^G PaXiG这个事件发生的条件下, X i X_i Xi发生的概率,然后求他们的乘积。例如: P ( X 1 ∣ P a X 1 G ) P ( X 2 ∣ P a X 2 G ) … … P ( X n ∣ P a X n G ) P\left(X_1 \mid P a_{X_1}^G\right)P\left(X_2 \mid P a_{X_2}^G\right)……P\left(X_n \mid P a_{X_n}^G\right) P(X1PaX1G)P(X2PaX2G)……P(XnPaXnG)

算法和方法

既然要使用贝叶斯网络模型,那对算法的学习是少不了的。
MixLearn@BN: Algorithm for mixed learning of Bayesian networks的伪代码如下图所示
在这里插入图片描述
首先来看看第一个程序片段(1-11行):该函数传入三个参数——1.顶点集D={x_1,……x_n}   2.边(专家想添加的边)  3.要移除的边(前提是允许移除)。该函数的输出就是贝叶斯网络。在函数体内,先对顶点集进行离散化操作得到集合 d i s c r e t e _ D discrete\_D discrete_D,然后使用HillClimbingSearch算法找到一个评分最高的模型,然后查看第三个参数的布尔值是什么,如果是ture,就可以将这条边移除,如果是false,就要将这条边加进模型当中。最后再通过参数学习 P a r a m e t e r s l e a r n i n g ( D , V , E ) Parameters learning(D, {V, E} ) Parameterslearning(D,V,E)函数就可以得到我们想要的参数了。
接下来是函数 P a r a m e t e r s l e a r n i n g Parameters learning Parameterslearning:
参数有两个,一个是顶点集D、一个是贝叶斯模型。输出是BN模型中每个节点的分布参数。
首先,我们遍历模型中的节点,如果该节点的值是离散的,且其父节点具有离散分布,那么我们就使用 C P T ( n o d e , p a r e n t s ( n o d e ) , D ) CPT(node, parents(node), D) CPT(node,parents(node),D)得到该节点的参数值。如果节点上的值是连续的,并且其父节点具有连续分布,则使用 G a u s s i a n ( n o d e , D ) Gaussian(node,D) Gaussian(node,D),如果节点值是连续的,并且其父节点具有离散分布和连续分布,那么就是用…(后面就有点看不懂了)

总结:

首先我们要清楚贝叶斯建模方法有三种:依靠专家建模、从数据中学习、从知识库中创建。在一般情况下,我们都会综合使用三种方法,但如果我们不具备专家建模的条件,这个时候就会选择从数据中学习贝叶斯网络模型结构了。常用的学习方法有两个:基于依赖性测试的学习和基于搜索评分的学习。但是本文结合了上面两种方法,采用了一种混合的方法——首先对模型学习,作者使用相似性检测减少了训练样本,降低了搜索空间的复杂度,然后使用爬山算法(基于评分搜索)找到最佳网络。再对参数学习,使用了混合方法,它定义节点的分布有三种类型:(Conditional probabilities tables)CPT分布、高斯(Gaussian distribution)分布和条件高斯分布(Conditional Gaussian distribution)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值