在实际问题上使用贝叶斯推理
贝叶斯推理的基本思想是通过更多数据变得“更少错误”。这个过程很简单:我们有一个初步的信念,称为先验,我们在获得更多信息时会更新。虽然我们不认为它是贝叶斯推理,但我们一直使用这种技术。例如,我们最初可能认为我们有50%的机会在季度末获得促销。如果我们收到经理的积极反馈,我们会向上调整我们的估算,相反,如果我们弄乱咖啡机,我们可能会降低概率。在我们不断收集信息时,我们会优化我们的估算,以便更接近“真实”的答案。
我们的直觉行为在称为贝叶斯规则的简单而强大的等式中形式化:
我们将左侧称为后验,作为事件A的条件概率给定事件B.在右侧,P(A)
我们先前或事件A概率的初始信念P(B|A)
是可能性(也是条件概率)我们从数据中得出,并且P(B)
是一个归一化常数,使概率分布总和为1.统计语言中贝叶斯规则的一般形式是后验概率等于先验的似然乘以除归一化常数。这个简短的等式导致贝叶斯推理的整个领域,这是推理世界的有效方法。
虽然A和B可能是很好的占位符,但它们对于让我们了解如何使用这个概念并没有多大帮助。为此,我们可以将贝叶斯规则应用于现实世界数据的问题。
我在自己的生活中一直在探索的一个问题是睡眠模式。我有超过2个月的Garmin Vivosmart手表数据,显示我何时入睡和醒来。在上一篇文章中,我发现了使用马尔可夫链蒙特卡罗(MCMC)方法在给定时间睡着的概率。最终模型显示最可能的睡眠分布随时间的变化(MCMC是近似方法)是下面。
这是我睡着的概率,只考虑时间。如果我们知道时间并有其他证据怎么办?怎么知道我的卧室灯亮了会改变我睡着的可能性?这是我们使用贝叶斯规则来更新我们的估计的地方。在特定时间,如果我们知道有关卧室灯光的信息,我们可以使用上面分布的概率作为先验,然后应用贝叶斯方程:
左侧是后部,有条件的睡眠概率给出卧室灯的状态(开启或关闭)。P(sleep)
如果我们没有其他信息,在给定时间的概率将作为我们之前的,或我们使用的估计。例如,在晚上10点,我睡着的先前概率是27.34%。如果我们确实有更多的信息,我们可以使用可能性来更新它P(bedroom light |sleep)
,这是从观察到的数据中得出的。根据我的习惯,我知道卧室灯亮的可能性,因为我睡着了约1%。那是:
在我睡着的情况下,我的灯关闭的概率是1–0.01 = 0.99
(这里我使用减号( - )表示相反的情况。)这是因为条件概率分布必须总和为1.如果我们知道我睡着了,要么我的卧室灯必须打开或必须关闭!
等式的最后一部分是归一化常数P(light)
。这表示我的灯光的总概率。我的灯亮了两个条件:我睡着了或者我醒了。因此,如果我们知道先前的睡眠概率,我们可以将归一化常数计算为:
我的灯光开启的概率总是考虑到我睡着的机会和我的灯亮,以及我醒来的机会和我的灯亮。(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中使用它们。代码输出以下答案:
时间:09:45:00 PM灯关闭。
先前睡眠概率:12.06%
更新睡眠概率:40.44%
我们再次看到额外的信息改变了我们的估计。现在,如果我姐姐想在晚上9:45给我打电话,她知道我的灯亮了,她可以查一下这个等式来确定我是否会接听(假设我醒来的时候总是拿起来)!谁说你不能在日常生活中使用统计数据?
查看数值结果很有帮助,但可视化对于使点更清晰也很有用。如果只是通过查看方程式而不会遇到问题,我总是尝试将图表合并来传达想法。在这里,我们可以使用额外数据可视化睡眠的先验和条件概率分布。
当我的灯亮起时,曲线向右移动,表明我在给定时间睡着的概率较低。同样,如果我的灯关闭,曲线会向左移动。从概念上理解统计概念可能很困难,但这个例子很好地说明了我们使用贝叶斯规则的原因。如果我们想减少对世界的错误,那么额外的信息应该改变我们的信念,而贝叶斯推理使用系统方法更新我们的估计。
使用更多证据!
为什么要停在卧室的灯光下?我们可以在模型中使用尽可能多的信息,并且它将继续变得更加精确(只要数据告诉我们有关情况的有用信息)。例如,如果我知道我的手机充电的可能性,因为我睡着了95%,我们可以将这些知识融入模型中。
在这里,我们将假设我的手机正在充电的概率是有条件地独立于我的灯开启的概率,给出了我是否正在睡觉的信息(独立性是一个更先进的概念,但它允许我们简化许多问题)。使用额外信息的贝叶斯方程表示:
这可能看起来令人生畏,但使用一些Python代码,我们可以为我们做一个函数来进行计算。我们随时都可以进食,无论我的灯是否打开和手机正在充电的任何组合,该功能都会返回我睡着的更新概率。
我会跳过数学(我让我的电脑无论如何都要这样做)并显示结果:
时间是11:00:00 PM灯亮是电话不充电。
睡眠的先验概率:95.52%
更新的睡眠概率:1.74%
在晚上11点,没有其他信息,我们几乎可以肯定地猜到我睡着了。然而,一旦我们获得了我的灯亮并且电话没有充电的附加信息,我们得出的结论是,我只有一个微不足道的机会我睡着了。这是另一个问题:
时间是10:15:00 PM灯关闭电话正在充电。
睡眠的先前概率:50.79%
更新的睡眠概率:95.10%
概率根据具体情况而变低或变高。为了证明这一点,我们可以看一下光和电话证据的四种配置以及它们如何改变概率分布:
该图中有大量信息,但关键思想是概率曲线根据证据而变化。随着我们获得更多数据,我们可以进一步完善我们的估算。
结论
当仅使用字母或弥补情况呈现抽象方程时,贝叶斯规则和其他统计概念可能难以理解。我经历了很多课程,其中贝叶斯规则是用不是很有用的例子来展示的,比如硬币翻转或从骨灰盒中画出彩球,但直到这个项目,我终于理解了贝叶斯推理的适用性。如果您正在努力解决这个问题,请找出可以应用它的情况,或者查看其他人已经这样做的情况!
当我们将概念转化为问题时,实际学习就来了 我们不仅可以通过这种方式学习新技能,还可以做一些非常酷的项目!数据科学的成功与不断学习,为您的技能组合添加新技术,以及为不同任务找出最佳方法。在这里,我们展示了贝叶斯推理如何让我们更新我们的信念以解释新的证据,以便更好地模拟现实。当我们收集更多证据时,我们不断需要调整我们的预测,贝叶斯方程为我们提供了适当的框架。
原文:https://towardsdatascience.com/bayes-rule-applied-75965e4482ff