前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络-贝叶斯可视化

网络-贝叶斯可视化

作者头像
herain
发布2022-04-27 19:45:11
5900
发布2022-04-27 19:45:11
举报
文章被收录于专栏:数据指象数据指象

贝叶斯网络 是对 朴素贝叶斯的一种补充。叶斯网络是贝叶斯原理和图论相结合,建立起一种基于概率推理的数学模型,对于解决复杂的不确定性和关联性问题有很强的优势。 朴素贝叶斯的假设前提有两个第一个为:各特征彼此独立;第二个为且对被解释变量的影响一致,不能进行变量筛选。但是我们知道:各特征彼此独立的假设在很多场景是很能成立或难以验证的。 叶斯网络在特征彼此不独立情况下具有更具普遍的意义,可进行建模。要求各变量都是离散型的。 贝叶斯网络基本概念有两个:引入了一个有向无环图(Directed Acyclic Graph)和一个条件概率表集合。

贝叶斯网络,不再表示因果关系,而是变量之间的相关依赖关系。不相关的变量在DAG中是独立的节点,相关的变量(A,B)之间存在三种关系:顺连(A指向B,B指向C),分连(B指向A,B指向C),汇连(A指向B,C指向B)。

学习案例:基于Rstudio工具,安装如下bnlearn相关包:

代码语言:javascript
复制
install.packages("bnlearn")
install.packages("BiocManager")
BiocManager::install("graph")
BiocManager::install("Rgraphviz")

这里我们使用R包中自带的数据集 learning.test ,来实现贝叶斯网络。

数据中包含6个描述变量,变量F包含2个类别,其余变量(A,B,C,D,E)包含3个类别。这里我们基于约束的 grow-shrink 算法,来计算变量之间的相关性。

同时,我们也可以尝试使用基于分数的 Hill-Climbing 算法,来计算变量之间的相关性。可以发现两种算法的结果有所不同。

我们可以使用绘制贝叶斯网络图,清晰的看出二者不同:

代码语言:javascript
复制
> par(mfrow = c(1, 2))
> highlight.opts <- list(nodes = c("A", "B"), arcs = c("A", "B"), col = "red", fill = "grey")
> graphviz.plot(bn.hc, highlight = highlight.opts)
> graphviz.plot(bn.gs, highlight = highlight.opts)

基于 Hill-Climbing算法,A指向B或B指向A的得分是一样的,我们如果有先验信息(专家判断或历史经验)可以构建出A,B的指向关系,我们可以基于R中的 set.arc, drop.arc and reverse.arc 方法来重新构建变量之间的关系。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据指象 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档