Bayes理论

概率和统计的区别:
概率论和统计学解决的问题是互逆的。


在概率论中,

我们已知一个过程的概率模型,该概率模型的不确定性由响应的概率分布来描述,概率论回答的问题是该过程产生一个结果的可能性有多大这样的问题,比如我们扔一枚硬币,得到硬币正面的可能性是50%,这个概率分布是建立在概率论的基础上的。

在统计学中,

一个过程的概率分布是未知的,但是我们有很多现实中的实验数据,可以通过这些观测值来推断这个过程的不确定性。
总的来说,概率论类似于从上帝视角看一个问题,而统计学是从实践者的角度看问题,两者相辅相成。
假设桶里面有 100 个小球,小球分为白色和黑色。如果已知桶里面一共有 30 个白球和 70 个黑球,想回答随机从桶中摸出一个白球(或者黑球)的概率是多少这样的问题,这就属于概率论的范畴。而如果已知通过有放回的采样抽出了 10 个球并且其中 4 个白球 6 个黑球,想要推断的是小桶里面白球(或者黑球)的百分比(这些对我们来说是未知的),这就是统计学的范畴。

条件概率

Bayes定理的推导始于条件概率:

P(A|B)=P(AB)P(B)

经过这个公式变形我们知道

P(AB)=p(A|B)P(B)=P(B|A)P(A)

带到上面条件概率公式里面我们得到:

P(A|B)=P(B|A)P(A)P(B)

这个就是大名鼎鼎的贝叶斯定理,即条件概率P(A|B)可以通过先验概率P(A),P(B),和另一个条件概率P(B|A)得来。

条件独立

如果

P(X,Y|Z)=P(X|Z)P(Y|Z)
,或等价地P(X|Y,Z)=P(X|Z),则称事件X,Y对于给定事件Z是条件独立的,也就是说,当Z发生时,X发生与否与Y发生与否是无关的。

Bayes公式

在正式介绍Bayes公式之前,需要我们知道一个重要的公式:全概公式,全概公式描述问题在现实生活中非常常见

全概公式:

B1,B2,...,Bn是一列互不相容的时间,且有

i=1nBi=Ω,P(Bi)>0

P(A)=i=1nP(Bi)P(A|Bi)

这里Ω表示必然事件,P(Ω)=1

上面的式子就是全概公式,全概公式企图用条件概率去求一个事件的概率。

全概公式的一个例子
设某工厂有四条流水线生产同一种产品,该四条流水线的产量分别占总量的15%,20%,30%,35%,又这四条流水线的不合格率依次为0.05,,0.04,0.03,0.02。现在从出场产品中任取出一件,问恰好是不合格产品的概率为多少?

设A={抽出一件是不合格产品}

Bi={抽出一件是第i条流水线的产品}, i=1,2,3,4

P(A)=i=14P(Bi)P(A|Bi)

=0.15×0.05+0.20×0.04+0.30×0.03+0.35×0.02

但是条件概率是怎么来的呢?让我们看一下:

证明:

P(A)=P(AΩ)=P[A(i=1nBi)]

=P[i=1n(ABi)]=i=1nP(ABi)

i=1nP(Bi)P(A|Bi)

知道了全概公式,接下来我们来看贝叶斯公式:

Bayes公式

仍然假设B1,B2,...,Bn为一列互不相容的事件,且i=1nBi=Ω
则有:

P(Bi|A)=P(Bi)P(A|Bi)j=1nP(Bj)P(A|Bj)

这就是Bayes公式。

Bayes方法的例子

用甲胎蛋白法查肝癌。令:

C1={被检查者患肝癌}

C2 = {检查者不患肝癌}

A1={甲胎蛋白检验结果为阳性}
A2={甲胎蛋白检测结果为阴性}

由资料已知:

P(A1|C1)=0.95

P(A2|C2)=0.90

已知某地区肝癌发病率为P(C1)=0.0004,一个病人在检查过程中检测出甲胎蛋白为阳性,求他患肝癌的概率:

P(C1|A1)=P(A1C1)i=12P(Ci)P(A1|Ci)

=P(A1|C1)P(C1)i=12P(Ci)P(A1|Ci)

朴素Bayes分类器

朴素Bayes分类器有一个前提假设:每一个分类的特征与其他属性特征都条件独立或完全独立,且每个样本之间也相互独立。怎么理解呢?所谓朴素Bayes分类器,首先它是一个分类器,我们要解决的是一个分类任务,例如我们要对一个物体进行分类,如下表

从理论到实践介绍Bayes方法

每一行代表了一个特征称为一个向量,我们要根据一个物体的特征对该物体分类,判断该物体是苹果,鸭梨,还是葡萄。所谓的独立,说的是表格中的每一列所代表的特征之间没有关联,物体的水果的大小和水果的味道没有关系朴素贝叶斯分类器的前提假设成立,就可以利用朴素贝叶斯去做分类任务。

假设一共可能的分类标记有N种,即LABEL={c1,c2,...,cN},这个集合是标签集合,可能ci代表的就是上表中的苹果,梨,西瓜或者葡萄。假设x是一个特征向量,以上表数据为例, x1=[圆形,中,红,酸甜,苹果]。如果现在给一个新的水果,暂且不知道它是什么水果,但是通过观察得到了它的特征向量x=[心型,中,粉红,甜],然后我们需要基于后验概率P(ci|x)来判断类别。P(ci|x)表示的是水果的特征为x的条件下,判断为ci所代表的水果类别的概率。

现在我们要设计一个分类器h(x),使得这个分类器尽可能准确,比如人的大脑经过学习后就是一个非常好的分类器,现在随便到市场上拿一个水果都能大致猜出来。现在我们要用贝叶斯理论做一个分类器,首先怎么评判这个分类器的好坏呢?简单来讲,给很多水果的样本,然后去猜是哪种水果,我猜对的个数越多,就越好。在这里引入一个叫做损失的概念,损失可以理解为猜错的个数,当然是损失越小越好了。

对于一个样本x分类为ci所产生的期望损失为:

loss(ci|x)=j=1NλijP(cj|x)

其中λij表示误判损失, 所谓误判损失,就是在判断错误的时候值为1,但是判断正确的时候为0。我们可以理解P(cj|x)是误判概率,这样的化就知道上面的式子为什么叫期望损失了。

我们最终的目标是找到一个分类器h(x),使得所有的样本都获得最小的期望损失。
总体的期望风险计算

loss(h)=Ex(loss(h(x)|x))

总体的损失loss(h)最小化,得到了一个最优的分类器h(x)。这就是贝叶斯判别准则,最终的目标就是找到这个h(x)

h(x)=argmincLABELloss(c|x)

因为λij 是二值函数,所以,可以得到

loss(c|x)=1P(c|x)

所以

loss(c|x)=1P(c|x)

最优分类器

h(x)=argmaxcLABELP(c|x)

上式就是贝叶斯分类器的最终形式,一个新的属性向量x对应的标签,可以通过最大化P(c|x)后c的值对应。

因为属性之间是独立的,所以有:

P(c|x)=P(c)P(x|c)P(x)=P(c)P(x)i=1dP(xi|c)

d是数据库中属性的个数, xi表示为x在第i个属性上的取值。

对于所有的类别来说P(x)相同,因此上式的判别准则可以化简为:

h(x)=argmaxcLABELP(c)i=1dP(xi|c)

在离散的样本中:

P(c)=|Dc||D|

Dc表示所有标签为c的样本集合,D表示整个数据集
对于离散属性,Dc,i表示集合Dc在第i个属性上的取值为xi的样本集合

P(xi|c)=|Dc,i||Dc|

对于连续属性,比如西瓜的密度,我们假定p(xi|c)N(uc,i,σc,i2)

朴素贝叶斯分类器的应用举例

借用周志华老师的《机器学习》中西瓜的数据集,
从理论到实践介绍Bayes方法
然后给一条新的数据来判断这个瓜是好瓜与否。

编号, 色泽, 根蒂, 敲声, 纹理, 脐部, 触感, 密度, 含糖率, 好瓜
test1, 青緑 蜷缩 浊响 清晰 凹陷 硬滑 0.697 0.46

分别计算

P(=)P(=)
然后分别计算

P(xi|=)

P(xi|=)

最后找到P(=)i=1dP(xi|=)P(=)i=1dP(xi|=)那个更大,最终我们判别的结果就是结果大的那个c

Bayes网络

定义及其结构

贝叶斯网络借助有向无环图(Directed Acyclic Graph)来刻画属性之间的依赖关系,之前朴素贝叶斯分类的前提条件是各个属性之间都条件独立或者独立,但是当属性之间不能做到条件独立和完全独立的情况朴素贝叶斯就不能解决这类问题。

在某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就成立Bayes网络。其主要用来描述随机变量之间的条件依赖,用图的节点表示随机变量,用箭头表示依赖关系。一个Bayes从图论的定义为B=(G,θ),G表示网络结构,θ表示属性之间的依赖关系。假设属性xi在G中的父节点集为πi,则θ包含了每个属性的条件概率表PB(xiπi)

网络结构

贝叶斯网络结构有效地表达了属性之间的条件独立性,给定父节点,贝叶斯网络假设每个属性与它的非后裔属性相互独立

为了分析有向图中变量之间的条件独立性,可以使用有向分离,把有向图转成无向图,称为道德图,使用道德图可以更直观地看到变量之间的条件独立性。

学习

学习网路结构

现实中网络结构一般都是未知的,可以采用一些算法去搜索合适的网络结构,这个过程实际上也是一个优化问题。但是这些算法一般都比较复杂,甚至不能实现。所以大家一般会通过一些其他方法去确定网络结构。

推断

推断概率分布

假设网络结构确定下来,训练好的网络就能查询一些信息,即通过一些属性变量的观测值来推断其他属性变量的取值。当网络节点较多、连接稠密时,难以进行精确推断,此时需借助近似推断,降低精度要求,在有限的时间内获得近似解,实际中通常用 Gibbs sampling (吉布斯采样)

假设我们知道一组变量E=E1,E2,...,Ek取值为e=e1,e2,...,ek待查询变量是Q=Q1,Q2,...,Qn取值为q=q1,q2,...,qn。我们可以通过吉布斯采样算法求出后验概率

P(Q=qE=e)

Reference

python Bayes网络pgmpy库使用
[matlab Bayes网络]

相关文章: