贝叶斯网(2)Netica:从数据中学习CPT
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的更多相关文章
- 贝叶斯网引论 by 张连文
贝叶斯网(Bayesian networks)是一种描述随机变量之间关系的语言,构造贝叶斯网是为了概率推理,理论上概率推理基于联合概率分布就行了,但是联合概率分布(基于表)的复杂度会呈指数增长,贝叶斯 ...
- 概率图模型(PGM):贝叶斯网(Bayesian network)初探
1. 从贝叶斯方法(思想)说起 - 我对世界的看法随世界变化而随时变化 用一句话概括贝叶斯方法创始人Thomas Bayes的观点就是:任何时候,我对世界总有一个主观的先验判断,但是这个判断会随着世界 ...
- 贝叶斯网(1)尝试用Netica搭建简单的贝叶斯网并使用贝叶斯公式解释各个bar的结果
近来对贝叶斯网十分感兴趣,按照博客<读懂概率图模型:你需要从基本概念和参数估计开始>给出的第一个例子,试着搭建了一个student网. (1)点击绿F,对条件概率表予以输入(包括两个祖先节 ...
- PGM:贝叶斯网的参数估计
http://blog.csdn.net/pipisorry/article/details/52578631 本文讨论(完备数据的)贝叶斯网的参数估计问题:贝叶斯网的MLE最大似然估计和贝叶斯估计. ...
- PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes
http://blog.csdn.net/pipisorry/article/details/52469064 独立性质的利用 条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑 ...
- 基于贝叶斯网(Bayes Netword)图模型的应用实践初探
1. 贝叶斯网理论部分 笔者在另一篇文章中对贝叶斯网的理论部分进行了总结,在本文中,我们重点关注其在具体场景里的应用. 2. 从概率预测问题说起 0x1:条件概率预测模型之困 我们知道,朴素贝叶斯分类 ...
- PGM:贝叶斯网的参数估计2
http://blog.csdn.net/pipisorry/article/details/52599321 没时间看了,下次再看... 具有共享参数的学习模型 全局参数共享 局部参数共享 具有 共 ...
- Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习
http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...
- 白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现
离去年“马尔可夫链进行彩票预测”已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改 ...
随机推荐
- C++11 Lambda表达式简单解析
C++11 新增了非常多特性,lambda 表达式是当中之中的一个.假设你想了解的 C++11 完整特性, 建议去http://www.open-std.org/看看新标准! 非常多语言都提供了 la ...
- ODOO翻译导出窗口修正
当你辛苦修正odoo的翻译,想把它导出到其它系统的时候, 你会发现导出向导窗口无法显示下拉列表. 下面的方法修正此问题: 1.打开"开发者模式". 2.去到翻译导出向导:设置 - ...
- NSight统计数据的颜色,缩写意义是什么?来自NV Jeff Kiel 比较官方的解释!
结合这个图示来看:https://dl.dropboxusercontent.com/u/32077444/nsight.pdf 1) The bars you see in the Summary ...
- oci学习
http://www.cnblogs.com/ychellboy/archive/2010/04/16/1713884.html oci官方文档 Call Interface Programmer's ...
- 预装WIN8改装WIN7之BIOS设置
不少预装WIN8/10的朋友觉得WIN8/10不好用,想改装WIN7,可改装之后常常出现各种问题,甚至不能启动,往往是BIOS设置不当. 本文以联想小新V2000 预装WIN8.1中文版为例,说说WI ...
- tcp/ip ---以太网和IEEE 802封装
以太网 它是当今T C P / I P采用的主要的局域网技术.它采用一种称作C S M A / C D的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multipl ...
- linux命令ulimit 系统限制你打开一些资源数
#ulimit -a 查看系统的一些限制,比如在做并发测试时ab命令的请求书不能超过 1024个. 要更改 #ulimit -n 10240
- mysql创建数据库时设置编码方式
CREATE DATABASE procedure_function DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- UVA 11885 - Number of Battlefields(斐波那契)
11885 - Number of Battlefields 题意:给周长.求能围成的战场数目.不包含矩形. 思路:详细的递推没递推出来,可是看了网上一个规律,假设包含矩形的答案应该是斐波那契数列(可 ...
- win10虚拟环境安装scrapy
说明:本人用的是python3.6版本,64位系统. 第一步:创建并激活虚拟环境 virtualenv scrapy scrapy\Scripts\activate 第二步:安装lxml pip in ...