贝叶斯推断来修正咱们的信念

贝叶斯推断的基本思想是经过更多数据,从而"犯少一点错误"。推断过程很直接:咱们首先有一个初始信念,被称为先验,当咱们得到额外的信息后能够对这个信念进行修正更新。虽然咱们并不知道这个过程就是贝叶斯推断,可是咱们一直都在使用这个技巧。git


举个例子,咱们可能一开始认为咱们有百分之五十的可能性会在本季度末升职。若是咱们从经理那获得正面的反馈,那么咱们就向上调整升职可能性,而相反地,若是咱们把咖啡机弄得一团糟,那么咱们可能就得下降一下几率了。随着咱们不断地得到更多的信息,咱们能够不断地修正咱们的估计以逼近“正确”的答案。以上咱们直觉的行为能够用如下简单却强大的公式来形式化描述,该公式被称为贝叶斯法则:github




等号左边那项被称为后验,咱们读做给定事件B发生后事件A发生的条件几率。在等号右边,P(A)被称为先验,或者被叫做咱们对事件A发生的几率的初始信念,P(B|A)被称为似然(也是一个条件几率),这一项是可从数据中获得的,P(B)则是一个归一化常数使得几率分布之和为1。用统计的语言来描述贝叶斯法则的通常形式是后验几率等于似然乘以先验除以归一化常数。这个简短的等式引出了贝叶斯推断的整个领域,也给人们带来了对世界进行推理的有效方法。api


虽然等式中的A和B是很是好的占位符,可是它们并不能很好地帮助咱们了解如何使用这个概念。为了达到这个目的,能够应用贝叶斯法则去解决一个真实世界的问题。app


案例


在我本身的生活中,我一直在研究的一个问题就是睡眠模式。我从本身携带的Garmin Vivosmart智能手表中收集了超过两个月的数据,这些数据显示了我什么时候入睡和起床。在上一篇文章中,我用马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)方法计算出了在给定的时间我睡着了的几率。最终模型显示,睡眠的最有可能的分布是一个关于时间的函数(MCMC是一种近似方法),以下图所示。函数



这是只考虑时间因素的状况下我睡着了的几率。要是咱们知道时间的同时还知道其余的证据又会怎样?若是知道个人卧室灯亮着,这会如何改变我睡着了的几率?这就是咱们能够利用贝叶斯法则来更新咱们的估计的地方了。对于特定时间,若是咱们知道个人卧室灯的信息,那么咱们能够利用上面的几率分布做为咱们的先验,而后应用贝叶斯公式:ui



等号左边是后验,即给定个人卧室灯的状态(开或关)的状况下我睡着了的条件几率。要是咱们没有其余额外的信息能够提供的话,那么在给定时间的睡眠几率将做为咱们的先验,P(sleep),或者说做为咱们的估计。例如,在晚上10:00,我睡着的先验几率是27.34%。若是咱们真的有更多信息,那么咱们就能够利用似然来更新这一律率,P(bedroom light |sleep),似然能够从观测数据中获得。根据个人习惯,我知道在我睡着的状况下个人卧室灯亮着的几率是1%。即:spa




在我睡着的状况下个人灯关掉的几率是1–0.01 = 0.99(这里我用了减号(-)来表示相反的状况)。这是由于条件几率分布之和为1。若是咱们知道我睡着了,那么个人卧室灯确定处于开着或者关着两种状况之一!.net


等式的最后一项是归一化常数P(light)。这是个人灯开着的全几率。个人灯开着存在两种状况:我睡着了或者我醒着。所以,若是咱们知道我睡着了的先验几率,咱们能够这样计算归一化常数:blog



个人灯开着的全几率考虑了两种可能,我睡着了且个人灯开着,以及我醒着且个人灯开着。(P(-sleep) = 1 —  P(sleep) 是我醒着的几率)事件


我醒着的状况下个人灯开着的几率,P(light | — sleep),也是从观测数据中决定的。在个人例子中,我知道若是我醒着,个人卧室灯大概有80%的几率是开着的(这也意味着若是我醒着的话,有20%的可能个人灯是关着的)。


利用个人灯开着的全几率,贝叶斯公式可写成:



这个公式展现了在个人灯开着的状况下我睡着了的几率。若是个人灯灭了,那么咱们能够把公式中的P(light|...所有换成P(-light|...


只有文字的公式已经够多了,下面让咱们看看怎么利用数字来使用这些公式!


根据公式,咱们来一步一步地计算在晚上10:30,咱们知道个人卧室灯亮着的状况下,我睡着了的几率是多少。首先,咱们根据时间来计算我睡着的先验几率,获得结果是73.90%。这个先验给咱们的估计提供了一个很好的起点,可是咱们能够经过加入关于个人卧室灯的信息来改善这个估计。既然知道个人卧室灯亮着,咱们能够把相关的数字填到贝叶斯公式中去:



卧室灯亮着这一知识很大程度上改变了咱们对我睡着了的几率的估计,从70%变成了3.42%。这一变化展现了贝叶斯法则的威力:经过引入更多信息咱们能够更新咱们的最初估计。虽然咱们平时可能根据直觉也会这么作,可是利用正式的公式来思考这一过程可让咱们用一种严谨的方式来更新咱们的信念。


让咱们尝试另外一个例子。假设如今是晚上9:45,且个人卧室灯灭了怎么办?从先验几率是0.1206入手,试试把这个例子解出来。


我不是每次都进行手工推断,而是写了一些Python代码来进行以上的计算,你能够在这个Jupyter Notebook里把玩这些代码。


Jupyter Notebook:https://github.com/WillKoehrsen/ai-projects/blob/master/bayesian_inference/bayes_rule_applied.ipynb


代码输出了如下答案:



 

Time: 09:45:00 PM     Light is OFF.
The prior probability of sleep:    12.06%
The updated probability of sleep:  40.44%


咱们再一次发现额外信息改变了咱们的估计。如今,若是个人妹妹打算在晚上9:45打电话给我,并且她以某种方法知道个人卧室灯亮着,那么她就能够参照这条等式来判断我是否会接电话了(假设我醒着的时候我总会接电话)!谁说你不能在平常生活中使用统计学的?


看到数值结果颇有帮助,可是数据可视化能够更加清晰地说明问题。在与别人交流想法时,要是他们不能直接经过方程来理解,那么我老是试着引入图像来进行解释。下面,咱们能够利用额外的数据来对我睡着了的先验和条件几率分布进行可视化。




当个人卧室灯亮着时,曲线向右进行了移动,意味着在某一特定的时间点我睡着的几率很低。类似地,若是个人灯灭了,曲线向左进行了移动。想从概念上理解一个统计学概念很困难,可是这个插图正好说明了咱们为何要使用贝叶斯法则。若是咱们想在这个世界犯少一点错误,那么额外的信息应该改变咱们的信念,而贝叶斯推断正是利用一个系统的方法来更新咱们的估计。


利用更多的证据


为何要在个人卧室灯这里就止步不前呢?咱们能够在模型中使用尽量多的信息,这个模型也会继续变得更加的精确(只要数据告诉咱们相关状况的有用信息)。举个例子,若是我知道在我睡着的状况下,个人手机在充电的似然是95%,那么咱们就能够把这个知识加入到咱们的模型中。


在这里,咱们假设,在给定我是否睡着的信息的状况下,个人手机正在充电的几率条件独立(https://en.wikipedia.org/wiki/Conditional_independence)于个人卧室灯亮着的几率(独立性是一个稍微高级点的概念,可是它可让咱们简化许多问题)。利用额外信息的贝叶斯公式以下表示:



这看上去可能有点吓人,可是利用一点Python代码,咱们能够写一个函数来为咱们作这些计算。咱们输入任意时间,以及灯的开关状态和手机状态这两种状态信息的任意组合,而后这个函数就能够返回更新过的我睡着的几率。


我将跳过数学(我让个人电脑帮我计算)并展现结果:

 

Time is 11:00:00 PM     Light is ON     Phone IS NOT charging.

The prior probability of sleep:    95.52%
The updated probability of sleep:  1.74%


在晚上11点,没有额外信息的状况下,咱们几乎能够确定我睡着了。然而,一旦咱们有了额外信息:个人灯亮着,手机没有在充电,咱们就能够判断我睡着的可能性很低。下面是另外一组输入获得的输出结果:

 

Time is 10:15:00 PM     Light is OFF    Phone IS charging.

The prior probability of sleep:    50.79%
The updated probability of sleep:  95.10%


根据具体的状况,几率会变高或变低。为了证实这一点,咱们能够观察灯和手机状态的四种不一样组合,以及这些组合是如何改变几率分布的:




这幅图包含了许多信息,可是关键点是几率曲线随着证据的不一样而发生改变。咱们得到更多数据的同时,也能够更好的修正咱们的估计。


总结


贝叶斯法则和其余统计概念很难经过只用到字母的抽象公式、或者一些虚构的情景来理解。若是你理解一个概念有困难,那么去找出一个你能够应用它的场景,或者看看别人成功应用它的例子!

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------