贝叶斯网络的训练和推算
2014-05-21 20:10
246 查看
近期接到一个任务,帮老师训练一个贝叶斯网络,进而使用接到的网络进行新的推算(经管方面的),毕竟是第一次实际使用机器学习做课题,难免有些鸡冻。下面咱的干货是具体的过程:
1、(总体网络)首先,给出的是22个特征,这22个特征里面中9个输入,另外3个输出,10个中间变量,贝叶斯网络如下:
2、(资料)开始不知道有现成的BNT包能解决先验概率的问题,所以开始在写matlab计算9个输入的先验概率,即是挨个统计,出现的概率(事实证明,这是走的弯路),关于BNT包http://blog.sina.com.cn/s/blog_6c7b434d01013ufz.html有详细的例子,初学者可以完整的看下,BNT包网上较多,基本都是类似的。
3、(训练过程)我使用matlab仿真时,首先也是先构造贝叶斯网络(即是定义那些线是存在的,哪些是不存在的);接着初始化条件概率,使用tabular_CPD函数,该函数的参数较多,使用的时候请注意;接着使用learn_params函数,根据构造的贝叶斯网络和训练的数据,对网络进行训练,得到各种条件概率(此处注意训练的数据需要转置,即每一列是使用的一个记录,训练的数据多些)
4、(推算)将要推算的输入(术语叫证据)添加到引擎中,函数是enter_evidence,然后使用某种引擎进行推算,对应的函数是marginal_nodes。从工具箱的使用手册可以看到,贝叶斯网络有较多的推理引擎供选择,找个自己需要的即可。这个过程有点小问题,即是推算函数我每次必须有9个输入,要是我不想指定某个输入的状态,应该怎么来处理呢?我的处理方式是,约定不输入某个状态指定为0,在证据添加到引擎过程中进行判断,如果不等于0才添加到引擎,从而实现不指定某个输入。
仔细看看其实过程还是挺简单的,但也是从没接触过过,所以花了不少时间,下次碰到应该挺快就能解决吧,仅在此记录下整个的过程。
1、(总体网络)首先,给出的是22个特征,这22个特征里面中9个输入,另外3个输出,10个中间变量,贝叶斯网络如下:
2、(资料)开始不知道有现成的BNT包能解决先验概率的问题,所以开始在写matlab计算9个输入的先验概率,即是挨个统计,出现的概率(事实证明,这是走的弯路),关于BNT包http://blog.sina.com.cn/s/blog_6c7b434d01013ufz.html有详细的例子,初学者可以完整的看下,BNT包网上较多,基本都是类似的。
3、(训练过程)我使用matlab仿真时,首先也是先构造贝叶斯网络(即是定义那些线是存在的,哪些是不存在的);接着初始化条件概率,使用tabular_CPD函数,该函数的参数较多,使用的时候请注意;接着使用learn_params函数,根据构造的贝叶斯网络和训练的数据,对网络进行训练,得到各种条件概率(此处注意训练的数据需要转置,即每一列是使用的一个记录,训练的数据多些)
4、(推算)将要推算的输入(术语叫证据)添加到引擎中,函数是enter_evidence,然后使用某种引擎进行推算,对应的函数是marginal_nodes。从工具箱的使用手册可以看到,贝叶斯网络有较多的推理引擎供选择,找个自己需要的即可。这个过程有点小问题,即是推算函数我每次必须有9个输入,要是我不想指定某个输入的状态,应该怎么来处理呢?我的处理方式是,约定不输入某个状态指定为0,在证据添加到引擎过程中进行判断,如果不等于0才添加到引擎,从而实现不指定某个输入。
仔细看看其实过程还是挺简单的,但也是从没接触过过,所以花了不少时间,下次碰到应该挺快就能解决吧,仅在此记录下整个的过程。
相关文章推荐
- 贝叶斯网络学习-梯度上升训练介绍
- 使用循环神经网络训练情感分析
- 基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络
- 神经网络中训练数据集、验证数据集和测试数据集的区别
- 基于caffe的图像分类(3)——修改网络并训练模型
- 『TensorFlow』SSD源码学习_其八:网络训练
- 基于pycaffe的网络训练和结果分析(mnist数据集)
- 选择性的加载网络模型的前几层训练(27)---《深度学习》
- BP神经网络进行网络训练
- 深度学习——缩减+召回加速网络训练
- 使用snapshot继续训练网络
- caffe训练网络时loss突然增大并维持在86.3333333的问题解决
- 贝叶斯网络综合应用
- 径向基网络(RBF network)之BP监督训练
- 如何保存训练好的神经网络直接进行测试-TensorFlow模型持久化
- 从0开始训练识别手写数字的神经网络
- (Caffe,LeNet)网络训练流程(二)
- 新版Matlab中神经网络训练函数Newff的使用方法
- 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?
- 如何加强神经网络训练