Seguramente, al ver las noticias, se ha encontrado con previsiones meteorológicas que indican que las probabilidades de nevadas son del 75%. ¿Te has preguntado alguna vez cómo han llegado a este porcentaje? ¿O sabe lo que quieren decir? Se trata de afirmaciones complicadas, sobre todo desde el punto de vista frecuentista. Puede que le resulte difícil explicar si va a nevar o no.
Según los bayesianos, este planteamiento es explicable, y proporcionan una solución a este tipo de afirmaciones. El enfoque bayesiano hacia la probabilidad explica que se puede medir la probabilidad basándose en la credibilidad de un evento. Por ello, los bayesianos confían en la probabilidad de un suceso.
En palabras sencillas, un bayesiano no está completamente seguro de lo que cree, pero confía en el suceso. Sin embargo, como bayesiano, se vuelve más seguro sobre lo que cree después de recoger los datos e interpretar la conexión entre esos datos.

Qué es PyMC3

La PP o programación probabilística permite codificar la especificación de los modelos bayesianos. PyMC3 es una versión actualizada y de código abierto de PyMC2. PyMC3 es un marco de trabajo para la programación probabilística. Con la ayuda del marco PyMC3, puede describir sus modelos con una sintaxis potente, legible e intuitiva. La sintaxis es similar a la sintaxis natural de los estadísticos.
Este marco le permite presentar algoritmos de Monte Carlo de cadenas de Markov. Estos algoritmos son una herramienta de última generación para el muestreo y la segmentación, por ejemplo, el muestreador No-U-Turn, la variante de Monte Carlo autoajustable de Hamilton, etc. Puede trabajar con estos muestreadores con la distribución posterior compleja y de alta dimensión. Estos algoritmos le ayudan con modelos complejos y detallados sin la necesidad de un amplio conocimiento y especialización en algoritmos complicados.

Red Bayesiana con PyMC3

Puede calcular las probabilidades del evento y definir la relación entre diferentes variables con la ayuda de modelos probabilísticos. Por ejemplo, si está creando un modelo que cubra todos los casos y probabilidades posibles, necesita grandes cantidades de datos. La red simplificará los supuestos mediante la independencia condicional y el aumento de la eficacia de todas las variables aleatorias. Aunque los pasos son sencillos, puedes tomar el ejemplo de Naïve Bayes en este caso.
Puede crear un modelo para preservar la dependencia condicional que ya conoce entre la independencia condicional aleatoria y las variables en diferentes casos.
Las redes bayesianas son modelos de gráficos probabilísticos que capturan la dependencia condicional que conoces y dirigen los valores en una representación gráfica. Puede encontrar las conexiones que faltan con la ayuda de las independencias condicionales del modelo.
Las redes bayesianas le permiten disponer de herramientas útiles para generar el gráfico del dominio y visualizar el modelo probabilístico. Además, le ayuda a revisar la relación de sus variables aleatorias. Además, indica la razón de estas probabilidades con pruebas. La red bayesiana tiene dos grandes ventajas:
– En primer lugar, la red bayesiana le permite comprender cómo puede crear y ajustar su modelo según sus necesidades. Sin embargo, antes de realizar esta actividad, es necesario entender el concepto y el mecanismo de funcionamiento que hay detrás del modelo.
– En segundo lugar, puedes comprobar el rendimiento del modelo cuando ya tenemos los datos de salida. Por ejemplo, puede comprobar la incertidumbre y los valores. Esto nos ayuda a entender la precisión del modelo.
A continuación, vamos a entender cómo Python estimula sus datos con la ayuda de las propiedades que ya tenemos.

PyMC3 con Python

El uso de Python para la programación probabilística le da numerosos beneficios. Estas son algunas de las ventajas de PyMC3 con Python:
– Compatibilidad con múltiples plataformas
– Sintaxis legible, limpia y expresiva
– Extensibilidad con Cython, Fortron, C y C++
– Fácil integración con bibliotecas científicas
Con la ayuda de estas características y la calidad de PyMC3, puede escribir fácilmente una distribución estadística personalizada, una función de transformación y muestras para el análisis bayesiano.

Ejemplo de PyMC3 con Python

Puede comprobar el siguiente ejemplo de granada, que es un paquete de Python. En este ejemplo, utilizamos los datos de los pacientes de COVID y de los fumadores para averiguar cuántas personas acabarán en el hospital. Puedes entender el concepto a partir del siguiente ejemplo:
importar aspg de granada

smokeD = pg.DiscreteDistribution({‘sí’: 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”)

model = pg.BayesianNetwork(“Covid Collider”)
model.add_states(smoke, covid, hospital)
model.add_edge(smoke, hospital)
model.add_edge(covid, hospital)
model.bake()
A continuación, se podría calcular P(covid|fumar, hospital) = 0,5 con
model.predict_proba({‘smokeD’: ‘yes’, ‘hospitalD’: ‘yes’})
y P(covid|¬fumar, hospital)=0,91 con
model.predict_proba({‘smokeD’: ‘no’, ‘hospitalD’: ‘sí’}

El futuro de PyMC3

Esperamos una transformación importante en el enfoque de PyMC3. Ahora podemos reunir los gráficos de Theano en JAX y utilizar un muestreador MCMC basado en JAX. Esto significa que podemos cambiar la codificación del backend a JAX sin ningún cambio en los códigos de PyMC3. Además, podemos utilizar un muestreo rapidísimo para modelos enormes con la ayuda de muestreadores basados en JAX.
La parte sorprendente de esta oportunidad es que no es necesario cambiar el código existente para el modelo PyMC3 para ejecutar sus modelos en hardware moderno, backend moderno y muestreadores basados en JAX. Este enfoque y cambio proporcionará una velocidad increíble sin gastos adicionales.
Con el creciente enfoque de TF y PyTorch en los gráficos dinámicos, Python ya no tiene bibliotecas estáticas adecuadas. Además, existen numerosas ventajas de los gráficos estáticos sobre los dinámicos. Por eso consideramos que Theano es una biblioteca potente y madura para el futuro. Este framework ganará más tracción en el futuro, ya que puede acceder y modificar todo tipo de representación de grafos. Se puede ejecutar Theano para numerosas y modernas interfaces de backend.

Conclusión

PyMC3 te ayuda a resolver problemas básicos de inferencia y predicción estadística bayesiana. En este artículo, entendemos PyMC3 y sus usos. Además, entendemos cómo las redes bayesianas y Python te ayudan a crear un modelo sofisticado con PyMC3.