Ймовірність і теорема Байєса

Баєсівський аналіз даних у Python

Michal Oleszak

Machine Learning Engineer

Теорія ймовірностей

  • Формулювання невизначеності.
  • Число між 0 і 1.
    • P = 0   →   неможливо
    • P = 1   →   напевне
    • P = 0.5   →   шанс 50/50

 

  • P(rain tomorrow) = 0.75   →   75% ймовірність дощу завтра
Баєсівський аналіз даних у Python

Правила ймовірності

Правило суми

  • Ймовірність A або B (незалежні події)
  • АБО = додавання
  • Ймовірність викинути 2 або 4 гральною кісткою

P(2 or 4) = 1/6 + 1/6 = 0.33333... = 33,3%

Правило добутку

  • Ймовірність A і B (незалежні події)
  • І = множення
  • Ймовірність викинути 2, а потім 4 гральною кісткою

P(2 and 4) = 1/6 * 1/6 = 0.02777... = 2,8%

Баєсівський аналіз даних у Python

Умовна ймовірність

  • Ймовірність деякої події за умови, що сталася інша.
  • P(A | B)

 

  • P(orange) = 2/3   →   безумовна
  • P(blue) = 1/3   →   безумовна

 

  • P(blue | orange) = 1/2   →   умовна
  • P(orange | blue) = 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

Давайте потренуємось!

Баєсівський аналіз даних у Python

Preparing Video For Download...