Interpretarea rezultatelor și compararea modelelor

Analiza bayesiană a datelor în Python

Michal Oleszak

Machine Learning Engineer

Rularea modelului — recapitulare

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)
Analiza bayesiană a datelor în Python

Rularea modelului — recapitulare

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)
  • Număr de parametri: 4
  • Număr de eșantioane per parametru: 1000 $\times$ 4 = 4000
Analiza bayesiană a datelor în Python

Graficul traseului

pm.traceplot(trace_1)

Grilă cu opt grafice în două coloane și patru rânduri. Coloana stângă conține patru grafice de densitate, iar coloana dreaptă patru grafice liniare, câte unul pentru fiecare parametru al modelului.

Analiza bayesiană a datelor în Python

Graficul traseului: detaliu pe un parametru

 

Două grafice alăturate: cel din stânga arată o densitate, cel din dreapta eșantioanele unui parametru sub formă de grafic liniar.

Analiza bayesiană a datelor în Python

Graficul forestier

pm.forestplot(trace_1)

Grafic care prezintă distribuția eșantioanelor pentru fiecare parametru al modelului sub formă de segment orizontal.

Analiza bayesiană a datelor în Python

Rezumatul traseului

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
Analiza bayesiană a datelor în Python

Antrenarea unui alt model

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)
Analiza bayesiană a datelor în Python

Criteriul de informare cu aplicabilitate largă (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
Analiza bayesiană a datelor în Python

Grafic de comparație

pm.compareplot(comparison)

Grafic care vizualizează valorile WAIC pentru două modele.

Analiza bayesiană a datelor în Python

Să exersăm compararea modelelor!

Analiza bayesiană a datelor în Python

Preparing Video For Download...