Probabilità e teorema di Bayes

Analisi dei dati bayesiana in Python

Michal Oleszak

Machine Learning Engineer

Teoria della probabilità

  • Dichiarazione di incertezza.
  • Un numero tra 0 e 1.
    • P = 0   →   impossibile
    • P = 1   →   certo
    • P = 0.5   →   50/50

 

  • P(pioggia domani) = 0.75   →   75% di probabilità di pioggia
Analisi dei dati bayesiana in Python

Regole della probabilità

Regola della somma

  • Probabilità di A oppure B (eventi indipendenti)
  • OPPURE = addizione
  • Probabilità di ottenere 2 o 4 con un dado

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

Regola del prodotto

  • Probabilità di A e B (eventi indipendenti)
  • E = moltiplicazione
  • Probabilità di ottenere 2 e poi 4 con un dado

P(2 e 4) = 1/6 * 1/6 = 0,02777... = 2,8%

Analisi dei dati bayesiana in Python

Probabilità condizionata

  • Probabilità che si verifichi un evento, dato che un altro evento è avvenuto.
  • P(A | B)

 

  • P(arancione) = 2/3   →   incondizionata
  • P(blu) = 1/3   →   incondizionata

 

  • P(blu | arancione) = 1/2   →   condizionata
  • P(arancione | blu) = 1   →   condizionata

Schema con tre palline in una scatola. Due arancioni, una blu.

Analisi dei dati bayesiana in Python

Teorema di Bayes

  • Un modo per calcolare la probabilità condizionata conoscendo altre probabilità.

 

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

Analisi dei dati bayesiana in Python

Teorema di Bayes

  • Un modo per calcolare la probabilità condizionata conoscendo altre probabilità.

 

$$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
Analisi dei dati bayesiana in Python

Teorema di Bayes in pratica

 

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

# Probabilità incondizionata di un incidente
p_accident = road_conditions["accident"].mean()  # 0.0625


# Probabilità incondizionata che la strada sia scivolosa p_slippery = road_conditions["slippery"].mean() # 0.0892
# Probabilità che la strada sia scivolosa dato che c'è un incidente p_slippery_given_accident = road_conditions.loc[road_conditions["accident"]]["slippery"].mean() # 0.7142
# Probabilità di un incidente dato che la strada è scivolosa p_accident_given_slippery = p_slippery_given_accident * p_accident / p_slippery # 0.5
Analisi dei dati bayesiana in Python

Esercitiamoci!

Analisi dei dati bayesiana in Python

Preparing Video For Download...