Markov Chain Monte Carlo en model-fit

Bayesian Data Analysis in Python

Michal Oleszak

Machine Learning Engineer

Bayesiaanse data-analyse in productie

  • Rasterbenadering: onhandig bij veel parameters
  • Steekproeven uit bekende posterior: vereist geconjugeerde priors
  • Markov Chain Monte Carlo (MCMC): steekproeven uit onbekende posterior!
Bayesian Data Analysis in Python

Monte Carlo

  • Benaderen via willekeurige getallen
  • Uit de formule: $\pi r^2 \simeq 78{,}5$

Een cirkel met straal 5.

Bayesian Data Analysis in Python

Monte Carlo

  • Benaderen via willekeurige getallen
  • Uit de formule: $\pi r^2 \simeq 78{,}5$
  • Teken een vierkant van 10x10 om de cirkel.

Een cirkel met straal 5 met een vierkant eromheen.

Bayesian Data Analysis in Python

Monte Carlo

  • Benaderen via willekeurige getallen
  • Uit de formule: $\pi r^2 \simeq 78{,}5$
  • Teken een vierkant van 10x10 om de cirkel.
  • Trek 25 willekeurige punten in het vierkant.
  • Hoeveel liggen in de cirkel? $19/25=76\%$
  • Schatting cirkeloppervlak: 76% * 100 = 76

Een cirkel met straal 5 met een vierkant eromheen en 25 willekeurige punten binnen het vierkant.

Bayesian Data Analysis in Python

Markov-ketens

  • Modelleert een reeks toestanden met overgangen volgens gegeven kansen.
Bayesian Data Analysis in Python

Markov-ketens

  • Modelleert een reeks toestanden met overgangen volgens gegeven kansen.

Wat doet de beer hierna:

hunt eat sleep
hunt 0.1 0.8 0.1
eat 0.05 0.4 0.55
sleep 0.8 0.15 0.05
  • Na veel tijdstappen worden overgangskansen gelijk, ongeacht de starttoestand.
Bayesian Data Analysis in Python

Markov-ketens

  • Modelleert een reeks toestanden met overgangen volgens gegeven kansen.

Wat doet de beer hierna:

hunt eat sleep
hunt 0.1 0.8 0.1
eat 0.05 0.4 0.55
sleep 0.8 0.15 0.05
  • Na veel tijdstappen worden overgangskansen gelijk, ongeacht de starttoestand.

Wat doet de beer in de verre toekomst:

hunt eat sleep
hunt 0.28 0.44 0.28
eat 0.28 0.44 0.28
sleep 0.28 0.44 0.28
Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Eén rode stip langs een genummerde as.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Twee stippen langs een genummerde as, één rood en één zwart.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Twee stippen langs een genummerde as, één rood en één groen.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Drie stippen langs een genummerde as: rood, groen en zwart.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Twee rode stippen en één groene langs een genummerde as.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Vier stippen langs een genummerde as: twee rood en twee groen.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Zeven stippen langs een genummerde as: twee rood en vijf groen.

Bayesian Data Analysis in Python

Markov Chain Monte Carlo

Veel stippen langs een genummerde as, sommige rood, de meeste groen.

Bayesian Data Analysis in Python

Geaggregeerde advertentiegegevens

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

Lineaire regressie met 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)

Output van de pymc3-printfunctie met de priors voor modelparameters.

Bayesian Data Analysis in Python

Laten we oefenen met MCMC!

Bayesian Data Analysis in Python

Preparing Video For Download...