MacTalk 跨越边界
上QQ阅读APP看书,第一时间看更新

大数据时代的贝叶斯定理

今天给大家说说大数据下的贝叶斯定理,算是科普。如果有朝一日你能以之推算出搭讪美女的成功率,算我一份功劳。

每当有技术热点或新概念出来的时候,人群就会分成三种:炒作的、观望的和踏踏实实干活的。炒作的是不懂的,观望的是保守的,沉下来去研究那些浮萍下面的算法、引擎、框架和语言的人,才是最后吃到果子的人。云计算、大数据莫不如是。

随着搜索、社交网络、电子商务和移动互联网的发展,数据总量和增长速度已经到了常人(注:我这样的人)无法想象的地步。其中数学相关的知识是大数据应用和发展的原动力。

举个例子,比如贝叶斯定理。

搞数理统计如果不知道贝叶斯定理,那么你的人生肯定是不完整的。贝叶斯定理是贝叶斯推断的应用,是英国数学家托马斯·贝叶斯在1763年首次提出的。与其他统计学不同,贝叶斯定理是建立在主观判断的基础上的,它需要有大量的样本数据,并在数据的基础上进行计算,数据量越大,计算结果越能反映现实世界。

在计算机诞生之前,这个前提条件是很难满足的,所以贝叶斯定理在历史上很长一段时间内都没有得到很好的应用。然后,互联网时代来临了……

现在贝叶斯定理广泛应用于中文分词、垃圾邮件处理、机器学习、图像识别、拼写检查和一些常用的分类算法上。可以说,我们现在最常用的互联网服务上,贝叶斯定理无处不在。贝老爷子没能挺到今天看到他提出的理论在互联网时代大放异彩,也算是憾事。其实做基础研究和艺术创作的人都非常不容易,每天徜徉在知识的小黑屋里冥思苦想,时时刻刻准备改变世界,结果很多学术成果和艺术成就都是自己挂了之后才流芳百世的,这种事随便想想也会让人感到悲伤。

当然,这些伟大的创造者和先知先觉的神人大多是以认知世界和发现规律为己任,他们注定是要去拯救和影响一代又一代的后人,所以早已超凡脱俗长袖飘飘,肯定不会有我等这些俗人俗想。

关于贝叶斯定理,刘未鹏和阮一峰的博客上都做过详细的介绍,大家可以去深入学习。我这里做个最简介绍,希望能够帮助大家入门。

贝叶斯定理主要是用来描述两个条件概率之间的关系,先介绍下条件概率。


◆ P(A):表示事件A发生的概率。

◆ P(B):表示事件B发生的概率。

◆ P(AB):表示事件A和事件B同时发生的概率,也叫联合概率。


而条件概率的意思就是:事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。同理,P(B|A)就是事件A发生的情况下,事件B发生的概率。

用文氏图可以很容易地推导出贝叶斯公式,如下图所示:

当事件B发生的情况下,事件A发生的概率就是P(AB)除以P(B),也就是:

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

即:

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

同理可得:

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

换算一下就得到了贝叶斯公式:

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

也就是:

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

用人话说出来就是:事件B发生的情况下事件A发生的概率等于事件A发生的情况下事件B发生的概率乘以事件A发生的概率,然后再除以事件B发生的概率。

我承认这句话更像是绕口令而不是人话,反正你们懂的,如果不懂竟然能看到这里,那么你赢了。

下面我们举个例子看看这个公式怎么用。有AB两个一模一样的箱子,每个箱子里都放了很多黑球和白球。A箱子里有6个黑球,4个白球;B箱子里有1个黑球,9个白球。现在随机选择一个箱子拿出一个球,发现是黑球,请问这个球来自A箱子的概率是多少?

解题思路如下。

我们把“从A箱子拿出球”的事件设置为A事件,“拿出的球是黑球”设置为B事件。由于两个箱子是一模一样的,那么“从A箱子拿出球”的概率是二分之一,即:

P(A) = 0.5

“拿出是黑球”的概率也很容易算出来,把所有的黑球加起来除以球的总数,即:

P(B) = (6+1)/20 = 0.35

“从A箱中拿出黑球”的概率就更容易了,用A箱中的黑球数除以A箱中球的总数,即:

P(B|A) = 6/(4+6) = 0.6

那么根据公式,这个黑球来自A箱的概率就是:

P(A|B) = 0.6×0.5/0.35≈0.857

生活中,我们也常常会被类似的概率问题困扰,比如医患关系中常见的误诊问题,这些都是可以通过贝叶斯公式进行概率演算的,网络上有很多相关案例,有兴趣的可以去阅读学习(搜索“贝叶斯实例”即可)。

以前推荐过的书《黑客与画家》的第8章“防止垃圾邮件的一种方法”,就采用了贝叶斯原理实现垃圾邮件过滤器,其中有详细的描述和实现思路,有这本书的读者可以去看看。

还有一个学习材料,是PyCon上的一个视频讲座,配有相关的Python代码库,相关网址为https://sites.google.com/site/simplebayes/home/pycon-2013

另外,如果你想从事大数据领域相关的工作,R语言也是值得关注的一门语言,关于这门语言,我还没入门。