贝叶斯定理在统计科学中处于非常核心地位,它是机器学习和人工智能的重要工具,甚至可以拿来寻宝,在上个世纪80年代,一只寻宝团队利用贝叶斯公式在广袤的大洋中找到了一艘一个半世纪前的沉船,据说,光上面的黄金折合到现在就有7亿美金,看来,学数学不但可以帮助你脱发,还能脱贫呢,不但如此,贝叶斯公式在我们日常生活中也有巨大作用,侦探可以用它来查案,普通人也可以用它来从众多的项目中做出最佳选择。
贝叶斯公式的形式化表达为:
公式中,事件Bi的概率为P(Bi),事件Bi已发生条件下事件A的概率为P(A│Bi),事件A发生条件下事件Bi的概率为P(Bi│A),P(Bi)是先验概率,P(Bi|A)是后验概率。
下面通过一个例子,以通俗易懂的形式说明,贝叶斯公式到底说了什么,反映的是现实生活中怎样的道理。
想象这样一个样本,它由从事农民和教师两种职业的人构成,样本总数210人,其中,农民200人,老师10人。根据每个人的特点, 两个职业的人群中,分为好脾气的人和脾气差的人,其中好脾气的农民有20人,好脾气的老师有4人,之所以这样设定是由于,按照常理来讲,职业是老师的人群中,遇到好脾气的概率应该会比在职业是农民的人群中,遇到好脾气的概率要大一些。
样本图形化表示出来是这个样子的:
此时,我们的样本数据总结如下:
- 农民200人
- 老师10人
- 好脾气的农民20人
- 好脾气的老师4人
- 总共210人
- 样本比例: 老师/农民=1/20
- 概率分布
先验概率:
后验概率:
依据的公式:
当知道了某个人是好脾气的人之后我们不得不对之前的评估进行修正,有可能向大的方向修正,也有可能向小的地方修正。
比如,由于老师人群中好脾气的人占比比农民人群中好脾气的人群占比大,所以当知道某人是好脾气的人之后,我们理所当然的认为,修正后的概率是老师的概率会增加,修正后的概率是农民的概率会降低。
看到好脾气的证据后,大大提高了是老师的概率,以上面的例子为例,在毫不知情的情况下,老师占样本的比例是10/210,而在获知这个人脾气不错之后,得到是老师的概率是4/24,所以,总共比例增加为(4/24) * (210/10) = 84/24=7/2=3.5倍, 而农民的先验概率是20/21,后验概率是20/24,概率降低了。
贝叶斯公式实际上阐述了这么一件事情:
新信息出现后的事件概率=事件概率*新信息带来的调整
套用到上面的例子中,3.5就是得知对方是好脾气的人之后,对对方是老师的概率带来的调整倍率。
贝叶斯公式引出一个很有意思的讨论,它和一种错误的直觉有关,可以简单描述如下,如果有人问你,一个温柔的人,它是老师的概率和农民的概率谁大谁小,如果不细加考虑,或者纯粹处于直觉,可能大部分人的答案是老师的概率更大一些,毕竟,相对于粗犷的农民来讲,老师的表现更加温柔,平易近人一些,更加符合老师的形象。这种直觉就是非理性的,在做这种判断的时候,他们并没有将农民和老师的比例考虑进去,而仅仅考虑老师表现更温柔的概率更大一些,可能比农民大很多,而忽略了农民的人口基数远远大于老师,所以在街头偶遇农民的概率更大。理性并不是说知道事实,而是说在判断的时候,知道和哪些因素有关。用专业的说法表示,就是当新的证据出现的时候,概率空间被限制住了,而这种限制对不同的组成部分是不一样的,所以会导致不同的因素做出不同的调整,有些会向变大的方向调整,有些会向减小的方向去调整。
当然,问题答案还取决于回到这个问题的人,如果是学校的工作人员,整天面对的都是老师和学生,一年没见过几次农民,那么即便考虑到理性,他的答案仍然是老师的概率大。虽然结论是错误的,错误的结论源于他的先验概率构成就是错误的。
实践中,贝叶斯定理价值非常的大,我们以一个例子来说明它给我们分析问题带来的巨大价值。
问题:假设有两个教书各有100个学生,A教师有60个男生,40个女生,B教师有30个男生,70个女生,假设随即选择其中一个教室,从里面叫出一个人记录性别后在返回原来的教师,那么针对某个序列,计算出它属于A教室的概率。(我的理解,出题人这里是不是要求如果第一个叫了某个班的学生,后面就一直叫这个班的学生)
刚开始选择,A,B两个教师的先验概率都是%50,所以,P(A)=0.5,P(B)=1-P(A),按贝叶斯公式的函数计算出结果,编写程序:
#coding:utf-8
def bayes(pisroom1, proom1, proom2):
return (pisroom1*proom1)/((pisroom1*proom1)+(1-pisroom1)*proom2)
def sexproblem():
pisroom1=0.5
for i in range(1, 8):
pisroom1=bayes(pisroom1,0.6,0.3)
print("%d boys come out,i guess there about %f probability blongs to room1"%(i, pisroom1))
for i in range(1, 6):
pisroom1=bayes(pisroom1, 0.4,0.7)
print("first goes out 7 boys,and then goes %d girls, the probablity of classroom 1 is %f"%(i, pisroom1))
sexproblem()
运行结果:
为了验证计算的正确性,我们可以反向推理,计算属于B教室的概率,如果两边的对应概率相加为1,则从侧面印证了计算方法的正确性
#coding:utf-8
def bayes(pisroom2, proom2, proom1):
return (pisroom2*proom2)/((pisroom2*proom2)+(1-pisroom2)*proom1)
def sexproblem():
pisroom2=0.5
for i in range(1, 8):
pisroom2=bayes(pisroom2,0.3,0.6)
print("%d boys come out,i guess there about %f probability blongs to room1"%(i, pisroom2))
for i in range(1, 6):
pisroom2=bayes(pisroom2, 0.7,0.4)
print("first goes out 7 boys,and then goes %d girls, the probablity of classroom 1 is %f"%(i, pisroom2))
sexproblem()
可以看到,每个相同事件的概率和都为1,所以,程序应该没有什么问题。
以上就是贝叶斯公式的简单理解!
参考:
【官方双语】贝叶斯定理,使概率论直觉化_哔哩哔哩_bilibili这也许是概率论中最重要的公式了。贝叶斯定理的简洁证明:https://www.bilibili.com/video/av84799859/翻译:Jerry黄豆 校对:蛋卷 时间轴:愚者Bayes theorem, and making probability intuitivehttps://youtu.be/HZGCoVF3YvM
总结
人们会说,懂了很多的道理,却仍然过不好这一生.其实这句话体现了贝叶斯的思想,我们用别人的先验知识,指导不了自己的实际情况,别人的模型,不一定适合自己。