Sin categoría

Inferencia bayesiana en el aprendizaje automático

Introducción

Actualmente, la inferencia bayesiana puede ser definida como un enfoque estadístico que nos permite estimar y actualizar la incertidumbre de los datos a medida que se va obteniendo nueva información. Es decir, utiliza la teoría de la probabilidad bayesiana para actualizar y calcular lo que se conoce de algo con lo que se ha observado, por lo tanto, trata los parámetros o variables desconocidas como variables aleatorias describiéndolas en términos de distribuciones de probabilidad. No hay que olvidar que este planteamiento se basa en el teorema de Bayes, el cual establece que una probabilidad posterior se relaciona con la probabilidad previa y la verosimilitud de lo observado, permitiendo así actualizar continuamente la información a medida que se adquiere nueva dejando así, combinar ambos tipos de información, tanto la a priori como la empírica. En otras palabras, nos brinda una base fuerte y coherente para la toma de decisiones y la estimación de los parámetros presentes.

Por medio de este blog se explorarán diferentes algoritmos y técnicas bayesianas que sean comúnmente utilizadas en el campo del aprendizaje automático. Por un lado, en el campo de la clasificación, hablaremos de cómo los modelos bayesianos permiten capturar efectivamente la incertidumbre presente en las predicciones y mejorar así el modelo. Del mismo modo, al hablar de regresión se busca examinar cómo los modelos bayesianos permiten estimar mejor los coeficientes de un modelo y finalmente, cómo se integra al agrupamiento o clustering, es decir, cómo son capaces de ayudar a descubrir patrones para agrupar los datos. De igual forma, junto a estas explicaciones se añadirán ejemplos prácticos con el objetivo de permitir una mejor comprensión sobre cómo diferentes problemas del aprendizaje automáticos pueden ser resueltos a través de la inferencia bayesiana. Finalmente, conocemos que este camino pese a que trae sus ventajas también involucra desafíos que deben tenerse en cuenta y que aquí se explicarán considerando detalles prácticos buscando aplicar todo lo anteriormente mencionado a un entorno real.

Estado del arte

La inferencia bayesiana en el aprendizaje automático ha experimentado un crecimiento significativo en los últimos años. Al reconocerse el valor de este enfoque probabilístico, los investigadores y profesionales en el campo han desarrollado diversas técnicas y algoritmos que se basan en la inferencia bayesiana para la solución de problemas de alta complejidad.

Por un lado, se ha observado un aumento en la aplicación de modelos bayesianos en el aprendizaje automático gracias a su capacidad de capturar la incertidumbre proporcionando estimaciones más confiables de los parámetros que conforman determinado modelo. De hecho, las redes neuronales bayesianas han sido más utilizadas porque permiten modelar la incertidumbre en las predicciones a través de las capas de la red, ofreciendo no solamente mayor confianza sino también abordando problemas presentes con otros enfoques debido a que pueden aprender una distribución de posibles modelos en lugar de un solo conjunto de pesos.

Al mismo tiempo, otra área de investigación activa es la clasificación bayesiana desarrollando algoritmos de clasificación que aprovechan la teoría de la inferencia bayesiana para mejorar la precisión de las clasificaciones. Tal es el caso de las máquinas de vectores de soporte bayesianas que utilizan la inferencia bayesiana para encontrar el hiperplano de separación óptimo y asignar probabilidades a las clases de manera coherente.

Hablando sobre regresión bayesiana, estos métodos han demostrado su efectividad en la estimación de parámetros y predicciones cuando se presenta incertidumbre, tal como lo demuestran los procesos gaussianos ya que permiten modelar la distribución posterior sobre las funciones y proporcionan intervalos de confianza para las predicciones ofreciendo, por otro lado, mayor flexibilidad y adaptabilidad cuando se presenta un caso de estimación de relaciones que no sean lineales permitiendo su aplicación exitosa en diferentes dominios. Finalmente, para el agrupamiento, los modelos de mezclas bayesianas y los procesos de Dirichlet han sido ampliamente utilizados porque ambos enfoques permiten el descubrimiento de estructuras y agrupación de datos de manera probabilística y asigna probabilidades a estas asignaciones de los datos a grupos, en este aspecto, proporciona el modelado de la incertidumbre además de facilitar la exploración de este para adaptarse a diferentes patrones que puedan presentarse en los datos.

Desarrollo

Inicialmente, la inferencia bayesiana aplicada a la clasificación en aprendizaje automático permiten capturar incertidumbre en las predicciones mejorando la calidad del modelo y esto, puede realizarse mediante redes neuronales bayesianas y máquinas de vectores de soporte bayesianas. El funcionamiento del enfoque que emplea redes neuronales bayesianas se basa en la extensión de las redes neuronales convencionales introduciendo distribuciones de probabilidad sobre los pesos y sesgos de la red en vez de valores fijos. Las distribuciones de estos son estimadas mediante el algoritmo de inferencia bayesiana implicando así tener en cuenta la incertidumbre inherente en los datos y ajustar los parámetros de la red en consecuencia. Finalmente, una vez que se ha entrenado la red neuronal bayesiana, se pueden obtener predicciones y estimaciones de incertidumbre mediante muestreo de las distribuciones de los pesos y sesgos. Esto se logra realizando múltiples pasadas de propagación hacia adelante a través de la red, donde en cada pasada se toman diferentes muestras de las distribuciones de los parámetros. La variabilidad en las predicciones obtenidas a partir de estas muestras proporciona una medida de la incertidumbre asociada con las predicciones del modelo. Por otro lado, el uso de máquinas vectores de soporte bayesianas son también una extensión de las máquinas de vectores de soporte convencionales (SVM). Al igual que las redes neuronales bayesianas, estas introducen distribuciones de probabilidad sobre los parámetros del modelo para capturar la incertidumbre. En lugar de tener un único hiperplano de separación entre las clases, utilizan distribuciones de probabilidad para representar un conjunto de hiperplanos posibles. Estas distribuciones se ajustan utilizando el algoritmo de inferencia bayesiana durante el entrenamiento, teniendo en cuenta tanto los datos de entrenamiento como las distribuciones iniciales de los parámetros.Además, cuando se trata de hacer predicciones, proporcionan una medida de incertidumbre al calcular la probabilidad de que una instancia pertenezca a una clase determinada. Esta probabilidad se obtiene tomando en cuenta las distribuciones de los parámetros y las características de la instancia.

Seguidamente, estos modelos aplicados en la regresión, como la regresión lineal bayesiana y los procesos gaussianos, permiten una estimación más precisa de los coeficientes del modelo y proporcionan intervalos de confianza para las predicciones:

Regresión Lineal Bayesiana: En la regresión lineal bayesiana, en lugar de tener valores fijos para los coeficientes de la regresión, se les asignan distribuciones de probabilidad. Estas distribuciones representan la incertidumbre sobre los coeficientes del modelo. Durante el entrenamiento, se utiliza el enfoque bayesiano para estimar las distribuciones posteriores de los coeficientes, dadas las distribuciones iniciales y los datos de entrenamiento. Esto implica tomar en cuenta la incertidumbre inherente en los datos y ajustar los coeficientes en consecuencia. Una vez que se ha entrenado el modelo, se pueden obtener predicciones y estimaciones de incertidumbre. Para una nueva instancia de entrada, se muestrean múltiples conjuntos de coeficientes de las distribuciones posteriores. Luego, se generan múltiples predicciones utilizando cada conjunto de coeficientes. La variabilidad en las predicciones obtenidas proporciona una medida de la incertidumbre asociada con las predicciones del modelo. Además, los intervalos de confianza se pueden calcular a partir de las distribuciones posteriores de los coeficientes. Estos intervalos indican un rango de valores en el cual se espera que caiga el valor verdadero de la predicción con cierto nivel de confianza. Por ejemplo, un intervalo de confianza del 95% indicaría que se espera que el valor verdadero de la predicción esté dentro del intervalo con una probabilidad del 95%.

Procesos Gaussianos: Los Procesos Gaussianos son otro enfoque bayesiano utilizado en la regresión. En este caso, se modela la función objetivo como un proceso estocástico, donde se asume que cualquier conjunto finito de valores tiene una distribución gaussiana. En el contexto de la regresión, los Procesos gaussianos permiten modelar la función objetivo como una distribución gaussiana sobre todas las posibles funciones que podrían explicar los datos. Esta distribución se define mediante una media y una matriz de covarianza. Para realizar predicciones, se utiliza el enfoque de inferencia bayesiana para obtener una distribución posterior sobre las funciones que mejor se ajustan a los datos observados. Esta distribución posterior se utiliza para generar predicciones y estimaciones de incertidumbre. Los Procesos gaussianos también proporcionan intervalos de confianza para las predicciones. Estos intervalos se basan en la distribución posterior y representan un rango en el cual se espera que caiga el valor verdadero de la predicción con cierto nivel de confianza.

Finalmente, en el clustering es empleada para descubrir patrones y agrupaciones en los datos de manera probabilística. Dos enfoques populares en el contexto del clustering bayesiano son los modelos de mezclas bayesianas y los procesos de Dirichlet. En los modelos de mezclas bayesianas, basados en modelos de mezclas convencionales, dse asume que los datos provienen de una combinación de varias distribuciones o “componentes”. En lugar de asignar pesos fijos a cada componente, los modelos de mezclas bayesianas asignan distribuciones de probabilidad a los pesos. En este enfoque, se utiliza la inferencia bayesiana para estimar las distribuciones posteriores de los pesos y los parámetros de cada componente, dadas las observaciones de los datos. Esto permite capturar la incertidumbre en la asignación de los datos a los diferentes componentes y obtener estimaciones más precisas de los parámetros. Una vez que se ha realizado la inferencia bayesiana, se puede utilizar el modelo entrenado para realizar clustering probabilístico. Para una nueva instancia, se calculan las probabilidades de pertenencia a cada componente y se asigna la instancia al componente con la mayor probabilidad. Además, se pueden obtener estimaciones de incertidumbre en la asignación de clusters mediante la propagación de incertidumbre a través de las distribuciones de los pesos y los parámetros. Por otro lado, los procesos de Dirichlet son una herramienta utilizada en el clustering bayesiano no paramétrico. En lugar de asumir un número fijo de clusters, los procesos de Dirichlet permiten que el número de clusters se ajuste automáticamente en función de los datos. En este enfoque, se utiliza un proceso de Dirichlet para modelar la distribución prior de las asignaciones de cluster. A medida que se observan los datos, el modelo asigna las instancias a clusters existentes o crea nuevos clusters en función de la similitud de los datos y las distribuciones de cluster existentes. La inferencia Bayesiana se utiliza para estimar las distribuciones posteriores de las asignaciones de cluster y otros parámetros relevantes permitiendo descubrir patrones y agrupaciones en los datos de manera flexible y adaptativa. Una vez que se ha realizado la inferencia bayesiana, se pueden utilizar los resultados para realizar tareas de clustering y obtener información sobre la incertidumbre en la asignación de clusters. Además, los Procesos de Dirichlet tienen la ventaja de ser capaces de manejar eficientemente conjuntos de datos grandes y de alta dimensionalidad.

Para comprender mejor lo anteriormente mencionado podemos mencionar ejemplos prácticos sobre la aplicación de la inferencia bayesiana:

Clasificación de spam en correos electrónicos: Supongamos que deseamos construir un clasificador de spam en correos electrónicos. Podemos utilizar la Inferencia Bayesiana para estimar las probabilidades condicionales de que un correo electrónico sea spam o no, dadas ciertas características (como palabras clave, frecuencia de ciertos términos, etc.). Podemos asignar distribuciones de probabilidad a los parámetros del modelo, como las probabilidades a priori de spam y no spam, y las probabilidades condicionales de las características dadas las clases. La Inferencia Bayesiana nos permitiría actualizar estas distribuciones a medida que se observan nuevos correos electrónicos y así obtener estimaciones más precisas de las probabilidades de clasificación.

Predicción de precios de viviendas: En este caso, deseamos predecir el precio de una vivienda en función de diferentes características (área, número de habitaciones, ubicación, etc.). Podemos utilizar un modelo de Regresión Lineal Bayesiana para estimar los coeficientes del modelo y obtener intervalos de confianza para las predicciones. Al asignar distribuciones de probabilidad a los coeficientes, podemos capturar la incertidumbre inherente en los datos y proporcionar estimaciones más precisas y confiables de los precios de las viviendas.

Segmentación de clientes: Supongamos que tenemos datos de clientes que incluyen características demográficas, comportamiento de compra, preferencias, etc., y deseamos realizar segmentación de clientes para identificar grupos similares. Podemos utilizar un enfoque de Clustering Bayesiano, como los Modelos de Mezclas Bayesianas, para asignar probabilidades de pertenencia a diferentes segmentos o clusters. La Inferencia Bayesiana nos permitiría ajustar automáticamente el número de clusters y obtener estimaciones de incertidumbre en la asignación de los clientes a los clusters, lo que facilitaría una segmentación más precisa y confiable.

Ejemplo práctico en código

En este ejemplo, se utiliza el conjunto de datos Iris, que es un conjunto de datos de clasificación comúnmente utilizado. Se divide el conjunto de datos en conjuntos de entrenamiento y prueba, luego se entrena un clasificador Naive Bayes utilizando el conjunto de entrenamiento. Finalmente, se realizan predicciones en el conjunto de prueba y se calcula la precisión del clasificador.

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB

# Cargar el conjunto de datos de iris
iris = load_iris()
X = iris.data
y = iris.target

# Dividir el conjunto de datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Entrenar el clasificador Naive Bayes
clf = GaussianNB()
clf.fit(X_train, y_train)

# Realizar predicciones en el conjunto de prueba
y_pred = clf.predict(X_test)

# Calcular la precisión del clasificador
accuracy = np.mean(y_pred == y_test)
print("Precisión:", accuracy)
print("Predicciones:", y_pred)

Arrojando como resultado:

En base a los resultados que has obtenido, se puede concluir lo siguiente:

Precisión: La precisión de 1.0 indica que el clasificador Naive Bayes ha realizado predicciones correctas para todas las instancias en el conjunto de prueba. Esto significa que todas las muestras en el conjunto de prueba fueron clasificadas correctamente según las características de entrada.

Predicciones: La lista de predicciones muestra la clase predicha para cada instancia en el conjunto de prueba. Cada número representa la clase asignada por el clasificador Naive Bayes. Es decir, [1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0], significa que las primeras dos instancias se predicen como clase 1, la tercera instancia se predice como clase 2, la cuarta instancia se predice como clase 1 nuevamente, y así sucesivamente.

Materiales

Para la implementación de este ejemplo sencillo se utilizaron las librerías:

numpy: Es una biblioteca fundamental para el cálculo numérico en Python. Proporciona una estructura de matriz eficiente para manipular y realizar operaciones matemáticas en arreglos multidimensionales. En el ejemplo, se utiliza para generar datos de entrenamiento y prueba, así como para realizar operaciones matemáticas en los arreglos.

sklearn: Es la abreviatura de scikit-learn, una biblioteca de aprendizaje automático en Python muy popular y ampliamente utilizada. Proporciona una amplia gama de algoritmos y herramientas para el aprendizaje automático, la minería de datos y la estadística. En el ejemplo, se utiliza la clase GaussianNB de scikit-learn, que implementa el algoritmo Naive Bayes Gaussiano.

matplotlib: Es una biblioteca para la creación de visualizaciones en Python. Proporciona una amplia gama de funciones y herramientas para crear gráficos, diagramas y trazar datos. En el ejemplo, se utiliza para trazar los datos generados y las predicciones realizadas por el clasificador Naive Bayes.

Discusión

Finalmente, se enumerarán las ventajas y desafíos que este enfoque presenta y planteando en qué escenarios su utilización sería la decisión más adecuada. Entre sus ventajas, la inferencia bayesiana en el aprendizaje automático permite incorporar conocimiento apriori, manejar naturalmente la incertidumbre, adaptación continua del modelo a medida que se recopilan más datos y propagar la incertidumbre a través de todas las etapas del proceso de modelado. Por otro lado, se debe tener en cuenta que implementar este enfoque trae consigo alta complejidad computacional, a medida que la cantidad de los datos aumenten es muy probable que implementarlo sea computacionalmente, muy costoso. Además de que se requiere especificar un modelo implicando un conocimiento profundo del problema y su dominio ya que debe ser completo incluyendo distribuciones prior y verosimilitud, y finalmente, la elección de los hiperparámetros que un modelo bayesiano a menudo suele tener puede ser muy compleja.

Teniendo esto en cuenta, los casos en donde el mejor camino es aplicar inferencia bayesiana en aprendizaje automático es en aquellos en donde los datos sean escasos, la incertidumbre sea crítica, se tiene conocimiento experto sobre el problema y el dominio y qué recursos se tienen para su implementación.

Bibliografía

Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.

Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., & Rubin, D. B. (2013). Bayesian Data Analysis (3rd ed.). CRC Press.

Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.

Ghahramani, Z. (2015). Probabilistic Machine Learning and Artificial Intelligence. Nature, 521(7553), 452-459.

Barber, D. (2012). Bayesian Reasoning and Machine Learning. Cambridge University Press.

Koller, D., & Friedman, N. (2009). Probabilistic Graphical Models: Principles and Techniques. MIT Press.

Van de Meent, J. W., Paige, B., & Yang, H. (2018). An Introduction to Probabilistic Programming. arXiv preprint arXiv:1809.10756.

Ortega, P. A., & Braun, G. (2018). A Bayesian View of Deep Learning. arXiv preprint arXiv:1801.07710.

Ghosh, J. K., & Delampady, M. (2003). An Introduction to Bayesian Analysis: Theory and Methods. Springer Science & Business Media.

Gelman, A., Roberts, G. O., & Gilks, W. R. (2013). Bayesian Data Analysis (2nd ed.). CRC Press.