Menafsirkan hasil dan membandingkan model

Analisis Data Bayesian dengan Python

Michal Oleszak

Machine Learning Engineer

Menjalankan model (ulasan)

formula = "num_clicks ~ clothes_banners_shown + sneakers_banners_shown"

with pm.Model() as model_1:
    pm.GLM.from_formula(formula, data=ads_aggregated)
    trace_1 = pm.sample(draws=1000, tune=500)
Analisis Data Bayesian dengan Python

Menjalankan model (ulasan)

formula = "num_clicks ~ clothes_banners_shown + sneakers_banners_shown"

with pm.Model() as model_1:
    pm.GLM.from_formula(formula, data=ads_aggregated)
    trace_1 = pm.sample(draws=1000, tune=500, chains=4)
  • Jumlah parameter: 4
  • Jumlah draw per parameter: 1000 $\times$ 4 = 4000
Analisis Data Bayesian dengan Python

Plot trace

pm.traceplot(trace_1)

Kisi delapan plot dalam dua kolom dan empat baris. Kolom kiri berisi empat plot densitas, dan kolom kanan empat plot garis, masing-masing untuk satu parameter model.

Analisis Data Bayesian dengan Python

Plot trace: perbesar satu parameter

 

Dua plot berdampingan: kiri menunjukkan plot densitas, kanan plot garis dari draw parameter.

Analisis Data Bayesian dengan Python

Plot forest

pm.forestplot(trace_1)

Plot yang menampilkan distribusi draw untuk tiap parameter model sebagai garis horizontal.

Analisis Data Bayesian dengan Python

Ringkasan trace

pm.summary(trace_1)
                         mean     sd  hdi_3%  hdi_97%  mcse_mean  mcse_sd  \
Intercept               1.307  0.886  -0.305    2.962      0.018    0.013   
clothes_banners_shown   0.103  0.031   0.043    0.160      0.001    0.000   
sneakers_banners_shown  0.104  0.032   0.045    0.163      0.001    0.001   
sd                      2.654  0.157   2.382    2.970      0.003    0.002   

                        ess_mean  ess_sd  ess_bulk  ess_tail  r_hat  
Intercept                 2346.0  2318.0    2351.0    2083.0    1.0  
clothes_banners_shown     2085.0  2085.0    2089.0    1868.0    1.0  
sneakers_banners_shown    2105.0  1953.0    2122.0    1869.0    1.0  
sd                        2615.0  2590.0    2646.0    1834.0    1.0
Analisis Data Bayesian dengan Python

Memasang model lain

formula = "num_clicks ~ clothes_banners_shown + sneakers_banners_shown + weekend"

with pm.Model() as model_2:
    pm.GLM.from_formula(formula, data=ads_aggregated)
    trace_2 = pm.sample(draws=1000, tune=500)
Analisis Data Bayesian dengan Python

Widely Applicable Information Criterion (WAIC)

comparison = pm.compare({"trace_1": trace_1, "trace_2": trace_2}, 
                        ic="waic", scale="deviance")
print(comparison)
        rank     waic   p_waic    d_waic    weight       se      dse warning  \
trace_2    0   -362.8   5.1576         0  0.513792  9.37269        0    True   
trace_1    1 -362.926  4.13318  0.126236  0.486208  9.48352  1.50682    True   

        waic_scale  
trace_2        log  
trace_1        log
Analisis Data Bayesian dengan Python

Plot perbandingan

pm.compareplot(comparison)

Plot yang memvisualisasikan nilai WAIC untuk dua model.

Analisis Data Bayesian dengan Python

Ayo berlatih membandingkan model!

Analisis Data Bayesian dengan Python

Preparing Video For Download...