前情:
写人工智能相关的选修课期末论文的时候,想简单搭个静态贝叶斯网络模型尝试进行数据分析,但并没有在网上找到特别好的容易上手的教程。查阅参考文献时发现Netica是个比较方便的贝叶斯网络工具(相比Matlab的贝叶斯网络工具箱等,Netica不用敲代码学语法,而且是可视化交互界面,对新手相当友好),只是网上没什么详细教程,只能看官方文档自己摸索。本文相当于一个Netica基本使用流程的教程。
背景:
工具和参考:
- Netica下载地址【百度网盘提取码:p02v 】
- Netica官方教程
贝叶斯网络简介:
贝叶斯网络属于概率图模型的一种(本教程中涉及的是最基本的静态贝叶斯网络),是一个有向无环图(DAG) ,网络的拓扑结构代表了各变量之间的影响关系(即因果联系)。基于训练数据计算各节点条件概率表(CPT),得到模型的参数。之后输入数据进行预测的过程,就是根据已有的条件概率将样本划入对应条件下可能性最大的类别。
此外,贝叶斯网络的常见使用场景是在疾病预测和故障诊断等领域。
实践教程
以下举例部分将使用Netica自带的例子进行示范
一、搭建贝叶斯网络拓扑结构
1.新建网络
2.新建节点
点击工具栏中的黄色椭圆形图标,即可在网络中新建节点
3.编辑结点
双击节点或者右键->Properties可以打开节点的编辑面板,提供修改节点名等操作
点击state右侧的new可以为节点新建状态
点击Discrete可以将变量的状态由离散变为“连续”,此处的连续其实也只是按区间离散化
4.新建联系
点击工具栏中的箭头,再分别点击需要建立联系的两个节点即可
二、导入数据进行参数学习
如图,是一个搭完拓扑结构,且尚未进行训练的贝叶斯网络模型
导入数据,进行参数学习
点击Cases->Learn->Incrop Case Files,导入训练数据
数据集导入的是CSV格式也是支持的,只不过导入时要注意是否格式正确,可在File->Open As File 中选择要导入的数据集,查看是否会有读入错误。以下是可以正常读入的数据样例
三、模型准确度测试
选择要预测的节点,点击Cases->Test With Cases 导入测试数据即可(此处为了简化操作,直接导入了之前的训练数据)
输出的报表中会有准确率、基尼系数、AUC等等数据