贝叶斯网(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#实现
离去年“马尔可夫链进行彩票预测”已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改 ...
随机推荐
- QQ和微信凶猛成长的背后:腾讯网络基础架构的这些年
本文来自腾讯资深架构师杨志华的分享. 1.前言 也许没有多少人记得2004年发生的事情.但对于老腾讯来说,14年前的那个日子,2004年6月16日永远难以忘怀.这一天,QQ诞生5年后的腾讯在香港联交所 ...
- Github——Git设置及GitHub的使用
把github上的help. First : 安装:ubuntu 下,终端输入命令: sudo apt-get install git-core git-gui git-doc Next : 设置SS ...
- 阿里云创建RAM子账号
操作步骤 创建子账号 主账号导航至 访问控制 > 用户管理 页面.如下图所示: 单击右上角的 新建用户,如下图所示: 填写弹出框的各配置项,如下图所示: 单击 确定,即可创建子账号. 允许子账号 ...
- jumpserverv0.5.0 基于 CentOS7安装部署
基于 CentOS 7 一步一步安装 Jumpserver 0.5.0 环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux和防火墙 # CentOS 7 $ ...
- <转>程序员的心理疾病
注:本文转自大神王垠的博客 原文出处 http://www.yinwang.org/blog-cn/2014/02/09/programmer-mental/ 说实话,虽然似乎为之奋斗了十多年,在真正 ...
- node.js 学习01
PHP开发技术栈(LAMP) Linux Apache MySql PHPnode.js 全栈开发技术栈(MEAN): MongoDB Express Angular Node.js 现阶 ...
- 8.1.2 绑定Activity和Service
8.1.2 绑定Activity和Service 2010-06-21 16:57 李宁 中国水利水电出版社 字号:T | T <Android/OPhone开发完全讲义>第8章Andro ...
- Leetcode:integer_to_roman
一. 题目 将给定的数字(阿拉伯数字)转化成罗马数字. 数字不会大于3999 二. 分析 首先我们要知道神马是罗马数字,尽管听说过.但事实上我还真没有记住,于是就google了下,具体 ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- xilinx平台DDR3设计教程之仿真篇_中文版教程
https://wenku.baidu.com/view/ac32c8bcf705cc1754270923.html https://wenku.baidu.com/view/1d665697f185 ...