Apriorní přesvědčení

Bayesian Data Analysis in Python

Michal Oleszak

Machine Learning Engineer

Apriorní rozdělení

  • Apriorní rozdělení vyjadřuje, co o parametru víme před pozorováním dat:
    • nic   →   rovnoměrné rozdělení (všechny hodnoty stejně pravděpodobné)
    • staré posteriorní rozdělení   →   lze aktualizovat novými daty

 

  • Jako apriorní rozdělení lze zvolit libovolné pravděpodobnostní rozdělení pro zahrnutí externích informací:
    • odborný odhad
    • obecné znalosti
    • předchozí výzkum
    • subjektivní přesvědčení
Bayesian Data Analysis in Python

Vliv apriorního rozdělení

Dva grafy hustoty přes sebe, jeden pro apriorní a druhý pro posteriorní rozdělení. Apriorní je rovnoměrné, posteriorní má tvar zvonu a je o něco vyšší.

Dva grafy hustoty přes sebe, jeden pro apriorní a druhý pro posteriorní rozdělení. Apriorní je rovnoměrné, posteriorní má tvar zvonu, je o něco vyšší a zkosené doprava.

Dva grafy hustoty přes sebe, jeden pro apriorní a druhý pro posteriorní rozdělení. Apriorní je rovnoměrné, posteriorní má tvar zvonu a je výrazně vyšší.

Dva grafy hustoty přes sebe, jeden pro apriorní a druhý pro posteriorní rozdělení. Apriorní je rovnoměrné, posteriorní má tvar zvonu a je velmi výrazně vyšší.

Bayesian Data Analysis in Python

Apriorní rozdělení

  • Apriorní rozdělení se volí před pozorováním dat.
  • Volba apriorního rozdělení může ovlivnit posteriorní výsledky (zejména při malém množství dat).
  • Aby nedocházelo k tendenčnímu výběru, měla by být volba apriorního rozdělení:
    • jasně uvedena,
    • zdůvodnitelná: opřená o předchozí výzkum, rozumné předpoklady, odborný odhad apod.
Bayesian Data Analysis in Python

Výběr správného apriorního rozdělení

Naše apriorní přesvědčení: orel je méně pravděpodobný

Hustota ve tvaru zvonu, ale zkosená doleva, s vrcholem kolem 0,25.

Některé volby jsou lepší než jiné!

 

Hustota ve tvaru zvonu, zkosená doleva, s vrcholem kolem 0,25, o něco užší než předchozí.

Bayesian Data Analysis in Python

Konjugovaná apriorní rozdělení

  • Některá apriorní rozdělení vynásobená s konkrétními věrohodnostmi dávají známá posteriorní rozdělení.
  • Nazývají se konjugovaná apriorní rozdělení.
  • V případě hodu mincí:
    • pokud zvolíme apriorní Beta(a, b),
    • posteriorní rozdělení je Beta(#orlů + a, #hodů - #orlů + b)
  • Z posteriorního rozdělení lze vzorkovat pomocí numpy.
  • get_heads_prob() z kapitoly 1:
    def get_heads_prob(tosses):
      num_heads = np.sum(tosses)
      # prior: Beta(1,1)
      return np.random.beta(num_heads + 1, len(tosses) - num_heads + 1, 1000)
    
Bayesian Data Analysis in Python

Dva způsoby získání posteriorního rozdělení

Simulace

  • Je-li posteriorní rozdělení známo, lze z něj vzorkovat pomocí numpy:
    draws = np.random.beta(2, 4, 1000)
    
  • Výsledek: pole 1000 posteriorních vzorků:
    array([0.05941031, ..., 0.70015975])
    
  • Vizualizace pomocí
    sns.kdeplot(draws)
    

Výpočet

  • Není-li posteriorní rozdělení známo, lze jej vypočítat pomocí mřížkové aproximace.
  • Výsledek: posteriorní pravděpodobnost pro každý prvek mřížky:
           head_prob  posterior_prob
    0           0.00        0.009901
    1           0.01        0.003624
               ...           ...
    10199       0.99        0.003624
    10200       1.00        0.009901
    
  • Vizualizace pomocí
    sns.lineplot(df["head_prob"], df["posterior_prob"])
    
Bayesian Data Analysis in Python

Pojďme si procvičit práci s apriorními rozděleními!

Bayesian Data Analysis in Python

Preparing Video For Download...