Markov Chain Monte Carlo dan pemodelan

Analisis Data Bayesian dengan Python

Michal Oleszak

Machine Learning Engineer

Analisis data Bayesian di produksi

  • Pendekatan grid: tidak praktis untuk banyak parameter
  • Sampling dari posterior yang diketahui: butuh prior konjugat
  • Markov Chain Monte Carlo (MCMC): sampling dari posterior yang tidak diketahui!
Analisis Data Bayesian dengan Python

Monte Carlo

  • Mendekati suatu besaran dengan menghasilkan bilangan acak
  • Dari rumus, $\pi r^2 \simeq 78{,}5$

Sebuah lingkaran dengan jari-jari 5.

Analisis Data Bayesian dengan Python

Monte Carlo

  • Mendekati suatu besaran dengan menghasilkan bilangan acak
  • Dari rumus, $\pi r^2 \simeq 78{,}5$
  • Gambar persegi 10x10 mengelilingi lingkaran.

Sebuah lingkaran dengan jari-jari 5 dengan sebuah persegi di atasnya.

Analisis Data Bayesian dengan Python

Monte Carlo

  • Mendekati suatu besaran dengan menghasilkan bilangan acak
  • Dari rumus, $\pi r^2 \simeq 78{,}5$
  • Gambar persegi 10x10 mengelilingi lingkaran.
  • Ambil 25 titik acak dalam persegi.
  • Berapa yang berada di dalam lingkaran? $19/25=76\%$
  • Perkiraan luas lingkaran: 76% × 100 = 76

Sebuah lingkaran dengan jari-jari 5 dengan sebuah persegi di atasnya dan 25 titik acak di dalam persegi.

Analisis Data Bayesian dengan Python

Rantai Markov

  • Memodelkan rangkaian status, dengan perpindahan antarstatus berdasarkan probabilitas tertentu.
Analisis Data Bayesian dengan Python

Rantai Markov

  • Memodelkan rangkaian status, dengan perpindahan antarstatus berdasarkan probabilitas tertentu.

Apa yang akan beruang lakukan selanjutnya:

hunt eat sleep
hunt 0.1 0.8 0.1
eat 0.05 0.4 0.55
sleep 0.8 0.15 0.05
  • Setelah banyak periode waktu, probabilitas transisi menjadi sama terlepas dari titik awal.
Analisis Data Bayesian dengan Python

Rantai Markov

  • Memodelkan rangkaian status, dengan perpindahan antarstatus berdasarkan probabilitas tertentu.

Apa yang akan beruang lakukan selanjutnya:

hunt eat sleep
hunt 0.1 0.8 0.1
eat 0.05 0.4 0.55
sleep 0.8 0.15 0.05
  • Setelah banyak periode waktu, probabilitas transisi menjadi sama terlepas dari titik awal.

Apa yang akan beruang lakukan di masa depan jauh:

hunt eat sleep
hunt 0.28 0.44 0.28
eat 0.28 0.44 0.28
sleep 0.28 0.44 0.28
Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Satu titik merah di sepanjang sumbu bernomor.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Dua titik di sepanjang sumbu bernomor, satu merah dan satu hitam.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Dua titik di sepanjang sumbu bernomor, satu merah dan satu hijau.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Tiga titik di sepanjang sumbu bernomor, satu merah, satu hijau, dan satu hitam.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Dua titik di sepanjang sumbu bernomor, dua merah, dan satu hijau.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Empat titik di sepanjang sumbu bernomor, dua merah, dan dua hijau.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Tujuh titik di sepanjang sumbu bernomor, dua merah, dan lima hijau.

Analisis Data Bayesian dengan Python

Markov Chain Monte Carlo

Banyak titik di sepanjang sumbu bernomor, sebagian merah, sebagian besar hijau.

Analisis Data Bayesian dengan Python

Data iklan teragregasi

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]
Analisis Data Bayesian dengan Python

Regresi linear dengan pyMC3

formula = "num_clicks ~ clothes_banners_shown + sneakers_banners_shown"


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

Keluaran fungsi print pymc3, mencantumkan prior untuk parameter model.

Analisis Data Bayesian dengan Python

Ayo berlatih MCMC!

Analisis Data Bayesian dengan Python

Preparing Video For Download...