分类算法-贝叶斯网络(Bayesian networks)

2.1、摘要

      在上一篇文章中我们讨论了朴素贝叶斯分类。朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当这个条件成立时,朴素贝叶斯分类法的准确率是最高的,但不幸的是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性,这样就限制了朴素贝叶斯分类的能力。这一篇文章中,我们接着上一篇文章的例子,讨论贝叶斯分类中更高级、应用范围更广的一种算法——贝叶斯网络(又称贝叶斯信念网络或信念网络)。

2.2、重新考虑上一篇的例子

      上一篇文章我们使用朴素贝叶斯分类实现了SNS社区中不真实账号的检测。在那个解决方案中,我做了如下假设:

      i、真实账号比非真实账号平均具有更大的日志密度、各大的好友密度以及更多的使用真实头像。

      ii、日志密度、好友密度和是否使用真实头像在账号真实性给定的条件下是独立的。

      但是,上述第二条假设很可能并不成立。一般来说,好友密度除了与账号是否真实有关,还与是否有真实头像有关,因为真实的头像会吸引更多人加其为好友。因此,我们为了获取更准确的分类,可以将假设修改如下:

      i、真实账号比非真实账号平均具有更大的日志密度、各大的好友密度以及更多的使用真实头像。

      ii、日志密度与好友密度、日志密度与是否使用真实头像在账号真实性给定的条件下是独立的。

      iii、使用真实头像的用户比使用非真实头像的用户平均有更大的好友密度。

      上述假设更接近实际情况,但问题随之也来了,由于特征属性间存在依赖关系,使得朴素贝叶斯分类不适用了。既然这样,我去寻找另外的解决方案。

      下图表示特征属性之间的关联:

      上图是一个有向无环图,其中每个节点代表一个随机变量,而弧则表示两个随机变量之间的联系,表示指向结点影响被指向结点。不过仅有这个图的话,只能定性给出随机变量间的关系,如果要定量,还需要一些数据,这些数据就是每个节点对其直接前驱节点的条件概率,而没有前驱节点的节点则使用先验概率表示。

      例如,通过对训练数据集的统计,得到下表(R表示账号真实性,H表示头像真实性):

      纵向表头表示条件变量,横向表头表示随机变量。上表为真实账号和非真实账号的概率,而下表为头像真实性对于账号真实性的概率。这两张表分别为“账号是否真实”和“头像是否真实”的条件概率表。有了这些数据,不但能顺向推断,还能通过贝叶斯定理进行逆向推断。例如,现随机抽取一个账户,已知其头像为假,求其账号也为假的概率:

      

      也就是说,在仅知道头像为假的情况下,有大约35.7%的概率此账户也为假。如果觉得阅读上述推导有困难,请复习概率论中的条件概率、贝叶斯定理及全概率公式。如果给出所有节点的条件概率表,则可以在观察值不完备的情况下对任意随机变量进行统计推断。上述方法就是使用了贝叶斯网络。

2.3、贝叶斯网络的定义及性质

      有了上述铺垫,我们就可以正式定义贝叶斯网络了。

      一个贝叶斯网络定义包括一个有向无环图(DAG)和一个条件概率表集合。DAG中每一个节点表示一个随机变量,可以是可直接观测变量或隐藏变量,而有向边表示随机变量间的条件依赖;条件概率表中的每一个元素对应DAG中唯一的节点,存储此节点对于其所有直接前驱节点的联合条件概率。

      贝叶斯网络有一条极为重要的性质,就是我们断言每一个节点在其直接前驱节点的值制定后,这个节点条件独立于其所有非直接前驱前辈节点。

      这个性质很类似Markov过程。其实,贝叶斯网络可以看做是Markov链的非线性扩展。这条特性的重要意义在于明确了贝叶斯网络可以方便计算联合概率分布。一般情况先,多变量非独立联合条件概率分布有如下求取公式:

      

      而在贝叶斯网络中,由于存在前述性质,任意随机变量组合的联合条件概率分布被化简成

      

      其中Parents表示xi的直接前驱节点的联合,概率值可以从相应条件概率表中查到。

      贝叶斯网络比朴素贝叶斯更复杂,而想构造和训练出一个好的贝叶斯网络更是异常艰难。但是贝叶斯网络是模拟人的认知思维推理模式,用一组条件概率函数以及有向无环图对不确定性的因果推理关系建模,因此其具有更高的实用价值。

2.4、贝叶斯网络的构造及学习

      构造与训练贝叶斯网络分为以下两步:

      1、确定随机变量间的拓扑关系,形成DAG。这一步通常需要领域专家完成,而想要建立一个好的拓扑结构,通常需要不断迭代和改进才可以。

      2、训练贝叶斯网络。这一步也就是要完成条件概率表的构造,如果每个随机变量的值都是可以直接观察的,像我们上面的例子,那么这一步的训练是直观的,方法类似于朴素贝叶斯分类。但是通常贝叶斯网络的中存在隐藏变量节点,那么训练方法就是比较复杂,例如使用梯度下降法。由于这些内容过于晦涩以及牵扯到较深入的数学知识,在此不再赘述,有兴趣的朋友可以查阅相关文献。

2.5、贝叶斯网络的应用及示例

      贝叶斯网络作为一种不确定性的因果推理模型,其应用范围非常广,在医疗诊断、信息检索、电子技术与工业工程等诸多方面发挥重要作用,而与其相关的一些问题也是近来的热点研究课题。例如,Google就在诸多服务中使用了贝叶斯网络。

      就使用方法来说,贝叶斯网络主要用于概率推理及决策,具体来说,就是在信息不完备的情况下通过可以观察随机变量推断不可观察的随机变量,并且不可观察随机变量可以多于以一个,一般初期将不可观察变量置为随机值,然后进行概率推理。下面举一个例子。

      还是SNS社区中不真实账号检测的例子,我们的模型中存在四个随机变量:账号真实性R,头像真实性H,日志密度L,好友密度F。其中H,L,F是可以观察到的值,而我们最关系的R是无法直接观察的。这个问题就划归为通过H,L,F的观察值对R进行概率推理。推理过程可以如下表示:

      1、使用观察值实例化H,L和F,把随机值赋给R。

      2、计算。其中相应概率值可以查条件概率表。

      由于上述例子只有一个未知随机变量,所以不用迭代。更一般得,使用贝叶斯网络进行推理的步骤可如下描述:

      1、对所有可观察随机变量节点用观察值实例化;对不可观察节点实例化为随机值。

      2、对DAG进行遍历,对每一个不可观察节点y,计算,其中wi表示除y以外的其它所有节点,a为正规化因子,sj表示y的第j个子节点。

      3、使用第三步计算出的各个y作为未知节点的新值进行实例化,重复第二步,直到结果充分收敛。

      4、将收敛结果作为推断值。

      以上只是贝叶斯网络推理的算法之一,另外还有其它算法,这里不再详述。

时间: 2024-09-20 06:08:24

分类算法-贝叶斯网络(Bayesian networks)的相关文章

从贝叶斯方法谈到贝叶斯网络

从贝叶斯方法谈到贝叶斯网络 0 引言     事实上,介绍贝叶斯定理.贝叶斯方法.贝叶斯推断的资料.书籍不少,比如<数理统计学简史>,以及<统计决策论及贝叶斯分析 James O.Berger著>等等,然介绍贝叶斯网络的中文资料则非常少,中文书籍总共也没几本,有的多是英文资料,但初学者一上来就扔给他一堆英文论文,因无基础和语言的障碍而读得异常吃力导致无法继续读下去则是非常可惜的(当然,有了一定的基础后,便可阅读更多的英文资料).     11月9日上午,机器学习班第9次课,邹博讲贝

算法——贝叶斯

简介 学过概率理论的人都知道条件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B):即事件A和事件B同时发生的概率等于在发生A的条件下B发生的概率乘以A的概率.由条件概率公式推导出贝叶斯公式:P(B|A)=P(A|B)P(B)/P(A):即,已知P(A|B),P(A)和P(B)可以计算出P(B|A). 假设B是由相互独立的事件组成的概率空间{B1,b2,...bn}.则P(A)可以用全概率公式展开:P(A)=P (A|B1)P(B1)+P(A|B2)P(B2)+..P(A|Bn)

贝叶斯网络

贝叶斯网络定了这样一个独立的结构:一个节点的概率仅依赖于它的父节点.贝叶斯网络更加适用于稀疏模型,即大部分节点之间不存在任何直接的依赖关系.       联合概率,即所有节点的概率,将所有条件概率相乘:     我们最终的目标是计算准确的边缘概率,比如计算Hangover的概率.在数学上,边缘概率被定义为各种状态下系统所有其他节点对本节点影响的概率的和.   边缘概率     优化     接下来就是要获得观测变量 xh  的估计,需要使 p(xh)的值最大, 即:       如果贝叶斯网络比

基于贝叶斯网络的云取证研究

基于贝叶斯网络的云取证研究 山东师范大学  刘栋 本文主要研究如下:(1)系统探讨了电子取证.云计算和云取证的基本概念,对电子取证技术.云环境面临的安全威胁以及云平台的实现机制进行了总结,深入分析了云取证的关键技术,最后给出了云取证的基本流程.(2)研究分析了云取证中的证据挖掘和证据处理过程,介绍了贝叶斯网络和MapReduce编程模型的基本理论.提出了基于MapReduce的序列模式挖掘算法,并对挖掘到的证据进行事件关联分析,运用贝叶斯网络构建了事件的贝叶斯结构模型,去除冗余数据,使取证结果能

贝叶斯网络工具Hugin api的使用

由于做毕设的需要,最近一直在研究Hugin Expert,一个关于贝叶斯网络的软件,今天有一些眉目, 总结一下,方便自己也方便他人. Hugin Expert是一款商业软件,提供c.c++.java..net的api支持,并且有免费的Hugin lite使用, 它的贝叶斯网络支持离散和连续的节点,支持表达式和高斯分布.这是我找了很多软件后最终选择Hugin 的原因. 由于我的毕设打算用java做,所以我开始只看java的api,没想到这该死的java api文档竟然没有一点 例子,郁闷得我不行,

机器学习算法集锦:从贝叶斯到深度学习及各自优缺点

选自static.coggle.it 机器之心编译  在我们日常生活中所用到的推荐系统.智能图片美化应用和聊天机器人等应用中,各种各样的机器学习和数据处理算法正尽职尽责地发挥着自己的功效.本文筛选并简单介绍了一些最常见算法类别,还为每一个类别列出了一些实际的算法并简单介绍了它们的优缺点. https://static.coggle.it/diagram/WHeBqDIrJRk-kDDY 目录 正则化算法(Regularization Algorithms) 集成算法(Ensemble Algor

数学之美:平凡又神奇的贝叶斯方法

◆ ◆ ◆ 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子.更严格的公式和计算我会在相应的地方注明参考资料.贝叶斯方法被证明是非常 general 且强大的推理框架,文中你会看到很多有趣的应用. ◆ ◆ ◆ 1.历史 托马斯·贝叶斯(Thomas Bayes)同学的详细生平在这里.以下摘一段 wikipedia 上的简介: 所谓的贝叶斯方法源于他生前为解决一个"逆概"问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的.在贝叶斯写这

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

  离去年"马尔可夫链进行彩票预测"已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改善:彩票数据框架与分析预测总目录.同时这篇文章也是"[彩票]彩票预测算法(一):离散型马尔可夫链模型C#实现"的兄弟篇.所以这篇文章还有一个标题,应该是:[彩票]彩票预测算法(二):朴素贝叶斯分类器在足球胜平负预测中的应用及C#实现 . 以前了解比较多的是SVM,R

分类算法之决策树(Decision tree)

3.1.摘要       在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法.这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断.在这一篇文章中,将讨论另一种被广泛使用的分类算法--决策树(decision tree).相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用. 3.2.决策树引导       通俗来说,决策树分类的思想类似于找对象.现想象一个女孩的母亲要给这个女孩介绍男朋友,