程序员的数学--用贝叶斯定理来推断一个案子

Posted frank909

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员的数学--用贝叶斯定理来推断一个案子相关的知识,希望对你有一定的参考价值。

贝叶斯讲什么呢?

先抛出一个问题:

我有一个同事年不群,请问他是正人君子的可能性有多大?

因为可能性是个主观感受,没有办法量化,所以在数学中一般会问年不群是正人君子的概率有多高?

初看无从下手,但其实也有套路可循。

  1. 先给一个假设
  2. 然后观察验证和修改
  3. 得到相对靠谱的结果

比如,我们具体可以先这样做:

  1. 假设他是正人君子的概率是 0.5
  2. 寻求证据,证明他是正人君子或者否
  3. 修正之前的假设概率得到最终概率

你看看,这实际和我们的日常生活也差不多,贝叶斯定理正好可以解决如此问题,不过它是数学工具。

什么是贝叶斯定理?

因为是数学工具,它有自己的公式:
P ( H ∣ E ) = P ( H ) ∗ P ( E ∣ H ) / P ( E ) P(H|E)=P(H)*P(E|H)/P(E) P(HE)=P(H)P(EH)/P(E)

我归纳如下:

贝叶斯定理是一个通过修正先验概率最终求得后验概率的过程。

先验概率

上面公式中的 P(H) 是先验概率。

先验概率一般指事先统计、经验估算的概率,它是一个既成的事实,不以人的意志为转移。

条件概率

P(E|H) 是条件概率,当事件 H 发生时,事件 E 也发生的概率是多少

标准似然度 1

P ( E ∣ H ) / P ( E ) P(E|H)/P(E) P(EH)/P(E)

后验概率

P(H|E) 是条件概率,但因为标准似然度的原因,它被称为后验概率。
P ( 后 验 ) = 标 准 似 然 度 ∗ P ( 先 验 ) P(后验)=标准似然度*P(先验) P()=P)

贝叶斯推理尝试

好了,公式知道了,我们来求年不群是不是正人君子的概率。

1. 给假设概率

假定一个人是正人君子的概率是 0.6,我们用 P(H) 表示,H 是假设(Hyposesis) 的缩写
P ( H ) = 0.6 P(H) = 0.6 P(H)=0.6
比如 100 个人当中有 60 个正人君子,40 个猥琐男。

2. 观察论证

我一直以为你是正人君子,直到。。。

这个句式是比较常见的电视剧台词模板,说明了什么呢?

一些新的线索,让之前的看法发生了改变。

比如:

  1. 我一直以为你是正人君子,直到发现你最终经常做一些猥琐的动作。
  2. 我一直以为你是正人君子,直到发现你每天读《曾国潘家书》。

两种不同的证据,会改变假设的可能性,可能增强,可能减弱。

设想,我们发现的第一类证据,看见了年不群做一些猥琐的动作。

猥琐男不一定做猥琐的动作,做猥琐动作的也可能是正人君子。

怎么把这个现象用数学概率描述出来呢?

猥琐动作记为事件 E,它其实也有概率,用 P(E) 指代,E 是 Evidence 的缩写。
P ( E ) = P ( E ∣ H ) ∗ P ( H ) + P ( E ∣ A ) ∗ P ( A ) P(E) = P(E|H)*P(H) + P(E|A)*P(A) P(E)=P(EH)P(H)+P(EA)PA
这里的 A 代表猥琐男,P(A) 是猥琐男的概率。

P(E) 的意义是一个人做猥琐动作的概率,包括了正人君子做猥琐动作的概率和猥琐男做猥琐动作的概率。

假设 60 个正人君子中有 5 个人做了猥琐的动作,那么按照统计学的算法
P ( E ∣ H ) = 5 / 60 = 0.083 P(E|H)=5/60=0.083 P(EH)=5/60=0.083
假设 40 个猥琐男中有 36 个人会做猥琐的动作,那么概率是:
P ( E ∣ A ) = 36 / 40 = 0.9 P(E|A)=36/40=0.9 P(EA)=36/40=0.9
那么,整体人群做猥琐动作的比例就可以根据公式求出来了:
P ( E ) = P ( E ∣ H ) ∗ P ( H ) + P ( E ∣ A ) ∗ P ( A ) = 0.083 ∗ 0.6 + 0.9 ∗ 0.4 = 0.05 + 0.36 = 0.41 P(E) = P(E|H)*P(H) + P(E|A)*P(A)=0.083*0.6+0.9*0.4=0.05+0.36=0.41 P(E)=P(EH)P(H)+P(EA)PA=0.0830.6+0.90.4=0.05+0.36=0.41
这样,套公式后验概率也可以求出来了:
P ( H ∣ E ) = P ( H ) ∗ P ( E ∣ H ) / P ( E ) = 0.6 ∗ 0.083 / 0.41 = 0.12 P(H|E)=P(H)*P(E|H)/P(E)=0.6*0.083/0.41=0.12 P(HE)=P(H)P(EH)/P(E)=0.60.083/0.41=0.12
这代表什么呢?

代表年不群是正人君子的概率是 12%.

但如果不考虑证据的前提下,他的先验概率可是高达 60%。

数学题目练习

一个幼儿园的男孩、女孩的比例是 4.5 :5.5,男孩子往水池扔东西的概率是 0.6,女孩子扔东西的概率是 0.4。现在发现水池有一个玩具,请问是男孩子扔的概率是多少?

A 代表男孩子,所以 P(A) 为 0.45

B 代表女孩子,所以P(B) 为 0.55

E 代表扔东西,P(E|A) = 0.6,P(E|B)=0.4,所以:
P ( E ) = P ( E ∣ A ) ∗ P ( A ) + P ( E ∣ B ) ∗ P ( B ) = 0.6 ∗ 0.45 + 0.4 ∗ 0.55 = 0.49 P(E)=P(E|A)*P(A)+P(E|B)*P(B)=0.6*0.45+0.4*0.55= 0.49 P(E)=P(EA)P(A)+P(EB)P(B)=0.60.45+0.40.55=0.49
那么套用贝叶斯公式
P ( A ∣ E ) = P ( A ) ∗ P ( E ∣ A ) / P ( E ) = 0.45 ∗ 0.6 / 0.49 = 0.55 P(A|E)=P(A)*P(E|A)/P(E)=0.45*0.6/0.49=0.55 P(AE)=P(A)P(EA)/P(E)=0.450.6/0.49=0.55
男孩子的概率也只是 55%,看起来,男孩子淘气,但是女孩子数量多且扔东西的比例也不低,所以,不能随便冤枉人。

贝叶斯定理的影响因子

回到贝叶斯定理的公式:
P ( H ∣ E ) = P ( H ) ∗ P ( E ∣ H ) / P ( E ) P(H|E)=P(H)*P(E|H)/P(E) P(HE)=P(H)P(EH)/P(E)

P ( E ) = P ( E ∣ H ) ∗ P ( H ) + P ( E ∣ A ) ∗ P ( A ) P(E) = P(E|H)*P(H) + P(E|A)*P(A) P(E)=P(EH)P(H)+P(EA)PA

能够影响最终结果的有 4 项:

  1. P(H)
  2. P(A)
  3. P(E|H)
  4. P(E|A)

先验的重要性

先验如果不是经过严密的统计数据那么就和拍脑袋一样,或者说本身就是拍脑袋,如果证据很少或者是难以发现,最终的结果就很难保证公平。

比如,发生案子的时候,你锁定了一个嫌疑犯,如果没有找到关键证据,你能轻易给定论吗?

证据的重要性

证据和假设正相关,代表标准似然度 > 1,它能够增强假设。

证据和假设负相关,代表标准似然度 < 1,它会减弱假设。

证据和假设毫无关系,代表标准似然度 = 1,它对结果毫无意义。

所以,证据也同样需要严谨对待。

贝叶斯定理的意义

贝叶斯定理应用很广,任何需要预测估计的地方,几乎都可以应用。就我实际接触过的有机器学习和自动驾驶。

贝叶斯也有很现实的生活哲学意义。

大数据时代,你在网络上看到的故事可能不是事实,可能它是假的。一个事实也可能不是数据,因为它可能是孤立的不具代表性,数据可能不是证据,它可能是片面的,只是别人刻意让你看见的。2

你很可能被你的直觉或者表面现象欺骗。

参考


  1. 王丽. 浅析贝叶斯公式及其在概率推理中的应用[J]. 科技创新导报,2010,(24):136 ↩︎

  2. Alex Edmans.What to trust in a post-truth world.https://www.ted.com ↩︎

以上是关于程序员的数学--用贝叶斯定理来推断一个案子的主要内容,如果未能解决你的问题,请参考以下文章

贝叶斯推断

朴素贝叶斯定理

R语言实战应用精讲50篇(二十四)-贝叶斯定理及R语言实现

R语言实战应用精讲50篇(二十四)-贝叶斯定理及R语言实现

朴素贝叶斯算法总结

机器学习朴素贝叶斯