贝叶斯分类器与贝叶斯网络

来源:互联网 发布:西安交大电气考研知乎 编辑:程序博客网 时间:2024/06/08 08:40

转载自:http://blog.sina.com.cn/s/blog_68ffc7a40100ueb5.html

贝叶斯分类器是一种基于贝叶斯公式的分类器,是一种基于统计的分类器,它计算在某一特征向量的前提下,各种分类可能出现的概率.把概率最大的那个类当作最终的分类结果.贝叶斯分类器分为2种:朴素贝叶斯分类器,贝叶斯网络.

这篇博克简单介绍下这两种分类器原理.

朴素贝叶斯分类器

贝叶斯公式如下

D0A402C92B3967E0AB4B53B70C2CB05E4D4BDF06

其中X代表特征向量, C代表分类.我们的目标就是找出使得这个后验概率最大的那个类.

5F141A1320298BA11E97D7D7180972EFF9C2DA08

其中需要注意的是X中的各个特征分量是分布独立的.这样就有:

E86BBD5BDC7FE8574F2B18032862D0A50B9C184C

9DEC73BEBD5ACA6224E6EE3876CCBD74F4336050

这些概率都可以从样本中很快统计出来,从而很容易计算出结果。

朴素贝叶斯分类器一个很经典的应用就是用来进行垃圾邮件过滤。每一封邮件都包含了一系列特征词,这些特征词就构成特征向量X.我们只需要计算在该特征向量出现的前提下此邮件为垃圾邮件的概率就可以进行判别了。

实际上算法的基础就是词频的计算,这个可是mapreduce这种框架的强项啊。两轮MR之后就可以得出结果。

贝叶斯网络

朴素贝叶斯分类器工作必须有一个前提假设,特征属性之间的关系必须是独立的,只有在这个假设前提下,朴素贝叶斯分类器才能工作的比较好。但是在现实世界中,这种假设并不成立。所以另一种算法就被提出-贝叶斯网络。

贝叶斯网络的定义并不复杂,一个贝叶斯网络就是一个有向无环图,图中的每一个节点代表着一个随机变量(可以理解为样本的特征属性),对应着每一个节点贝叶斯网络还有一张条件概率表(CPT)。CPT表明了子节点对父节点的条件概率,也就是FE956615B6B83751277E5CD07CA60D20A2B43386。对于没有父子关系的节点们,他们之间是相互独立的。所以就有:

431F0FAC1F5282C3834D3A0C25E537C18897E4E1

这个需要注意的是,如果求得是部分变量的联合概率分布,那么就必须基于上述公式进行一个全概率公式的变换,例子:

2A0CD910F8499CC8BDF52608005414FBE84D8408

如果所有的属性的父节点都是X1(当然除了自己),那么上述公式就有:

C628A2C510750B5765465427BBF8CBDC5E3BCFCD

这么说可能比较晦涩,举个例子画个图:

C628F1784D015BB36C0771C8AB7C132966C26D78

贝叶斯网络中有些变量(节点)是可以被直接观测得到的,这些变量是可以在数据集中体现出来的,这些变量可以称之为观察变量.而有些变量是无法直接观测到,无法直接在数据集中体现的,这些变量称之为隐性变量.这个应该很好理解,举个例子,假如在医院的所有的医疗记录中,只存在三个变量,高血压,肥胖,急性肠炎.肥胖可以导致高血压,它是高血压的父节点,这很明显,但我们不能只考虑这三个变量构成的网络.因为急性肠炎可能导致抵抗力下降,抵抗力下降也会导致高血压.(好牵强的例子,大家忍忍吧,实在是医学知识匮乏).尽管医院的记录中并不包含任何营养不良的医疗记录,但是它确实是高血压的一个可能原因,我们需要把它作为一个变量在贝叶斯网络中考虑进来,这样的变量就是隐藏变量,我觉叫间接变量可能更好。

1)贝叶斯网络推理

贝叶斯网络一旦购建好,我们就可以计算在给定一些变量的情况下,查询处任意变量组合的概率,这被称之为贝叶斯网络推理,也是贝叶斯网络的应用之所在.贝叶斯网络推理算法现在已知是一个N-P问题.下面就简单分析一下如何来推理[例子来源于文献4]

C99BE606343ED6F15D7A3D442F52B5DE582C188D

上图是一个简单的贝叶斯网路,h1,h2隐藏变量,o1,o2是可观测变量,所有这些变量要么是0,要么是1。我们推理的目的就是在给定其它变量的观测值时推理出某些变量目标(也许是隐藏变量)的值的概率分布。本例中,就有

693D5F59AEE0AC6F8115EFD45C682D7CEA22CFF7

根据最后的推导结果,就可以根据CPT得出最后的概率分布.

注意P(o1,o2)的推导,全概率公式.

当然这是最直接的算法,算法复杂度较高,现在比较常用的实际上是连接树算法,接口算法等等,有很多这方面的论文讨论这个.

2)贝叶斯网络的构造

上面谈到了贝叶斯网络的使用,这里再讨论一下贝叶斯网络的构造.贝叶斯网络的构造需要构造两个方面,一个是拓扑结构,另外一个是CPT.

拓扑结构的构造有两种方法:

第一借助于领域专家帮忙构造,由该领域专家来设计网络拓扑结构.

第二通过算法来构造,比如基于结构空间的贪婪搜索等等.有兴趣请参考相关论文

CPT的构造需要通过样本学习来构造,下面就简单介绍一下梯度下降算法构造CPT.

先有下面的定义:

C85DB484E43C4825105F005447E4848406B681DE

5871866E2447A8CF1EF3A120B6ADFBD65F6FD9F9代表CPT中的一个项目,表示的概率是在给定它的父亲们等于它的第K个可能的值(可能是一种组合)时, 取它的第j个值的概率.举个例子来说,对于上面的例图Fingure 6.11,对于LC的CPT,如果LungerCancer是第三个特征属性6175D62CF05599DD238481ADD92B4D7A94B82C0C,CPT就有下面的对应:

C39F647F917DF1F7846F18B0F5E60E2C0EC4636B

为了构造CPT,我们需要有样本集D,包含了m个样本,每个样本完备得包含了所有特征属性.

我们的目的就是最大化C34D2B8E0586AF0591F5E5434D8E3CC7C06831DF,也就是最大化在目前CPT的条件概率下,出现当前D样本分布的概率.那么我们的目标就变成了求函数的最优解问题.于是考虑使用梯度下降法(也就是所谓的爬山).我们想象一个等高图模型,我们为了求该登高模型的最大值,我们该怎么做呢?一个很自然的想法就是我们先随便在山上找一个点,然后找到点的梯度,沿着梯度方向我们前进一个固定步长,然后继续求梯度,继续再沿着梯度方向前进一个固定步长,然后一直循环.那么什么时候结束呢?两种情况下:

第一到了某一点梯度发现已经为0.那就证明该点已经到了最高值

第二在沿着该点的梯度方向前进了步长之后,发现高度没有发生明显的变化,这个变化很小,小于一个既定的阈值.那么我们也认为找到了局部最高值.

这种方法可以求到局部最优解,但无法确保得到全局最优解。

把这种方法用到求2FE43CE9D44D8F0C1B20AD4308F890C21EC5F0CB的局部最优解上,就有如下算法:

第一 随机CPT表中的条目

第二 求B44F5C817C829294D9F787946B69F32F17AAF481在w初始值时的梯度,由于D是一个数据样本集和,所以该梯度可以分解为每一个样本在w初始值时的梯度之和.经过一系列概率公式变化(参见文献二),就可以得到如下公式:

6237C7FCA0B5558B383D1B95F4E59DBC39E1FE4C

所以样本的梯度值就很容易求出来了,注意上面公式的最后结果分子不是1,就是0.因为针对某一个样本,变量和其父亲出现某种分布的概率要么是0,要么是100%.有了上述公式,我们针对贝叶斯网络的所有CPT条目都调用上述公式,就可以得到每个条目在某个样本下的梯度.对样本集合中的每个样本我们都经过上面的计算,样本集合D中每个CPT条目的梯度是所有样本梯度的和.把所有条目的梯度组合在一起,就是整个0AF420178EE3DDA80A56D72C49A410AFF4C3F524的梯度.注意这里的D11ECF801DEC4D10C73588FEDD4312C82FC6B3FE的梯度不是一个值,而是一个所有CPT条目的分布.

第三 由于0296E8FF00D93D34A2C2EBB2699D8556783CB62F需要有一定的约束条件 12406517388BF850B99BED8E92FE56D4788FF20C
所以CPT条目的分布,也就是FCD1165A036939FB1B0F57B1336864D46397F52B的分布需要投射到一个平面上,因此需要一个平面投射转化成 0F5DE59B3C97DCA59A7C144DD941C383317E27ED

第四 根据28C9044DBCAF2C90C5B1125AFD7FE20100FA01D8,按照一定的步长来更新所有的 204E0FC09796552E487D815C4DD9630EA3235182

第五 继续迭代至 1CBF45A7BBDB9E060D1EDC0AB5F96EE2AC9EC80D=0或小于固定阈值

具体算法参加下图

FA8E85818C0BD8DF29E90162CAAEF41EA5351190

贝叶斯网络的一个应用场景就是专家故障诊断系统,用来评估在故障出现的情况下各种故障原因的概率分布.

参考文献:

[1] 点到平面的投影算法http://blog.csdn.net/coollen_mmx/article/details/4200489

[2]Local learning in probabilistic networks with hidden variables

[3]http://www.cnblogs.com/leoo2sk/archive/2010/09/18/bayes-network.html

[4]离散动态贝叶斯网络的直接计算推理算法

[5]Adaptive Probabilistic Networks with Hidden Variables


0 0
原创粉丝点击