2022年 11月 5日

贝叶斯定理及其python求解

文章目录

  • 1. 什么是著名的贝叶斯定理:
  • **2.在实际问题中利用贝叶斯定理求解后验概率的一般步骤:**
  • 3. 典型例子:曲奇饼问题

1. 什么是著名的贝叶斯定理:

在这里插入图片描述
就是这么一个不起眼的公式,却能解决通过分治的方法解决很多复杂的概率学问题,所有贝叶斯统计的方法都基于贝叶斯定理.

  1. P(A|B) 是后验概率,即在得到新数据前某一假设的概率,其一般也是需要我们求解的概率

  2. P(A) 是先验概率,即在看到新数据后,我们要计算的该假设的概率

  3. P(B|A) 是似然度,即在该假设下得到这一数据的概率

  4. P(B) 是在任何假设下得到这一数据的概率,成为标准化常量,除它的过程也叫做归一化或标准

    解释:

    一般来说,先验概率是偏主观性的,一般是对于每个假设的概率的平均分配,比如说我们认为这个问题有三个假设,那么每个假设的先验概率就是1/3.

    对于先验概率和后验概率,我们可以简单地理解为先验概率是根据经验的先决判断,后验概率是知道结果后再对原因的求解。

    对于标准化常量,我们常常需要定义假设集合,假设集一般需要满足如下两个条件:

    1. 互斥的:集合中,至多一个假设为真

    2. 完备的:集合中,至少一个假设必为真,且集合包含了所有的假设

      一般使用suite这个词来表示具备上述属性的假设集

    2.在实际问题中利用贝叶斯定理求解后验概率的一般步骤:

1 设计假设集及一个包含假设和对应的概率的映射A

2 估计先验概率
3. 计算似然度,并与相应的先验概率相乘
4. 对目前所有的乘积集合进行归一化
5. 得到一个包含每个假设的后验概率分布A

3. 典型例子:曲奇饼问题

题目简介:假设有两碗曲奇饼,碗1包含30个香草曲奇饼和10个巧克力曲奇饼,碗2有上述两个饼干各20个。现在假设你再不看的情况下随机地挑了一个碗拿一块饼,得到了一块香草曲奇饼,求这块饼来自碗1的概率.

python求解:

首先我们定义一个pmf为一个分布来映射每个假设和对应的概率

对于曲奇饼问题,显而易见有两个假设,设假设为B1和B2,在python中可以使用字符串来表示它们:

pmf=pmf()
pmf.set("Bowl1",0.5)
pmf.set("Bowl2",0.5)
  • 1
  • 2
  • 3

这一分布现在包含了对每个假设的先验概率,称之为先验分布.

很明显,我们需要更新基于新数据(也就是拿到了一块香草曲奇饼)后的分布,我们将先验分别乘以对应的似然度

很明显,从碗1拿到香草曲奇饼的可能性是0.75,碗2的可能性是0.5.

pmf.Mult("Bowl1",0.75)
pmf.Mult("Bowl2",0.5)
  • 1
  • 2

Mult函数将给定假设的先验概率乘以已知的似然度。

然后对分布进行归一化(注意,能够进行归一化的前提是所有假设互斥且构成了完全集合–也就是完全包含了所有可能的假设,归一化的作用就是让所有假设发生的概率相加等于1

pmf.Normalize()
  • 1

进行归一化后的结果是一个包含每个假设的后验概率分布,也就是后验分布.

现在,你可以从分布中得到假设1的概率:

print pmf.prob("Bowl 1")
#结果是0.6
  • 1
  • 2

这个pmf及曲奇饼例子的代码在http://thinkbayes.com/cookie.py 这个网址上开源,感兴趣的可以去下载了看看