【续】分类算法之贝叶斯网络(Bayesian networks)

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

重新考虑上一篇的例子

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

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

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

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

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

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

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

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

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

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

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

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

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

贝叶斯网络的定义及性质

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

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

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

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

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

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

贝叶斯网络的构造及学习

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

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

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

贝叶斯网络的应用及示例

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

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

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

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

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

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

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

以上只是贝叶斯网络推理的算法之一,另外还有其它算法.

(Via: 张详http://leoo2sk.cnblogs.com/)

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

使用深度学习检测面部特征,让实时视频聊天变得更有趣

也许你想知道如何在实时视频聊天或者检测情绪的时候把有趣的东西放在脸上?我们可以利用深度学习以及一种较老的方法实现它。 ? 过去,检测人脸及其特征(如眼睛、鼻子、...

36350
来自专栏ATYUN订阅号

黑客技术:欺骗人工智能步骤详解

几乎只要程序员在编写计算机程序,黑客就会一直在设法利用这些程序。黑客可能利用程序中最小的漏洞侵入系统,窃取数据,通常他们能造成很严重的破坏。 但是由深度学习算...

42970
来自专栏机器之心

学界 | 南京大学周志华等提出DFOP算法:无分布一次通过学习

选自arXiv 机器之心编译 作者:赵鹏、周志华 参与:吴攀、黄小天 在线机器学习应用中,数据总是会随时间增多,怎么开发能有效应对这种动态情况的算法是一个值得关...

32970
来自专栏机器之心

资源 | textgenrnn:只需几行代码即可训练文本生成网络

选自GitHub 作者:minimaxir 机器之心编译 参与:Geek AI、路 本文是一个 GitHub 项目,介绍了 textgenrnn,一个基于 K...

31560
来自专栏AI研习社

禅与奶罩识别艺术(下)

编者按:本文接上期禅与奶罩识别艺术(上),作者 Kaiser,景略集智总经理,原文载于集智网专栏,雷锋网 AI 研习社已获授权。 过拟合/欠拟合 之前介绍了...

45570
来自专栏CDA数据分析师

机器学习算法一览(附python和R代码)

“谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能够使电脑变得更聪明,更人性化的技术,机器学习。 ” —— 埃里克 施密特(谷歌首席执行官) 当计算...

41370
来自专栏PPV课数据科学社区

【推荐】深入探究递归神经网络:大牛级的训练和优化如何修成?

在深度学习领域,传统的前馈神经网络(feed-forward neural net,简称FNN)具有出色的表现,取得了许多成功,它曾在许多不同的任务上—...

27860
来自专栏机器之心

教程 | 如何使用Elixir语言实现深度学习?剖析多层神经网络的构建和训练

选自automating the future 机器之心编译 参与:Jane W、吴攀 在这篇文章中,作者们使用 Elixir 编程语言创建一个标准的 3x3...

334130
来自专栏AI研习社

让深度学习帮你创作爵士乐

数学与音乐有着内在的联系。 用算法作曲的历史,可以追溯到计算机科学出现的初期。翻译模型可以把一张图片转译为音乐。这都是基于规则的:如果图片里有一条水平的线,就会...

36080
来自专栏BestSDK

Google推出黑科技:无需写代码,3分钟学会机器学习

简单的说,Teachable Machine是一个基于浏览器的机器学习演示实验,用一个叫做Deeplearn.js的库构建,网页开发者可以编写一个简单的视觉输入...

39440

扫码关注云+社区

领取腾讯云代金券