Markov Zincir Monte Carlo ve model uydurma

Python ile Bayesçi Veri Analizi

Michal Oleszak

Machine Learning Engineer

Üretimde Bayesçi veri analizi

  • Izgara yaklaşımı: çok parametreyle zahmetli
  • Bilinen posteriordan örnekleme: eşleşik öncüller ister
  • Markov Zincir Monte Carlo (MCMC): bilinmeyen posteriordan örnekleme!
Python ile Bayesçi Veri Analizi

Monte Carlo

  • Rasgele sayılar üreterek bir niceliği yaklaştırma
  • Formüle göre, $\pi r^2 \simeq 78.5$

Yarıçapı 5 olan bir daire.

Python ile Bayesçi Veri Analizi

Monte Carlo

  • Rasgele sayılar üreterek bir niceliği yaklaştırma
  • Formüle göre, $\pi r^2 \simeq 78.5$
  • Dairenin etrafına 10x10 kare çiz.

Üzerine kare çizilmiş, yarıçapı 5 olan bir daire.

Python ile Bayesçi Veri Analizi

Monte Carlo

  • Rasgele sayılar üreterek bir niceliği yaklaştırma
  • Formüle göre, $\pi r^2 \simeq 78.5$
  • Dairenin etrafına 10x10 kare çiz.
  • Karede 25 rastgele nokta örnekle.
  • Kaçı daire içinde? $19/25=\%76$
  • Daire alanı yaklaşımı: %76 × 100 = 76

Üzerine kare çizilmiş ve kare içinde rastgele yerleştirilmiş 25 nokta olan, yarıçapı 5 olan bir daire.

Python ile Bayesçi Veri Analizi

Markov Zincirleri

  • Durumlar dizisini, aralarındaki geçiş olasılıklarıyla modeller.
Python ile Bayesçi Veri Analizi

Markov Zincirleri

  • Durumlar dizisini, aralarındaki geçiş olasılıklarıyla modeller.

Ayı sırada ne yapacak:

avlan ye uyu
avlan 0.1 0.8 0.1
ye 0.05 0.4 0.55
uyu 0.8 0.15 0.05
  • Çok zaman geçince, geçiş olasılıkları başlangıçtan bağımsız hale gelir.
Python ile Bayesçi Veri Analizi

Markov Zincirleri

  • Durumlar dizisini, aralarındaki geçiş olasılıklarıyla modeller.

Ayı sırada ne yapacak:

avlan ye uyu
avlan 0.1 0.8 0.1
ye 0.05 0.4 0.55
uyu 0.8 0.15 0.05
  • Çok zaman geçince, geçiş olasılıkları başlangıçtan bağımsız hale gelir.

Uzak gelecekte ayı ne yapar:

avlan ye uyu
avlan 0.28 0.44 0.28
ye 0.28 0.44 0.28
uyu 0.28 0.44 0.28
Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde tek bir kırmızı nokta.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde iki nokta: biri kırmızı, biri siyah.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde iki nokta: biri kırmızı, biri yeşil.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde üç nokta: biri kırmızı, biri yeşil, biri siyah.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde üç nokta: iki kırmızı, bir yeşil.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde dört nokta: iki kırmızı, iki yeşil.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde yedi nokta: iki kırmızı, beş yeşil.

Python ile Bayesçi Veri Analizi

Markov Zincir Monte Carlo

Numaralı eksen üzerinde çok sayıda nokta: bazıları kırmızı, çoğu yeşil.

Python ile Bayesçi Veri Analizi

Toplanmış reklam verisi

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]
Python ile Bayesçi Veri Analizi

pyMC3 ile doğrusal regresyon

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)

pymc3 print çıktısı: model parametrelerinin öncüllerini listeler.

Python ile Bayesçi Veri Analizi

MCMC uygulayalım!

Python ile Bayesçi Veri Analizi

Preparing Video For Download...