1. 离散节点

在官方Tutorial中是有详细的案例的,就是B篇3.3节,你可以动手把天气预报这个实现一下:

http://www.norsys.com/tutorials/netica/secB/tut_B3.htm#LearningProbTables

2. 连续节点

假如我想输入的不是离散的状态,而是连续的数值,则不能像上一个案例一样做了。

*  离散状态:难,易;阴,晴,雨;是,否……这些都是多选一问题,天气只能是“阴,晴,雨”三选一,课程难度只有“难,易”两个选项,而不是“0为最易10为最难下,难度系数为5.312...”。

* 连续数值:房屋的面积,平均房间数(因为是平均房间所以可以是4.6这样的数而非整数)。仍然以最简单的贝叶斯网A→B为例,A为房屋面积,B为房价,则A可以是连续的数值。

Netica对连续节点的处理是:划分区间,看给定的连续数值落在哪个区间内。这一操作被称之为“离散化”。怎么理解离散化呢,这让我想起几年前学习正态分布的时候网上提供的可视化程序均是通过绘制柱状图,而柱状图划分的越细,就越接近连续状态下的正态分布曲线。

下面给一个简单的案例,波士顿房价,其中网络结构由自己搭建(箭头的指向自定义),节点之间的关联采取“从数据中学习”的方式获得(本质上是从数据中学习CPT,数据来源:波士顿房价数据集(Boston House Price Dataset)(下载地址:http://t.cn/RfHTAgY),简化起见,在此我挑选了一氧化氮浓度、犯罪率以及平均房间数这三列)。

step 1: 把这个数据粘贴到txt文件中。

// ~->[CASE-1]->~

crime    air     room    price

0.00632  0.5380  6.5750  24.00

0.02731  0.4690  6.4210  21.60

0.02729  0.4690  7.1850  34.70

0.03237  0.4580  6.9980  33.40

0.06905  0.4580  7.1470  36.20

0.02985  0.4580  6.4300  28.70

0.08829  0.5240  6.0120  22.90

0.14455  0.5240  6.1720  27.10

0.21124  0.5240  5.6310  16.50

0.17004  0.5240  6.0040  18.90

0.22489  0.5240  6.3770  15.00

step 2: 载入txt文件,自动生成节点,并且在弹出的对话框中指定“离散成多少个区间”。

step 3: 根据大致的因果关系手动连接节点构建网络。

step 4: 再次载入同一个txt文件以学习节点与节点之间的关联。

本质上所学习到的就是条件概率表(CPT)。

现在整个贝叶斯网就搭建好了。各个节点均为连续节点,也就是说我在获取新数据的时候,可以直接输入新数据(如:air=0.49):

然后根据数值所属区间,Netica会自动给你归入到low NO或high NO(总感觉和想象的有点不一样,这样略粗糙啊,不过这就是Netica的设定)。

现在对搭建好的网络玩一下。可以发现将air调到“NO浓度最小”,crime调到“犯罪率最低”,room调到“房间数最多”的时候,房价属于“高房价区间”的可能性是最大的,这符合人类的基本认知。

2018.9.26

by 悠望南山

贝叶斯网(2)Netica:从数据中学习CPT的更多相关文章

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

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

  2. 概率图模型(PGM):贝叶斯网(Bayesian network)初探

    1. 从贝叶斯方法(思想)说起 - 我对世界的看法随世界变化而随时变化 用一句话概括贝叶斯方法创始人Thomas Bayes的观点就是:任何时候,我对世界总有一个主观的先验判断,但是这个判断会随着世界 ...

  3. 贝叶斯网(1)尝试用Netica搭建简单的贝叶斯网并使用贝叶斯公式解释各个bar的结果

    近来对贝叶斯网十分感兴趣,按照博客<读懂概率图模型:你需要从基本概念和参数估计开始>给出的第一个例子,试着搭建了一个student网. (1)点击绿F,对条件概率表予以输入(包括两个祖先节 ...

  4. PGM:贝叶斯网的参数估计

    http://blog.csdn.net/pipisorry/article/details/52578631 本文讨论(完备数据的)贝叶斯网的参数估计问题:贝叶斯网的MLE最大似然估计和贝叶斯估计. ...

  5. PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes

    http://blog.csdn.net/pipisorry/article/details/52469064 独立性质的利用 条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑 ...

  6. 基于贝叶斯网(Bayes Netword)图模型的应用实践初探

    1. 贝叶斯网理论部分 笔者在另一篇文章中对贝叶斯网的理论部分进行了总结,在本文中,我们重点关注其在具体场景里的应用. 2. 从概率预测问题说起 0x1:条件概率预测模型之困 我们知道,朴素贝叶斯分类 ...

  7. PGM:贝叶斯网的参数估计2

    http://blog.csdn.net/pipisorry/article/details/52599321 没时间看了,下次再看... 具有共享参数的学习模型 全局参数共享 局部参数共享 具有 共 ...

  8. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

  9. 白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现

    离去年“马尔可夫链进行彩票预测”已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改 ...

随机推荐

  1. Linux 网卡驱动学习(一)(分析一个虚拟硬件的网络驱动样例)

    在Linux,网络分为两个层,各自是网络堆栈协议支持层,以及接收和发送网络协议的设备驱动程序层. 网络堆栈是硬件中独立出来的部分.主要用来支持TCP/IP等多种协议,网络设备驱动层是连接网络堆栈协议层 ...

  2. oracle 数据库 基础操作

    一.oracle基本常用的数据类型 varchar(长度) 字符串 char(长度) 字符 number(x,y) x表示总位数 y表示保留小数点后几位数 eg面试题:number(5,3)最大的数是 ...

  3. POJ 3221 Diamond Puzzle(BFS)

    Description A diamond puzzle is played on a tessellated hexagon like the one shown in Figure 1 below ...

  4. Oracle 查询搜索字符串在哪些存储过程中包含

    如下: select *from all_source where OWNER = 'LC0019999'and TEXT like '%insert into%d values(%'

  5. 阿里云OSS服务开通STS安全令牌

    搭建直传服务需要完成以下准备工作: 开通OSS,并且创建Bucket. 开通STS服务. 登录 OSS管理控制台. 在OSS概览页中找到基础配置区域,单击 安全令牌,如下图所示: 进入到 安全令牌快捷 ...

  6. 窥探try ... catch与__try ... __except的区别

    VC中的这两个东西肯定谁都用过, 不过它们之间有什么区别, 正好有时间研究了一下, 如果有错误欢迎拍砖.基于VC2005, 32位XP 平台测试通过. 估计对于其他版本的VC和操作系统是不通用的. 1 ...

  7. sql DATEPART() MONTH() convert() cast() dateadd() DATEDIFF() with(nolock)

    DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 语法 DATEPART(datepart,date) date 参数是合法的日期表达式.datepart 参数 ...

  8. javascript - Underscore 与 函数式编程

    <Javascript函数式编程 PDF> # csdn下载地址http://download.csdn.net/detail/tssxm/9713727 Underscore # git ...

  9. 树莓派学习笔记——apt方式安装opencv

    0.前言     本文介绍怎样在树莓派中通过apt方式安装opencv.并通过一个简单的样例说明怎样使用opencv. 相比于源码方式安装opencv,通过apt方式安装过程步骤简单些,消耗的时间也少 ...

  10. Android 4.4 全套源代码及子模块源代码的下载方法

    博文<Android源代码下载--用git clone实现单个文件夹下载>介绍了採用git clone方法下载Android单个文件夹源代码的方法,这篇文章已经有四年的历史,这期间Goog ...