贝叶斯网络

最近用的贝叶斯的理论比较多,所以重新熟悉了下贝叶斯的相关理论与贝叶斯网络的相关理论,主要是贝叶斯公式,马尔可夫等价类以及DAG等相关理论的整理。下面简单上一个随处可以见的一个贝叶斯的subclass。

Bayesian model

先熟悉下它的基础构造,下面先叙述下一些基本的概念

贝叶斯定理

简单的而言,在大学里学到的基础的贝叶斯公式,是简单的贝叶斯全概率公式,其主要的描述如下:

贝叶斯全概率公式:

 如果事件组B1,B2,.... 满足

1.B1,B2....两两互斥,即 Bi ∩ Bj = ∅ ,i≠j , i,j=1,2,....,且P(Bi)>0,i=1,2,....;

2.B1∪B2∪....=Ω ,则称事件组 B1,B2,...是样本空间Ω的一个划分

设 B1,B2,...是样本空间Ω的一个划分,A为任一事件,则:

P(A)=\sum_{1}^\infty P(B_i)P(A|B_i)

上面的公式称作是全概率公式(formula of total probability),其实主要的思路就是A的概率等于A在B的条件下的条件概率再乘上B的概率,这个地方B可以是多个条件的集合。很多人会将这个直接跟贝叶斯公式联系在一起,这是错误的!

贝叶斯公式:

贝叶斯公式是建立在条件概率的基础上寻找事件发生的原因(即大事件A已经发生的条件下,分割中的小事件Bi的概率)最简单的应用是利用P(A|B)来计算P(B|A)。它的基础是建立在条件概率的基础上的,所以下贴一下条件概率的公式:

P(A|B)=\frac{P(A \cap B) }{P(B)}(虽然这个公式大家都知道,这里我还是写一下,这里的前提P(B)>0)      ……(1)

其中当P(B)=0的时候,我们有

P(A\cap B)=P(B)P(A|B)=P(A)P(B|A)   (乘法公式)                                                    ...........(2)

根据上面的公式,我们可以得出下面的贝叶斯公式:

P(B|A)=\frac{P(B\cap A)}{P(A)} =\frac{P(A|B)P(B)}{P(A)}

公式右边的P(A)可以看作归一化的常数,以保证其满足概率函数的性质。如果我们关注的仅仅是事件发生的相对可能性,这时可以完全忽略这个分母,因为公式中分母的大小都是相同的 ,但是分母的大小是可以计算的。

P(A\cap B)=P(A|B)P(B)

P(A\cap \bar{B} )=P(A| \bar{B})P(\bar{B})

所以我们可以根据上面的两个式子来得出P(A)

P(A)=P(A \cap B)+P(A\cap \bar{B}) 

=P(A|B)P(B)+P(A| \bar{B})P(\bar{B})(该结果中B与B非将A拆分成两个不相交的子空间,分别计算其条件概率然后利用可加性原则)

如果将上面的公式进行推广,假设一组互不相交的集合B_i,我们可以将P(A)用更加广泛的定义表示出来

P(A)=\sum_{i}P(A|B_i)P(B_i)

按照上面的式子的推倒,我们可以得出更加正式的贝叶斯定理的数学定义:

P(B_j|A)=\frac{P(A|B_j)P(B_j)}{P(A)}=\frac{P(A|B_j)P(B_j)}{\sum\nolimits_{i=1}^n P(A|B_i)P(B_i)}(即只不过是将分母换了而已)

贝叶斯是基于先验的条件概率的,所以在下面的贝叶斯网络的叙述中,全面的利用了这个原理。

贝叶斯网络:

误区:首先阐明一个区别那就是朴素贝叶斯与贝叶斯网络的区别,首先他们两个的前提条件是不同的,朴素贝叶斯的假设前提有两个第一个为:各特征彼此独立;第二个为且对被解释变量的影响一致,不能进行变量筛选。而贝叶斯网络的前提则是各变量都是离散型的,各特征有依赖(不确定的因果推理)关系(变量无关),每一个节点在其直接前驱节点的值制定后,这个节点条件独立于其所有非直接前驱前辈节点。

在应用上的区别,首先贝叶斯网络基本应用在在信息不完备的情况下通过可以观察随机变量推断不可观察的随机变量,解决文本分类时,相邻词的关系、近义词的关系,朴素贝叶斯公式则是主要用于分类,相对而言,朴素贝叶斯网络相对比较简单,它的基本应用对于给出的待分类项,会选择条件概率最大的类别,这就是朴素贝叶斯的思想的应用过程。

贝叶斯网络的概念:

贝叶斯网络是联合概率分布的一种,它包含两个组件,一是,无回路的有向无环图DAG(Directed Acyclic Graph)其节点对应随机变量为X_1,X_2.......,X_n,令P_{ai}表示图G中子节点X_i的父节点的集合(即,所有指向X_i节点集合),而是参数\theta ,表示条件概率分布P(X_i|P_{ai}),X_i\in X.(扩展一下,就是贝叶斯网络可以对应多个马尔可夫等价类,具体的等价条件是1.具有相同的骨架,第二是具有相同的V结构),贝叶斯网络其实也叫casual network(因果网络)。

首先介绍下V结构,V结构其实很简单

V结构

上图就是一个最简单的V结构,他也是贝叶斯基础网络的一种,这种a->c,b->c的结构是一种,还有两种基础的贝叶斯网络结构,分别是从c出发射向a与b的,即c--->a,c----->b,最后一种结构就是顺序的一种结构,即a->c->v or b->c->a这种的结构。

如何构建一个贝叶斯网络:

根据前面贝叶斯网络的定义,我们可以初步的知道一个贝叶斯网络的构成,那么可以根据它的定义来构造一个贝叶斯网络,其实就是围绕着它的组成元素1.DAG 2.节点参数与边的方向,下面分这两步来描述下如何构造一个贝叶斯网络。

       1、确定随机变量间的拓扑关系,形成DAG。这一步通常需要领域专家完成,而想要建立一个好的拓扑结构,通常需要不断迭代和改进才可以。

      2、训练贝叶斯网络参数——估计出各节点的条件概率表。这一步也就是要完成条件概率表的构造,如果每个随机变量的值都是可以直接观察的,像我们上面的例子,那么这一步的训练是直观的,方法类似于朴素贝叶斯分类。但是通常贝叶斯网络的中存在隐藏变量节点,那么训练方法就是比较复杂,例如使用梯度下降法。还有就是参数估计的MLE方法,参数估计的贝叶斯方法,凯学习对应的参数。

下面是贝叶斯网络实现的简单代码,在这里我用了bnlearn这个包下面就是实现的环节,因为用了现成的包,所以少去了具体的结构化模型的过程,直接用了现成的模型。

准本数据


# 加载扩展包和数据

library(caret)

data(PimaIndiansDiabetes2,package='mlbench')

# 对缺失值使用装袋方法进行插补

preproc <- preProcess(PimaIndiansDiabetes2[-9],method="bagImpute")

data <- predict(preproc,PimaIndiansDiabetes2[-9])

data$Class <- PimaIndiansDiabetes2[,9]


用bnlearn的包进行贝叶斯网络的实现

library(bnlearn)

# 数据离散化

data2 <- discretize(data[-9],method='quantile')

data2$class <- data[,9]

# 使用爬山算法进行结构学习

bayesnet <- hc(data2)

# 显示网络图

plot(bayesnet)

# 修改网络图中的箭头指向

bayesnet<- set.arc(bayesnet,'age','pregnant')

# 参数学习

fitted <- bn.fit(bayesnet, data2,method='mle')

# 训练样本预测并提取混淆矩阵

pre <- predict(fitted,data=data2,node='class')

confusionMatrix(pre,data2$class)

# 进行条件推理

cpquery(fitted,(class=='pos'),(age=='(36,81]'&mass=='(34.8,67.1]'))

over,以后用到了其他的原理在继续更新

参考链接:R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记) - 素质云笔记/Recorder... - CSDN博客

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容