4.参数学习

得到贝叶斯网的网络结构之后,可以对局部分布的参数进行参数估计了,这称作参数学习。

4.1参数学习的基本方法

bnlearn包的参数学习函数是bn.fit,其参数method给出了两种具体的方法:“mle”为极大似然估计;"bayes"为贝叶斯后验估计(采用无信息先验分布)。

4.2对marks数据集的参数学习

marks是个连续数据集,所以参数采用的是回归系数的形式。下面对其中的一个节点计算参数的极大似然估计:

library(bnlearn)

## Warning: package 'bnlearn' was built under R version 3.0.1

data(marks)
marks.bn <- gs(marks, undirected = FALSE)
marks.bn1 <- hc(marks)

marks.fit <- bn.fit(marks.bn1, data = marks)
marks.fit <- bn.fit(marks.bn, data = marks)

## Error: the graph is only partially directed.

marks.fit$ALG

## 
## Parameters of node ALG (Gaussian distribution)
## 
## Conditional density: ALG | MECH + VECT
## Coefficients:
## (Intercept) MECH VECT 
## 25.3620 0.1834 0.3577 
## Standard deviation of the residuals: 7.987

## Pearson's Linear Correlation
## 
## data: ALG ~ STAT | ANL
## cor = 0.4172, df = 85, p-value = 5.827e-05
## alternative hypothesis: true value is not equal to 0

#在参数估计的时候,由gs算法得到的mark.bn是个部分有向图,会报错。

参数估计bn.fit的结果得到一个bn.fit对象。利用这个可以修改局部分布。

marks.fit$ALG <- list(coef = c(`(Intercept)` = 26, MECH = 0.18, VECT = 0.36), 
    sd = 7.99)
marks.fit$ALG

## 
## Parameters of node ALG (Gaussian distribution)
## 
## Conditional density: ALG | MECH + VECT
## Coefficients:
## (Intercept) MECH VECT 
## 26.00 0.18 0.36 
## Standard deviation of the residuals: 7.99

在marks这个连续数据例子中,生成的网络是高斯贝叶斯网,在上面对参数的修改中,包括了一个回归系数的完整集合(就是coef),以及残差的标准差(sd)

另外,利用custom.fit函数也可以使用上面的语法生成bn.fit对象。

5.离散化

下面考虑在保持相依结构的前提下把marks数据集进行离散化。这种离散化会如何改变网络的形式呢?discretize可以实现离散化的功能。下面是discretize采用interval方法,按照中位数分为两个区间(breaks=2),数据按相应的区间归到对应的类中。 离散化的数据也可以采用结构学习的方法,由结构学习算法得到相应的网络结构。

marks.d <- discretize(marks, method = "interval", breaks = 2)

marks.dgs <- gs(marks.d)

plot(marks.dgs, radius = 200, arrow = 30)

marks.dhc <- hc(marks.d)
plot(marks.dhc, radius = 160, arrow = 40)

all.equal(cpdag(marks.dgs), cpdag(marks.dhc))

## [1] TRUE

可以看到离散化之后的网络结构依然保持着连续数据marks生成的部分网络结构。

离散化的网络参数就构成了CPT(条件概率表)。下面是参数学习的结果:

marks.fit2 <- bn.fit(marks.dhc, data = marks.d)
marks.fit2$ALG

## 
## Parameters of node ALG (multinomial distribution)
## 
## Conditional probability table:
## 
## VECT
## ALG [8.93,45.5] (45.5,82.1]
## [14.9,47.5] 0.5806 0.2281
## (47.5,80.1] 0.4194 0.7719

贝叶斯网的R实现( Bayesian networks in R)bnlearn(3)相关推荐

  1. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(1)

    1.bayesian networks的一些基本概念 贝叶斯网bayesian networks是一种有向无环图模型(DAG),可表示为G=(V,A).其中V是节点的集合,节点表示随机变量:A是弧(或 ...

  2. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(4)

    贝叶斯网络的推理(inference) (1)推理问题 在了解如何构造贝叶斯网络之后,下面我们考虑如何利用贝叶斯网络来进行推理.贝叶斯网络的推理是对某些变量当给定其它变量的状态作为证据时如何推断它们的 ...

  3. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(2)

    3.结构学习 上面我们采用一个预先设定的结构建立了一个关于marks的贝叶斯网.这种方式在某些情况下(比如存在先验的专家知识)是合适的.但是对大多数的贝叶斯网络,我们需要从数据中学习网络. 3.1贝叶 ...

  4. 机器学习--贝叶斯网

    ++Bayesian network 1-概念 2-DAG示例 3-BN结构 4-BN中3个变量之间的依赖关系 5-吉布斯采样算法 6-代码部分 0-自定义贝叶斯网络 1-搜索所有网络结构 2-启发式 ...

  5. 贝叶斯网专题12:参数学习之贝叶斯估计

    第一部分:贝叶斯网基础 1.1 信息论基础 1.2 贝叶斯网基本概念 1.3 变量独立性的图论分析 第二部分:贝叶斯网推理 2.1 概率推理中的变量消元方法 2.2 团树传播算法 2.3 近似推理 2 ...

  6. 机器学习基础(六):贝叶斯分类(贝叶斯决策论、朴素/半朴素贝叶斯分类器、贝叶斯网、EM算法)

    6.贝叶斯分类 6.1贝叶斯决策论Bayesian decision theory 概率框架下实施决策的基本方法. 对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和 ...

  7. 贝叶斯网引论 by 张连文

    贝叶斯网(Bayesian networks)是一种描述随机变量之间关系的语言,构造贝叶斯网是为了概率推理,理论上概率推理基于联合概率分布就行了,但是联合概率分布(基于表)的复杂度会呈指数增长,贝叶斯 ...

  8. 贝叶斯网专题4:概率推理中的变量消元方法

    文章目录 第一部分:贝叶斯网基础 [1.1 信息论基础](https://blog.csdn.net/deepbodhi/article/details/119823055) [1.2 贝叶斯网基本概 ...

  9. 贝叶斯网专题11:参数学习之极大似然估计

    第一部分:贝叶斯网基础 1.1 信息论基础 1.2 贝叶斯网基本概念 1.3 变量独立性的图论分析 第二部分:贝叶斯网推理 2.1 概率推理中的变量消元方法 2.2 团树传播算法 2.3 近似推理 2 ...

最新文章

  1. openssl md5算法 —— Linux下(字符串加密、文件加密)
  2. Py之curses:curses库的简介、使用、安装方法详细攻略
  3. angular 应为声明或语句_“允许”员工自愿降薪后,多益网络再发声:声明降薪非自愿者奖 3 万...
  4. python爬取音乐神器_Python爬虫提取神器,正则表达式(re模块),全程干货!
  5. OpenCV高动态范围成像
  6. SpringData ES中字段名和索引中的列名字不一致导致的无法查询数据的解决方法
  7. 《想吃麻花现给你拧》
  8. esp8266 rtos 开发环境 ubuntu_Ubuntu快速搭建C++开发环境(VS Code编辑器)
  9. 台式计算机usb口不识别鼠标,usb鼠标不能识别怎么办解决教程
  10. 51nod1245 Binomial Coefficients Revenge
  11. “才子进销存”新一代真正基于互联网(Internet)的进销存分销管理软件
  12. 计算机网络—物理层的传输介质以及物理层设备
  13. 各版本音标 IPA DJ KK 音标对照表
  14. 【报告分享】2019年人工智能中国专利技术分析报告.pdf(附下载链接)
  15. 贪吃蛇的纯C语言实现过程
  16. Maven中不能引入ojdbc解决方法:com.oracle:ojdbc6:jar:11.2.0.3
  17. 制作秒表——AT24C02储存芯片与用定时器代替Delay函数
  18. android8手机 使用方法,技巧丨8条使用技巧, 让你手机更安全(安卓篇)!
  19. 测试 软通动力软件测试机试_软通动力软件测试笔试题
  20. Python程序员私活来源:大学同窗开公司,伸手就要爬资料

热门文章

  1. 【初始化】神经网络到底该如何初始化?吴恩达Deeplearning.ai最新干货|湾区人工智能...
  2. 技术转管理:应该如何识人、带人和用人?
  3. 记录博客第一次上热门
  4. mysql gui tools ojdbc14.jar_[java]OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
  5. python商品管理系统_python 函数写商城管理系统
  6. 在 Visual Studio .NET 中使用 SQL Server 2000 创建数据库应用程序(1)
  7. 苹果下半年推出M2芯片MacBook Air 配色更多更轻薄
  8. 4999元起!iQOO 9 Pro今日首销:骁龙8旗舰处理器+独立显示芯片Pro
  9. 小米平板5系列共三款机型:全系搭载2K/120Hz屏幕
  10. 微信宣布将推出自有输入法后,搜狗快马加鞭赶来泼冷水......