Modelo jerárquico bayesiano para regresión con modelado de incertidumbre

Estás leyendo la publicación: Modelo jerárquico bayesiano para regresión con modelado de incertidumbre

El mundo es un entorno impredecible y los sistemas inteligentes deben sacar conclusiones de entradas ruidosas o confusas. La teoría de la probabilidad (particularmente el teorema de Bayes) proporciona un marco sistemático para integrar conocimientos previos con información real. El aprendizaje automático probabilístico ofrece un sólido conjunto de técnicas para modelar la incertidumbre, ejecutar inferencias probabilísticas y generar predicciones o juicios. Este artículo se centra en la construcción de un modelo jerárquico bayesiano para un problema de regresión con PyMC3. Los siguientes son los temas a tratar.

Tabla de contenido

  1. Acerca de la inferencia bayesiana
  2. Beneficios y desventajas de la programación probabilística
  3. Un modelo jerárquico bayesiano para regresión usando PyMC

La inferencia bayesiana resume la evidencia sobre la probabilidad de una predicción utilizando la probabilidad bayesiana. Echemos un vistazo a una comprensión de alto nivel de la inferencia bayesiana.

Acerca de la inferencia bayesiana

El teorema de Bayes sirve como base para la inferencia bayesiana. Los eventos se reemplazan por observaciones y conjuntos de parámetros, y probabilidades con densidades en la inferencia bayesiana. La distribución posterior conjunta de un conjunto de parámetros para la observación ahora se define como el producto de las distribuciones previas del conjunto de parámetros y la probabilidad de la observación dividida por la probabilidad marginal.

La “verosimilitud marginal” de la observación, también conocida como “distribución predictiva previa”, se puede establecer en una constante desconocida c. La distribución predictiva previa describe el aspecto que debería tener una observación antes de ser observada, dado el modelo. Para la verosimilitud marginal de y, solo se emplean la colección de probabilidades previas y la función de verosimilitud del modelo. La probabilidad marginal de observación normaliza la distribución posterior conjunta, garantizando que es una distribución adecuada que se integra en una sola.

El teorema de Bayes se utiliza en la inferencia bayesiana basada en modelos para estimar la distribución posterior conjunta no normalizada con el fin de evaluar e inferir a partir de las distribuciones posteriores marginales.

Componentes de la inferencia bayesiana

  • Distribuciones anteriores para el conjunto de parámetros, utilice la probabilidad para cuantificar la incertidumbre acerca de los parámetros antes de tener en cuenta los datos.
  • En un modelo de probabilidad comprensivo, el verosimilitud o función de verosimilitud describe cómo se conectan todas las variables.
  • Después de considerar tanto el previo como los datos, el distribución posterior conjunta indica incertidumbre sobre la selección de parámetros. Si el conjunto de parámetros se divide en un solo parámetro de interés y los parámetros restantes se consideran parámetros molestos, entonces la densidad de ese único parámetro de interés es la distribución posterior marginal.
🔥 Recomendado:  Una guía práctica sobre los enfoques frecuentista frente a bayesiano en estadística

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.

Beneficios y desventajas de la programación probabilística

Hay tres beneficios principales:

No depende de la cantidad de datos.

En la programación probabilística, un individuo puede incluir conocimiento del dominio en el modelo y luego dejar que el modelo aprenda a medida que avanza a partir de los datos. Eso es algo que una red neuronal profunda no puede lograr. Esto significa que un individuo puede comenzar con muchos menos datos de los que se requerirían en el aprendizaje automático típico.

La incertidumbre cambia a certeza

Otra ventaja importante es que los modelos probabilísticos suelen incluir distribuciones de incertidumbre. Entonces, en lugar de tener una posibilidad de algo, recibirás una distribución de probabilidad.

Entendamos esto con un ejemplo. Supongamos que estamos desarrollando un automóvil autónomo. Nuestra IA tiene una puntuación de confianza de 0,99 para que la señal sea una luz verde más adelante. ¿Qué tan seguros estamos de que la cifra del 99% es correcta? Normalmente, simplemente no lo sabemos. Obtenemos una distribución de la programación probabilística. Es decir, usted sabe qué tan seguro está de que el 99% de probabilidad es correcto.

Alta interpretabilidad del algoritmo.

La explicabilidad es necesaria en el desarrollo del aprendizaje automático, aunque con frecuencia es un recurso escaso. Muchos modelos de aprendizaje automático están en una caja negra de principio a fin, y no sabrá por qué el modelo llegó a una conclusión determinada. Eso es un problema en muchas circunstancias. Por ejemplo, considere que tiene una institución financiera que otorga préstamos. Si su aprendiz automático rechaza una solicitud de préstamo, entonces sería muy fácil explicar el motivo del rechazo. La programación probabilística es considerablemente más fácil de explicar.

Hay algunas desventajas de la programación probabilística:

Desafíos tecnológicos

Debido a que este es un sector nuevo, todavía hay ciertos problemas técnicos que aún no se han resuelto. Por ejemplo, la inferencia suele ser bastante lenta, lo que hace que el entrenamiento del modelo sea increíblemente lento. La industria está evolucionando rápidamente y se están desarrollando nuevas estrategias a diario, pero aún tendrá que pasar por algunos obstáculos por el momento.

Esta no es una programación típica.

Como resultado, este paradigma incluye programación, aprendizaje automático y técnicas estadísticas. Un combo tremendamente útil, pero también que está poniendo a prueba a los creadores. La mayoría de los desarrolladores no tenían formación en estadística y tendrían que adquirir nuevas habilidades en esta área. Al buscar desarrolladores, esto hace que sea un poco más difícil encontrar a las personas adecuadas.

🔥 Recomendado:  ¿Cómo utilizar la prueba Chi-Cuadrado para dos variables categóricas?

Un modelo jerárquico bayesiano para regresión usando PyMC

PyMC es una biblioteca de Python para el modelado estadístico bayesiano que se centra en métodos sofisticados de inferencia variacional y cadena de Markov de Monte Carlo. Su adaptabilidad y extensibilidad lo hacen adecuado para una amplia gama de desafíos.

En este artículo, construiremos un modelo bayesiano jerárquico para un problema de regresión con dos cadenas de simulación de MC.

Los datos utilizados en este artículo están relacionados con un club de béisbol. Estos datos tienen 23 características, incluida la variable de destino que es “Salario”. El problema es una regresión y necesita predecir el salario de los jugadores en función de sus datos históricos.

Comprobemos si el PyMC está presente.

! mostrar pip pymc3

Revista de análisis de la India

Si no, podría ser instalado por el siguiente código.

! pip instalar pymc3

Importación de bibliotecas

importar pymc3 como pm importar numpy como np importar pandas como pd importar matplotlib.pyplot como plt importar arviz como az

Leer y preprocesar los datos.

data=pd.read_csv(“Hitters.csv”) datos[:5]

Revista de análisis de la India

Cuando se cargan los datos, faltan algunos valores que deben tratarse y codificar columnas categóricas.

data_utils=data.dropna(axis=0) from sklearn.preprocessing import LabelEncoder encoder=LabelEncoder() data_utils[‘League_enc’]=encoder.fit_transform(data_utils[‘League’]) utilidades_datos[‘Division_enc’]=encoder.fit_transform(data_utils[‘Division’]) utilidades_datos[‘NewLeague_enc’]=encoder.fit_transform(data_utils[‘NewLeague’])

Dado que hay 23 funciones, incluida la variable de destino, verifiquemos si podemos hacer alguna selección o eliminación de funciones.

importar seaborn como sns plt.figure(figsize=(15,8)) sns.heatmap(data_utils.corr(),annot=True) plt.show()

Revista de análisis de la India

Con la ayuda de un mapa de calor, se pudo observar que hay algunas características que están altamente correlacionadas entre sí. Por lo tanto, realizar la eliminación de características y eliminar la correlación de columnas superior a 0,8.

df=data_utils.drop([‘AtBat’, ‘Hits’,’Runs’, ‘RBI’,’Years’, ‘CAtBat’,
‘CHits’,’CRuns’, ‘CRBI’, ‘CWalks’],eje=1) X=df.drop([‘League’,’Division’,’NewLeague’,’Salary’],eje=1) y=gl[‘Salary’]

Construcción del modelo bayesiano jerárquico

con pm.Model() como modelo_jerárquico: mu_a = pm.Normal(‘mu_alpha’, mu=0., sigma=1) sigma_a = pm.HalfCauchy(‘sigma_alpha’, beta=1) mu_b = pm.Normal(‘mu_beta ‘, mu=0., sigma=1) sigma_b = pm.HalfCauchy(‘sigma_beta’, beta=1) a = pm.Normal(‘alfa’, mu=mu_a, sigma=sigma_a, forma=len(X)) b = pm.Normal(‘beta’, mu=mu_b, sigma=sigma_b, forma=len(X)) eps = pm.HalfCauchy(‘eps’, beta=1) est = a[X[‘Division_enc’]]+ segundo[X[‘Division_enc’]]* X[‘Errors’].valores y_like = pm.Normal(‘y’, mu=est, sigma=eps, observado=y)

Para usar el modelo de un PyMC, debe definirse como una declaración “con” y se le puede dar un alias usando “como”.

En la variable “est” se define la fórmula para la regresión lineal usando la variable independiente como “Errores” y para pendiente y constante se está utilizando la “Division_enc”.

Dado que el problema es una regresión lineal multivariante, esa es la razón para usar modelos jerárquicos.

con hierarchical_model: paso = pm.NUTS() hierarchical_trace = pm.sample(2000, tune=1000, init=Ninguno, step=step, cores=2, return_inferencedata=True)

En esto, estamos muestreando para tener una inferencia de las estadísticas del modelo. En la creación anterior, 2 cadenas de muestra con 1000 melodías y usando procesamiento paralelo para reducir el tiempo.

🔥 Recomendado:  La oportunidad escondida para las páginas de comercio electrónico en Google Images
Revista de análisis de la India

Profundicemos en la inferencia obtenida de la función de ejemplo. Dado que el resultado se almacena en una variable, se puede acceder fácilmente a ella, no olvide guardar.

seguimiento_jerárquico

Revista de análisis de la India

Si se hace clic en los menús desplegables (la pequeña punta de flecha), se expandiría y podríamos entender más sobre la inferencia. Tal vez haya otra forma de acceder a la inferencia, los datos están en forma de marco de datos, por lo que posterior, log_likelihood, sample_stats y observe_data son columnas diferentes. Estos podrían tratarse como marcos de datos de pandas.

seguimiento_jerárquico[‘sample_stats’]

Revista de análisis de la India

Comprobemos la profundidad del árbol de la cadena formada.

hierarchical_trace.sample_stats[“tree_depth”].plot(col=”cadena”, ls=”ninguno”, marcador=”o”, alfa=0.3)

Revista de análisis de la India

Cuantos más árboles haya, la predicción aquí es que la primera cadena tiene árboles binarios densos pero la segunda cadena no, lo que significa que se podría mejorar el rendimiento. Pero más árboles significa más tiempo también.

Echemos un vistazo a la distribución posterior.

az.plot_posterior(hierarchical_trace, group=”sample_stats”, var_names=”acceptance_rate”, hdi_prob=”hide”, kind=”hist” )

Revista de análisis de la India

Esta distorsión en la distribución significa que hay valores atípicos en los datos de observación. También se podría concluir que la cadena formada no es estable.

También podemos trazar el alfa y beta del algoritmo de regresión lineal multivariable.

con modelo_jerárquico: az.plot_trace(trace_hierárquico,var_names=[‘alpha’,’beta’,’mu_alpha’,’mu_beta’],tamaño de figura=(15, 20))

Revista de análisis de la India

Conclusión

El modelo bayesiano se basa en nuestro conocimiento de eventos pasados. Lo anterior representa su comprensión de los parámetros antes de recibir los datos. La verosimilitud es la probabilidad de los datos dados los valores de los parámetros. Dados los datos, la posterior es la probabilidad de los parámetros. Las distribuciones anterior, de probabilidad y posterior están vinculadas por el teorema de Bayes. Con este artículo hemos entendido la inferencia bayesiana y su implementación para resolver un problema de regresión con PyMC.

Referencias