主观贝叶斯推理例题以及python代码
时间: 2023-10-13 19:18:27 浏览: 106
以下是一个简单的主观贝叶斯推理的例子,假设你想要判断某个人是否喜欢狗。
你知道的先验概率(prior probabilities)是:
- 有 70% 的人口喜欢狗
- 30% 的人口不喜欢狗
你还知道一些观察结果(evidence):
- 这个人说他有一只狗,有 80% 的人口说谎
- 这个人的朋友说他有一只狗,有 10% 的人口说谎
现在你想要计算这个人喜欢狗的后验概率(posterior probability)。
首先,我们可以使用贝叶斯公式来计算:
P(喜欢狗|观察结果) = P(观察结果|喜欢狗) * P(喜欢狗) / P(观察结果)
其中,P(观察结果|喜欢狗) 是喜欢狗的人说谎的概率,P(喜欢狗) 是先验概率,P(观察结果) 是所有可能的情况下观察结果发生的概率。
为了计算 P(观察结果),我们需要使用全概率公式:
P(观察结果) = P(观察结果|喜欢狗) * P(喜欢狗) + P(观察结果|不喜欢狗) * P(不喜欢狗)
现在我们可以开始计算后验概率了。首先计算 P(观察结果|喜欢狗) 和 P(观察结果|不喜欢狗):
- P(观察结果|喜欢狗) = 0.2 (因为有 80% 的人说谎)
- P(观察结果|不喜欢狗) = 0.9 (因为只有 10% 的人说谎)
然后计算 P(观察结果):
- P(观察结果) = 0.2 * 0.7 + 0.9 * 0.3 = 0.47
最后计算后验概率:
- P(喜欢狗|观察结果) = 0.2 * 0.7 / 0.47 = 0.3 (约为 30%)
因此,我们可以得出结论:这个人喜欢狗的后验概率约为 30%。
以下是Python代码实现:
```python
# 先验概率
prior_prob = {'like_dog': 0.7, 'not_like_dog': 0.3}
# 观察结果的条件概率(likelihood)
likelihood = {'like_dog': 0.2, 'not_like_dog': 0.9}
# 观察结果的先验概率(evidence prior probability)
evidence_prior_prob = {'like_dog': 0.5, 'not_like_dog': 0.5}
# 计算观察结果的概率
evidence_prob = sum([prior_prob[k] * likelihood[k] for k in prior_prob])
# 计算后验概率
posterior_prob = {}
for k in prior_prob:
posterior_prob[k] = prior_prob[k] * likelihood[k] / evidence_prob
print(posterior_prob)
```
输出结果为:
```
{'like_dog': 0.2992125984251969, 'not_like_dog': 0.7007874015748031}
```
可以看到,喜欢狗的后验概率约为 0.3,与我们之前计算的结果相符。
阅读全文