Markov Chain Monte Carlo a přizpůsobení modelu

Bayesian Data Analysis in Python

Michal Oleszak

Machine Learning Engineer

Bayesovská analýza dat v praxi

  • Mřížková aproximace: nevhodná při mnoha parametrech
  • Vzorkování ze známého posterioru: vyžaduje konjugované priory
  • Markov Chain Monte Carlo (MCMC): vzorkování z neznámého posterioru!
Bayesian Data Analysis in Python

Monte Carlo

  • Aproximace veličiny generováním náhodných čísel
  • Ze vzorce: $\pi r^2 \simeq 78.5$

Kruh s poloměrem 5.

Bayesian Data Analysis in Python

Monte Carlo

  • Aproximace veličiny generováním náhodných čísel
  • Ze vzorce: $\pi r^2 \simeq 78.5$
  • Nakreslete čtverec 10×10 kolem kruhu.

Kruh s poloměrem 5 s vyznačeným čtvercem.

Bayesian Data Analysis in Python

Monte Carlo

  • Aproximace veličiny generováním náhodných čísel
  • Ze vzorce: $\pi r^2 \simeq 78.5$
  • Nakreslete čtverec 10×10 kolem kruhu.
  • Vyberte 25 náhodných bodů ve čtverci.
  • Kolik jich leží uvnitř kruhu? $19/25=76\%$
  • Aproximace plochy kruhu: 76 % × 100 = 76

Kruh s poloměrem 5 s vyznačeným čtvercem a 25 náhodně rozmístěnými body uvnitř čtverce.

Bayesian Data Analysis in Python

Markovovy řetězce

  • Modeluje posloupnost stavů, mezi nimiž se přechází s danými pravděpodobnostmi.
Bayesian Data Analysis in Python

Markovovy řetězce

  • Modeluje posloupnost stavů, mezi nimiž se přechází s danými pravděpodobnostmi.

Co bude medvěd dělat dál:

lov jídlo spánek
lov 0.1 0.8 0.1
jídlo 0.05 0.4 0.55
spánek 0.8 0.15 0.05
  • Po mnoha časových krocích se přechodové pravděpodobnosti ustálí bez ohledu na počáteční stav.
Bayesian Data Analysis in Python

Markovovy řetězce

  • Modeluje posloupnost stavů, mezi nimiž se přechází s danými pravděpodobnostmi.

Co bude medvěd dělat dál:

lov jídlo spánek
lov 0.1 0.8 0.1
jídlo 0.05 0.4 0.55
spánek 0.8 0.15 0.05
  • Po mnoha časových krocích se přechodové pravděpodobnosti ustálí bez ohledu na počáteční stav.

Co bude medvěd dělat v daleké budoucnosti:

lov jídlo spánek
lov 0.28 0.44 0.28
jídlo 0.28 0.44 0.28
spánek 0.28 0.44 0.28
Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Jediný červený bod na číslované ose.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Dva body na číslované ose, jeden červený a jeden černý.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Dva body na číslované ose, jeden červený a jeden zelený.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Tři body na číslované ose, jeden červený, jeden zelený a jeden černý.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Tři body na číslované ose, dva červené a jeden zelený.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Čtyři body na číslované ose, dva červené a dva zelené.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Sedm bodů na číslované ose, dva červené a pět zelených.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Mnoho bodů na číslované ose, některé červené, většina zelená.

Bayesian Data Analysis in Python

Agregovaná data reklam

print(ads_aggregated)
           date  clothes_banners_shown  sneakers_banners_shown  num_clicks
0    2019-01-01                     20                      18           2
1    2019-01-02                     24                      19           8
2    2019-01-03                     20                      20           5
..          ...                    ...                     ...         ...
148  2019-05-29                     24                      25           8
149  2019-05-30                     26                      27          11
150  2019-05-31                     26                      24           8

[151 rows x 4 columns]
Bayesian Data Analysis in Python

Lineární regrese s pyMC3

formula = "num_clicks ~ clothes_banners_shown + sneakers_banners_shown"


with pm.Model() as model: pm.GLM.from_formula(formula, data=ads_aggregated)
# Print model specification print(model)
# Sample posterior draws trace = pm.sample(draws=1000, tune=500)

Výstup funkce print v pymc3 se seznamem priorů parametrů modelu.

Bayesian Data Analysis in Python

Pojďme procvičit MCMC!

Bayesian Data Analysis in Python

Preparing Video For Download...