Вероятность и теорема Байеса

Байесовский анализ данных на Python

Michal Oleszak

Machine Learning Engineer

Теория вероятностей

  • Способ выразить неопределённость.
  • Число от 0 до 1.
    • P = 0   →   невозможно
    • P = 1   →   достоверно
    • P = 0,5   →   равные шансы

 

  • P(дождь завтра) = 0,75   →   вероятность дождя завтра — 75%
Байесовский анализ данных на Python

Правила вероятности

Правило суммы

  • Вероятность A или B (независимые события)
  • ИЛИ = сложение
  • Вероятность выбросить 2 или 4 на кубике

P(2 или 4) = 1/6 + 1/6 = 0,33333... = 33,3%

Правило произведения

  • Вероятность A и B (независимые события)
  • И = умножение
  • Вероятность выбросить сначала 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})}$$

# Unconditional probability of an accident
p_accident = road_conditions["accident"].mean()  # 0.0625


# Unconditional probability of the road being slippery p_slippery = road_conditions["slippery"].mean() # 0.0892
# Probability of the road being slippery given there is an accident p_slippery_given_accident = road_conditions.loc[road_conditions["accident"]]["slippery"].mean() # 0.7142
# Probability of an accident given the road is slippery p_accident_given_slippery = p_slippery_given_accident * p_accident / p_slippery # 0.5
Байесовский анализ данных на Python

Давайте потренируемся!

Байесовский анализ данных на Python

Preparing Video For Download...