概率与贝叶斯定理

Python 中的贝叶斯数据分析

Michal Oleszak

Machine Learning Engineer

概率论

  • 对不确定性的表述。
  • 介于 0 和 1 之间的数。
    • P = 0   →   不可能
    • P = 1   →   必然
    • P = 0.5   →   五五开

 

  • P(明天下雨) = 0.75   →   明天下雨概率 75%
Python 中的贝叶斯数据分析

概率法则

加法法则

  • A B 的概率(独立事件)
  • OR = 加法
  • 掷骰子得到 2 或 4 的概率

P(2 或 4) = 1/6 + 1/6 = 0.33333... = 33.3%

乘法法则

  • A B 的概率(独立事件)
  • AND = 乘法
  • 掷骰子先出 2 再出 4 的概率

P(2 且 4) = 1/6 * 1/6 = 0.02777... = 2.8%

Python 中的贝叶斯数据分析

条件概率

  • 在另一事件已发生的前提下,某事件发生的概率。
  • P(A | B)

 

  • P(橙色) = 2/3   →   非条件
  • P(蓝色) = 1/3   →   非条件

 

  • P(蓝色 | 橙色) = 1/2   →   条件
  • P(橙色 | 蓝色) = 1   →   条件

盒中三球示意图:两颗橙色,一颗蓝色。

Python 中的贝叶斯数据分析

贝叶斯定理

  • 当已知其他概率时,用于计算条件概率的方法。

 

$$P(A|B) = \frac{P(B|A) * P(A)}{P(B)}$$

Python 中的贝叶斯数据分析

贝叶斯定理

  • 当已知其他概率时,用于计算条件概率的方法。

 

$$P(\text{accident}|\text{slippery}) = \frac{P(\text{slippery}|\text{accident}) * P(\text{accident})}{P(\text{slippery})}$$

road_conditions.head()
     accident   slippery
0       False       True
1        True       True
2       False      False
3       False      False
4       False      False
Python 中的贝叶斯数据分析

贝叶斯定理:实操

 

$$P(\text{accident}|\text{slippery}) = \frac{P(\text{slippery}|\text{accident}) * P(\text{accident})}{P(\text{slippery})}$$

# 事故的非条件(边际)概率
p_accident = road_conditions["accident"].mean()  # 0.0625


# 路面湿滑的非条件(边际)概率 p_slippery = road_conditions["slippery"].mean() # 0.0892
# 在发生事故的条件下路面湿滑的概率 p_slippery_given_accident = road_conditions.loc[road_conditions["accident"]]["slippery"].mean() # 0.7142
# 在路面湿滑的条件下发生事故的概率 p_accident_given_slippery = p_slippery_given_accident * p_accident / p_slippery # 0.5
Python 中的贝叶斯数据分析

Vamos praticar!

Python 中的贝叶斯数据分析

Preparing Video For Download...