Guardando il telegiornale, probabilmente vi sarete imbattuti in previsioni del tempo che affermano che le probabilità di nevicate sono del 75%. Vi siete mai chiesti come arrivino a questa percentuale? O sapete cosa vogliono dire? Si tratta di affermazioni complicate, soprattutto dal punto di vista frequentista. Potreste trovare difficile spiegare se la neve cadrà o meno.
Secondo i bayesiani, questo approccio è spiegabile, e forniscono una soluzione a questo tipo di affermazioni. L’approccio dei bayesiani verso la probabilità spiega che si può misurare la probabilità in base alla credibilità di un evento. Questo è il motivo per cui i bayesiani sono sicuri della probabilità di un evento.
In parole semplici, un bayesiano non è completamente sicuro di ciò che crede, ma è sicuro dell’evento. Tuttavia, come bayesiano, si diventa più sicuri di ciò che si crede dopo aver raccolto i dati e interpretato la connessione tra quei dati.

Cos’è PyMC3

PP o programmazione probabilistica permette di codificare le specifiche dei modelli bayesiani. PyMC3 è una versione open-source e aggiornata di PyMC2. PyMC3 è un framework per la programmazione probabilistica. Con l’aiuto del framework PyMC3, puoi descrivere i tuoi modelli con una sintassi potente, leggibile e intuitiva. La sintassi è simile alla sintassi naturale degli statistici.
Questo framework permette di caratterizzare gli algoritmi di Markov chain Monte Carlo. Questi algoritmi sono uno strumento di nuova generazione per il campionamento e la segmentazione – per esempio, No-U-Turn Sampler, la variante autotuning Monte Carlo di Hamilton, ecc. Potete lavorare su questi campionatori con il posteriore complesso e la distribuzione ad alta dimensione. Questi algoritmi vi aiutano con modelli complessi e dettagliati senza la necessità di una vasta conoscenza e specializzazione in algoritmi complicati.

Rete Bayesiana con PyMC3

È possibile calcolare le probabilità dell’evento e definire la relazione tra diverse variabili con l’aiuto di modelli probabilistici. Per esempio, se state creando un modello che copre tutti i possibili casi e probabilità, avete bisogno di grandi quantità di dati. La rete semplificherà le ipotesi attraverso l’indipendenza condizionata e l’aumento dell’efficacia di tutte le variabili casuali. Anche se i passi sono semplici, si può prendere l’esempio di Naïve Bayes in questo caso.
Potete creare un modello per preservare la dipendenza condizionale che già conoscete tra l’indipendenza condizionale casuale e le variabili in casi diversi.
Le reti bayesiane sono modelli per la grafica probabilistica, catturando la dipendenza condizionale che conoscete e dirigendo i valori in una rappresentazione grafica. È possibile trovare le connessioni mancanti con l’aiuto delle indipendenze condizionali del modello.
Le Reti Bayesiane vi permettono di avere strumenti utili per generare il grafico del dominio e visualizzare il modello probabilistico. Inoltre, vi aiuta a rivedere la relazione delle vostre variabili casuali. Inoltre, indica la ragione di queste probabilità con prove. La rete bayesiana ha due vantaggi principali:
– In primo luogo, la rete bayesiana vi permette di capire come potete creare e adattare il vostro modello secondo le vostre esigenze. Tuttavia, prima di eseguire questa attività, è necessario comprendere il concetto e il meccanismo di funzionamento dietro il modello.
– In secondo luogo, è possibile controllare le prestazioni del modello quando abbiamo già i dati di output. Per esempio, è possibile controllare l’incertezza e i valori. Questo ci aiuta a capire la precisione del modello.
Di seguito, capiremo come Python stimola i dati con l’aiuto delle proprietà che già abbiamo.

PyMC3 con Python

Usare Python per la programmazione probabilistica ti dà numerosi vantaggi. Ecco alcuni vantaggi di PyMC3 con Python:
– Compatibilità con più piattaforme
– Sintassi leggibile, pulita ed espressiva
– Estensibilità con Cython, Fortron, C e C++
– Facile integrazione con le librerie scientifiche
Con l’aiuto di queste caratteristiche e la qualità di PyMC3, è possibile scrivere facilmente distribuzioni statistiche personalizzate, funzioni di trasformazione e campioni per l’analisi bayesiana.

Esempio di PyMC3 con Python

Puoi controllare il seguente esempio da pomegranate, che è un pacchetto Python. In questo esempio, usiamo i dati dei pazienti COVID e dei fumatori per scoprire quante persone finiranno in ospedale. Puoi capire il concetto dal seguente esempio:
importa pomegranate aspg

smokeD = pg.DiscreteDistribution({‘yes’: 0.25, ‘no’: 0.75})
covidD = pg.DiscreteDistribution({‘sì’: 0.1, ‘no’: 0.9})
hospitalD = pg.ConditionalProbabilityTable(
[[‘sì’, ‘sì’, ‘sì’, 0.9], [‘sì’, ‘sì’, ‘no’, 0.1]
[‘sì’, ‘no’, ‘sì’, 0.1], [‘sì’, ‘no’, ‘no’, 0.9],
[‘no’, ‘sì’, ‘sì’, 0.9], [‘no’, ‘sì’, ‘no’, 0.1],
[‘no’, ‘no’, ‘sì’, 0.01], [‘no’, ‘no’, ‘no’, 0.99]],
[smokeD, covidD])

smoke = pg.Node(smokeD, name=”smokeD”)
covid = pg.Node(covidD, name=”covidD”)
hospital = pg.Node(hospitalD, name=”hospitalD”)

modello = pg.BayesianNetwork(“Covid Collider”)
model.add_states(smoke, covid, hospital)
model.add_edge(smoke, hospital)
model.add_edge(covid, hospital)
modello.bake()
Si potrebbe quindi calcolare P(covid|fumo, ospedale) = 0,5 con
model.predict_proba({‘smokeD’: ‘yes’, ‘hospitalD’: ‘yes’})
e P(covid|¬fumo, ospedale)=0,91 con
model.predict_proba({‘smokeD’: ‘no’, ‘hospitalD’: ‘sì’}

Il futuro di PyMC3

Siamo in attesa di una grande trasformazione nell’approccio di PyMC3. Ora possiamo raccogliere i grafici di Theano in JAX e usare un campionatore MCMC basato su JAX. Questo significa che possiamo cambiare la codifica del backend in JAX senza alcun cambiamento nei codici di PyMC3. Inoltre, possiamo utilizzare un campionamento fulmineo per modelli enormi con l’aiuto di campionatori basati su JAX.
La parte sorprendente di questa opportunità è che non è necessario cambiare il codice esistente per il modello PyMC3 per eseguire i modelli su hardware moderno, backend moderno e campionatori basati su JAX. Questo approccio e cambiamento fornirà una velocità sorprendente senza spese aggiuntive.
Con la crescente attenzione di TF e PyTorch sui grafici dinamici, Python non ha più librerie statiche adeguate. Inoltre, ci sono numerosi vantaggi dei grafi statici rispetto a quelli dinamici. Ecco perché consideriamo Theano come una libreria potente e matura per il futuro. Questo framework guadagnerà più trazione in futuro in quanto è possibile accedere e modificare tutti i tipi di rappresentazione dei grafi. È possibile eseguire Theano per numerose e moderne interfacce di backend.

Conclusione

PyMC3 vi aiuta a risolvere previsioni statistiche bayesiane di base e problemi di inferenza. In questo articolo, abbiamo capito PyMC3 e i suoi usi. Inoltre, capiamo come le reti bayesiane e Python ti aiutano a creare un modello sofisticato con PyMC3.