自然科普R 统计学和算法生信算法

初识贝叶斯

2019-02-15  本文已影响14人  末一哟

什么贝叶斯定理、贝叶斯方法、贝叶斯网络这种,外行人一听头就疼,这完全没有乘法分配律乘法结合律来的亲民啊!实际上,他确实不亲民(摊手)

那我们就从如何着手去处理贝叶斯网络为目标,好好看,好好学(这是文章基于的框架结构,在此基础上进行了补充说明)。


一、贝叶斯方法

咱先整抓球,一个不透明的带子,里面有4个除了颜色完全相同的球:2红1绿1蓝。此时你去随手抓,那问你抓到各个颜色球的概率是多少?我想是个正常人都会说:那不50%、25%、25%?这是不论你取多少次,概率θ始终不变的事件,即不随观察结果X的变化而变化。

显然啊!那不然会是什么呢?

这种观点长期统治着人们,或者说,统治着正常人,这叫频率派观点。直到有个叫Thomas Bayes的人出来搅局。

1.1贝叶斯方法的提出

贝叶斯不介绍了,生前民间学术“屌丝”,身后颠覆了概率史啊。这里说一下他最终发表的一篇多年后轰动世界的文章:An essay towards solving a problem in the doctrine of chances(机遇理论中一个问题的解)

回到上面这个问题,袋子里取红球的概率θ是多少?正常人都说50%,贝叶斯说“NO!”。他认为取的红球的概率是个不确定的值,因为其中含有机遇的成分。

是不是不好理解了?那我们换个例子来讲(这个抓球有什么机遇,我也不懂,但大佬都以这些开头,所以咱换个例子)

78泽干了两年程序员,现在想自己创业开个外包公司。这个结果无非“走向人生巅峰”和“欠一屁股债”,要么成功要么失败。现在我们大家来估计一下他成功的概率有多大?你们可能会说:“这谁啊,两年就创业,吓他个鬼,不可能的。成功几率最多5%。”而我对他的为人比较了解,他有想法,有方法,有思路,还有毅力,能吃苦,还有情调,有凝聚力,还为他人着想等,那我就估计他成功的概率有75%以上。

这种不同于最开始的“非黑即白、非0即1”的思考方式,就是贝叶斯式的思考方式。

【频率派】把需要推断的参数θ看作是固定的未知常数,即概率虽然是未知的,但最起码是确定的一个值,同时,样本X是随机的,即不管球几红几绿,事件的概率θ一定。所以频率派重点研究样本空间,大部分的概率计算都是针对样本X的分布;

【贝叶斯派】认为参数θ是随机变量,而样本X是固定的。由于样本X固定,所以他们重点研究的是参数θ的分布。

这样,贝叶斯派提出了一个思考问题的固定模式:

先验分布π(θ)+ 样本信息X ==> 后验分布π(θ|x)

这意味着,新观察到的样本信息将修正人们以前对事物的认知。换而言之,在得到新的样本信息前,人们对θ的认知是先验分布π(θ),在得到新的样本信息X后,人们对θ的认知受其影响变为π(θ|x)。

先验信息一般来源于经验和历史资料,比如在S7以前的SKT VS RNG,解说总会根据历年比赛结果进行一个胜负的预判来相应解说。但从S7,S8这两个赛季后,发现韩国队不行了!那么现在你再看SKT VS RNG,可就不一定了不是吗?那是不是就是X影响了π(θ)得到了π(θ|x)。

后验分布π(θ|x)一般也认为是在给定样本X的情况下的θ条件分布,而使π(θ|x)达到最大的值θMD,这个θMD称谓最大后验估计,类似于统计学的极大似然估计。

这里插曲一下,似然和概率,很多人其实都不明白这是啥区别。似然(likelihood)在非正式场合中和概率(probability)几乎相同。但在统计学中完全不同。概率是在特定环境下某件事发生的可能性,也就是结果没有产生之前依据环境所对应的参数来预测某件事情发生的可能性;而似然正好相反,是在确定的结果下去推测产生这个结果的可能环境(参数)。

结果和参数相互对应的时候,似然和概率在数值上是相等的。了解更多似然,点击这里

当然除了上述思考模式,还有举世闻名的贝叶斯定理。

1.2贝叶斯定理

先回顾几个名词

条件概率(又称后验概率)就是事件A在另外一个事件B已经发生的条件下发生的概率P(A|B):

P(A|B)=\frac{P(A\cap B)}{P(B)}

自己花几个圆圈就能推导出这个公式了。

联合概率表示两个事件共同发生的概率:

P(A\cap B)或者P(A,B)

边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率从而消去它们(对离散随机变量用求和得全概率,连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。

现在考虑问题:P(A|B)是在B发生的情况下A发生的可能性。

(1)首先,B发生之前,对事件A发生的基本概率判断为A的先验概率P(A);

(2)其次,事件B发生后,我们对事件A发生概率重新评估,称为A的后验概率P(A|B);

(3)类似,事件A发生前,对B的先验概率P(B);

(4)事件A发生后,B后验概率P(B|A)。

贝叶斯定理如下:

P(A|B)=\frac{P(B|A)P(A)}{P(B)}

推导证明如下:

P(A\cap B)={P(B|A)}{P(A)}={P(A|B)}{P(B)}

上式两边同时除以P(B),若P(B)非零,变得到贝叶斯定理公式表达式。

上述为传统的贝叶斯公式写法,还有另一种写法,称之为贝叶斯推断。

1.3贝叶斯推断

对条件概率公式进行变形,得到如下形式:

P(A|B)=P(A)*\frac{P(B|A)}{P(B)}

P(A)称为先验概率,P(A|B)为后验概率,而P(B|A)/P(B)称之为可能性函数(likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

贝叶斯推断的含义:我们先预估一个先验概率,然后加入实验结果,看这个实验到底是增强还是削弱了先验概率,由此得到更接近事实后验概率。

这里,可能性函数>1,意味着先验概率被增强,事件A的发生可能性变大;可能性函数=1,意味着B事件无助于判断事件A的可能性;可能性函数<1,意味着先验概率被削弱,事件A的可能性变小。

举例加深理解:

【1】水果糖问题

两个一模一样的碗,一号碗中有30颗水果糖和10颗巧克力,二号碗有水果糖和巧克力各20颗。现在随机选择一个碗,从中摸出一颗糖,发现时水果糖。请问这个水果糖来自一号碗的概率是多少?

解:我们假定,H1表示碗一,H2表示碗二,有条件已知P(H1)=P(H2),即在取出水果糖之前,这两个碗被选中的概率相同。因此P(H1)=0.5,此为先验概率。

再假定E表示水果糖,所以问题变为已知E的情况下,来自碗一的概率有多大:求P(H1|E)。我们把这个称为后验概率,即E事件发生后,对P(H1)的修正。

根据条件概率公式,得到

P(H1|E)=\frac{P(H1,E)}{P(E)}=\frac{P(E|H1)P(H1)}{P(E)}=P(H1)\frac{P(E|H1)}{P(E)}

已知:P(H1)=0.5,P(E|H1)=0.75,那么求出P(E)就可以得到答案,根据全概率公式(推导根据条件概率公式推就行了)

P(x1,x2,...,xn)=P(x1)P(x2|x1)...P(xn|x1,x2,...,xn-1)

得到:

P(E)=P(E|H1)P(H1)+P(E|H2)P(H2)

将已知带入得P(E)=0.625,最后将结果带入原方程,得到P(H1|E)=0.6,也就是说取出水果糖后,H1事件的可能性得到了增强(P(E|H1)/P(E)=0.75/0.625=1.2>1)。

1.4应用

贝叶斯公式还有一个最经典也是目前最广泛的应用:拼音纠错,谷歌的拼音检查就是基于贝叶斯方法。

《人工智能:现代方法》作者之一Peter Norvig曾写一篇介绍如何写一个拼写检查的文章(原文),使用的也是贝叶斯方法。

用户输入一个单词,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c,错误记做w,那么拼写检查要做的事情就是:在发生w的情况下,试图推断出c,换而言之,就是已知w,然后在若干个备选方案中,找出可能性最大的那个c,即求P(c|w)的最大值。

P(c|w)=P(w|c)*P(c)/P(w)

由于对于所有备选的c来说,对应的都是同一个w,所以它们的P(w)相同,因此我们只需要最大化P(w|c)*P(c)。

其中P(c)表示某个正确的单词出现的“概率”,它可以用“频率”代替。如果我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率,就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比如在你输入一个错误的单词“tes”的时候,系统更倾向于“tea”,而不是“tee”,因为tea更常见。

当然这其中要是深究,还有更多的可能性,比如说错误字母与正确字母在键盘上的位置,也许你是按错了所以会拼错,但实际上你要拼写的单词就是那个频率低的单词,是不是?在这里,初学,咱先放一放。

P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就越有可能拼错,P(w|c)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率越高。你想拼写“july”,错误拼成“julw”的可能性就比错拼成“jullw”高很多。一般把这种问题称为“编辑距离”。


二、贝叶斯网络

2.1贝叶斯网络的定义

贝叶斯网络(Bayesian Network),又称信念网络(Belief Network),或有向无环图模型,十一中概率图模型。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓扑结构是一个有向无环图(DAG,direvted acyclic graphical)。

贝叶斯网路中节点表示随机变量,认为有因果关系(或非条件独立)的变量或命题则用剪头来连接。

例如,假设节点E直接影响到节点H,即E-->H,则用从E指向H的箭头建立节点E到节点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示。

简而言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。

关于随机变量,这里不同于普通公式中的x,z那种未知数,之前专门研究过,但是参考的网址找不到了。随手记了一些笔记,分享一下(字丑):

手稿1:基本概念 手稿2:公式定理

令G=(I,E)表示一个有向无环图(DAG),其中I代表图形中所有的节点的集合,而E代表有向连接线段的集合,且令X=(Xi),i∈I为其有向无环图中某一节点i所代表的随机变量,若节点X的联合概率可以表示成:

P(x)=\prod\nolimits_{i\in I}P(X_{i}|X_{pa(i)} )

则称X为相对于一有向无环图G的贝叶斯网络,其中,pa(i)表示节点i的“因”,也可以理解为“父节点”。

2.2贝叶斯网络的3种结构形式

给订如下图所示的一个贝叶斯网络:

示例网络

由图可知:

(1)x1,x2,......,x7的联合分布为:

P(x1)P(x2)P(x3)P(x4|x1,x2,x3)P(x5|x1,x3)P(x6|x4)P(x7|x4,x5)

(2)x1和x2独立(head-to-head);

(3)x6和x7在x4给订的条件下独立(tail-to-tail)。

根据上图,(1)很好理解,(2、3)所述的条件独立是什么意思呢?其实2、3点是贝叶斯网络中3个结构的其中两种。为了说清楚这个问题,需要引入D-Separation(D-分离)这个概念。

D-Separation是一种用来判断变量是否条件独立的图形化方法。换而言之,对于一个DAG,D-Separation方法可以快速的判断出两个节点之间是否条件独立。

2.2.1形式1:head-to-head

head-to-head

有:P(a,b,c)=P(a)* P(b)* P(c|a,b)成立,化简如下:

P(a,b, c)=P(a)P(b)P(c|a,b)=P(a)P(b)\frac{P(c,a,b)}{P(a,b)}

在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立,对应本节图1的x1,x2独立。

2.2.2形式2:tail-to-tail

tail-to-tail

考虑c未知和已经两种情况:

1、在c未知的时候,有:P(a,b,c)=P(c)P(a|c)P(b|c),此时,无法得出P(a,b)=P(a)P(b),即c未知时,a、b不独立;

2、在c已知的时候,有:P(a,b|c)=P(a,b,c)/ P(c),然后将P(a,b,c)=P(c)P(a|c)P(b|c)带入此式中,得到:P(a,c|c)=P(a,b,c)/ P(c)=P(c)P(a|c)P(b|c)/P(c)=P(a|c)P(b|c),即c已知时,a、b独立。

所以,在c给定的条件下,a、b被blocked,式独立的,称之为tail-to-tail条件独立,对应本节图1中“x6,x7在x4给定的条件下独立”。

2.2.3形式3:head-to-tail

head-to-tail

分c未知和已知两种情况:

1、c未知时,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但无法推出P(a,b)=P(a)P(b),即c未知时,a、b不独立;

2、c已知时,有:P(a,b|c)=P(a,b,c)/ P(c),且根据P(a,c)=P(a)P(c|a)=P(c)P(a|c),可化简得到:P(a,b|c)=\frac{P(a,b,c)}{P(c)}=\frac{P(a)P(c|a)P(b|c)}{P(c)}=\frac{P(a,c)P(b|c)}{P(c)}=P(a|c)P(b|c)

所以在给定c的条件下,a、b被blocked,是独立的,称之为head-to-tail条件独立。

head-to-tail其实就是一个链式网络,在xi给定的条件下,xi+1的分布和x1,x2,...,xi-1条件独立。这意味着什么?这说明xi+1的分布状态只和xi有关,和其他变量都无关!通俗一点说,当前状态只跟上一状态有关,跟上上次或上上上上上上上次状态都无关!这种顺次演变的随机过程,就叫做马尔科夫链(Markov chain)。有:

P(X_{n+1}=x|X_{0},X_{1},...,X_{n})=P(X_{n+1}=x|X_{n})

将上述节点推广到节点集,则:对于任意的节点集A,B,C,考察所有通过A中任意节点到B中任意节点的路径,若要求A,B条件独立,则需要所有的路径都被blocked,即满足下列两个前提之一:

A和B的“head-to-tail”和“tail-to-tail”路径都通过C;

A和B的“head-to-head”路径不通过C及C的子孙;

最后举例说明上述D-Separation的3种情况(即贝叶斯网络的3种结构形式):

结构举例说明

2.3贝叶斯网络的实例


我们没能力发现知识,我们只是知识的寄生虫

上一篇下一篇

猜你喜欢

热点阅读