贝叶斯算法实例讲解(数据分析入门贝叶斯定理)
贝叶斯定理是什么,有什么用处?可能很多人都听过这个贝叶斯定理,却对它一知半解。事实上,不懂贝叶斯定理不会让我们的生活崩塌,不会让我们的生活一团乱麻,但是一旦掌握了贝叶斯定理,在很多决策场景中,我们将会变得更加明智。
今天我们将通过一个实际生活中的案例,用最通俗的方式帮助大家理解它。后续的话,我会为大家讲解如何用Python在实际案例中应用贝叶斯定理,感兴趣的朋友欢迎关注哦。
小明到底有没有得癌症?这是一个非常经典的案例,令人难以想象的是,很多时候一些医生的误诊竟是因为他们不懂贝叶斯定理!
考虑这样的场景,医生常通过某种血检来辅助判断病人是否罹患某种癌症。但是这种血检返回的结果并不是百分百的精准,当患者的确患病时,血检返回阳性的概率为98%;当患者没有患病时,血检返回阴性的概率为97%。已知有千分之一的人会得这种癌症。
现在小明做了这种血检,并且检测结果显示阳性,那么请问他得病的可能性大,还是没病的可能性大呢?
用直觉来判断,是不是第一反应就是小明大概率得了这种癌症了?
然而事实并非如此,小明得病的概率仅有3.17%!是不是非常难以置信?检验为阳性的时候,小明患病的概率竟然只有3.17%!现在应该很多同学不认可这个结果,那么接下来我们就看一下贝叶斯定理是个什么东西。
条件概率认识贝叶斯定理之前,我们有必要先了解下条件概率以及它的一些性质。
条件概率是指在某些背景约束(或前提条件)下某事件发生的概率,比如令一名学生考上清华大学作为事件A,其概率为P(A),学生是女生作为事件B,其概率为P(B),那么在学生是女生的前提条件下,学生考上清华的概率就是P(A|B)。下面我们分别考虑事件A与事件B之间是否相互独立的情况。
- 事件A与事件B相互独立:
- 如果事件A和时间B是相互独立的,那么P(A)=P(A|B),无论B是否发生,对于事件A的发生没有影响,这时也有P(AB)=P(A)P(B),即事件A、B同时发生的概率是两个事件各自发生概率的乘积。
- 事件A与事件B之间不相互独立:
- 事件A、B同时发生的概率为P(AB),那么P(AB)=P(A|B)P(B)=P(B|A)P(A),也就是说两事件同时发生的概率为其中一个事件发生的概率乘以在该事件发生的前提下另一事件发生的概率。无论事件A、B之间是否相互独立,这个等式都成立,它就是贝叶斯定理的基础。
贝叶斯定理
从式(1)可以得知:
式(2)就是鼎鼎大名的贝叶斯定理了,我们来从另一个角度理解一下它的意义。我们用数据集D替换事件B,用假设H替换事件A,得到:
这就给我们提供了一种方法,可以根据数据集D的变化不断更新假设H发生的概率,这种方式被称作“历史诠释”。
- P(H)可以理解为假设H发生的先验概率;
- P(H|D)则可以理解为假设H发生的后验概率,是在我们获得了更多数据的情况下推断出的更先进的概率;
- 我们每次获得的新知识,也就是后验的数据,都会作为下一次计算的先验数据;
- P(D|H)可以被理解为似然度,也就是在假设H发生的情况下,数据分布刚好是D的概率;
- P(D)则是在任何假设下数据分布刚好为D的概率,我们把它称为标准化常量。
那么我们现在来回头看小明是否得癌症的问题。
等式的前半部分就是贝叶斯定理的公式。而在后边计算P(阳性)的时候,可以看到我们用了两部分相加得到了P(阳性)。这里我们不得不介绍一下全概率公式:
拿我们这个例子来说,P(B)就是P(阳性),然而P(阳性)的数据我们无法直接获取,但是我们知道在患病和无病的条件下血检为阳性的概率,也知道患病和无病的概率,因此把患病情况下血检为阳性的条件概率乘以患病的概率,再加上无病情况下血检为阳性的条件概率乘以无病的概率,就是所有情况下血检为阳性事件发生的概率了,即:
那么最后我们给出完整的计算过程:
你学会了吗?有任何问题都可以在下方留言,我会一一回答!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com