Implementación de la regresión bayesiana

La regresión es una tarea de aprendizaje automático para predecir valores continuos (números reales), en comparación con la clasificación, que se utiliza para predecir valores categóricos (discretos). Para obtener más información sobre los conceptos básicos de la regresión, puede seguir este enlace.

Cuando escuche la palabra ‘bayesiano’, podría pensar en Naive Bayes. Sin embargo, los principios bayesianos también se pueden utilizar para realizar regresiones. En este artículo, analizaremos e implementaremos la regresión de cresta bayesiana , que no es lo mismo que la regresión de cresta normal. Para comprender más sobre la regresión de cresta normal, puede seguir este enlace.

En primer lugar, debe comprender que Bayesian es solo un enfoque para definir y estimar modelos estadísticos. La regresión bayesiana puede ser muy útil cuando no tenemos suficientes datos en el conjunto de datos o los datos están mal distribuidos. La salida de un modelo de regresión bayesiana se obtiene a partir de una distribución de probabilidad, en comparación con las técnicas de regresión regular, en las que la salida se obtiene a partir de un único valor de cada atributo. La salida, ‘y’, se genera a partir de una distribución normal (donde la media y la varianza están normalizadas). El objetivo de la regresión lineal bayesiana no es encontrar los parámetros del modelo, sino encontrar la distribución ‘ posterior ‘ de los parámetros del modelo. No solo la salida y, sino que también se supone que los parámetros del modelo provienen de una distribución. La expresión para Posterior es:
\Large Posterior = {(Likelihood * Prior) \over Normalization}
dónde 

  • Posterior: Es la probabilidad de que ocurra un evento; decir, H, dado que otro evento; decir, E ya ha ocurrido. es decir, P(H | E).
  • Previo: Es la probabilidad de que un evento H haya ocurrido antes de otro evento. es decir, P(H)
  • Verosimilitud: Es una función de verosimilitud en la que se margina alguna variable parámetro.

Esto es en realidad equivalente al teorema de Bayes que dice que 
\Large P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)}
donde A y B son eventos, P(A) es la probabilidad de que ocurra A, y P(A|B) es la probabilidad de que ocurra A dado que el evento B tiene ya ocurrió. P(B), la probabilidad de que ocurra el evento B no puede ser 0 porque ya ocurrió. Si desea obtener más información sobre Naive Bayes y el Teorema de Bayes, puede seguir este enlace.

Mirando la fórmula anterior, podemos ver que, en contraste con el Mínimo Cuadrado Ordinario (OLS), tenemos una distribución posterior para los parámetros del modelo que es proporcional a la probabilidad de los datos multiplicada por la probabilidad previa de los parámetros. A medida que aumenta el número de puntos de datos, el valor de la probabilidad aumentará y será mucho mayor que el valor anterior. En el caso de un número infinito de puntos de datos, los valores de los parámetros convergen a los valores obtenidos de OLS. Entonces, comenzamos nuestro proceso de regresión con una estimación inicial (el valor anterior). A medida que empezamos a cubrir más puntos de datos, nuestro modelo se vuelve menos erróneo . Entonces, para la regresión de la cresta bayesiana, se necesita una gran cantidad de datos de entrenamiento para que el modelo sea preciso.

Ahora, tengamos una breve descripción general del lado matemático de las cosas. En un modelo lineal , si ‘y’ es el valor predicho, entonces 
\Large \hat{y}(w, x) = w_0 + w_1 x_1 + ... + w_p x_p
‘w’ es el vector w. w consta de w 0 , w 1 , … . ‘x’ es el valor de los pesos. 
\Large w = (w_1, ..., w_p)
Entonces, ahora para que la regresión bayesiana obtenga un modelo completamente probabilístico, se supone que la salida ‘y’ es la distribución gaussiana alrededor de X w como se muestra a continuación: 
\Large p(y|X, w, \alpha) = \mathcal{N}(y|X w, \alpha)
donde alfa es un hiperparámetro para la distribución Gamma anterior. Se trata como una variable aleatoria estimada a partir de los datos. Aquí, la implementación de la regresión de la cresta bayesiana se muestra a continuación. La expresión matemática sobre la que trabaja la regresión de la cresta bayesiana es: 
\Large p(w|\lambda) = \mathcal{N}(w|0, \lambda^{-1}\mathbf{I}_{p})
dondealfa es el parámetro de forma para la distribución Gamma anterior al parámetro alfa y lambda es el parámetro de forma para la distribución Gamma anterior al parámetro Lambda.
Esta es solo una breve introducción a las matemáticas que se encuentran detrás de un regresor de cresta bayesiana. El objetivo de este artículo es brindarle una breve descripción general de alto nivel de la regresión bayesiana; cuándo usarlo, ventajas, desventajas y mostrarle cómo implementarlo. Entonces, acabamos de darle una breve introducción a las matemáticas detrás de la regresión bayesiana y la regresión Bayesian Ridge. No profundizaremos mucho en cómo funcionan las matemáticas.

Ventajas de la regresión bayesiana: 

  • Muy eficaz cuando el tamaño del conjunto de datos es pequeño.
  • Particularmente adecuado para el aprendizaje en línea (los datos se reciben en tiempo real), en comparación con el aprendizaje por lotes, donde tenemos todo el conjunto de datos en nuestras manos antes de comenzar a entrenar el modelo. Esto se debe a que la regresión bayesiana no necesita almacenar datos.
  • El enfoque bayesiano es un enfoque probado y probado y es muy sólido matemáticamente. Entonces, uno puede usar esto sin tener ningún conocimiento previo adicional sobre el conjunto de datos.

Desventajas de la regresión bayesiana:  

  • La inferencia del modelo puede llevar mucho tiempo.
  • Si hay una gran cantidad de datos disponibles para nuestro conjunto de datos, el enfoque bayesiano no vale la pena y el enfoque frecuentista regular hace un trabajo más eficiente.

Implementación de la regresión bayesiana mediante Python: 
en este ejemplo, realizaremos la regresión bayesiana de cresta . Sin embargo, el enfoque bayesiano se puede usar con cualquier técnica de regresión, como la regresión lineal, la regresión de lazo, etc. Usaremos la biblioteca scikit-learn para implementar la regresión de cresta bayesiana. Usaremos el conjunto de datos de Vivienda de Boston que tiene información sobre el valor medio de una casa en un área de Boston. Puede obtener más información sobre este conjunto de datos aquí . Para la evaluación, utilizaremos la puntuación r2. El mejor valor posible de la puntuación r2 es 1,0. Si el modelo hace una predicción constante independientemente de los atributos, el valor de la puntuación r2 es 0. La puntuación r2 también puede ser negativa para modelos aún peores. Para obtener más información sobre las puntuaciones r2, puede seguir el enlace aquí.

Pero antes de pasar al código, debe comprender los parámetros importantes de un regresor de cresta bayesiana:  

  • n_iter : Número de iteraciones. Valor predeterminado = 100.
  • tol : Cuándo parar el algoritmo dado que el modelo ha convergido. Valor predeterminado = 1e-3.
  • alpha_1 : Parámetro de forma de la línea regresora (distribución Gamma) sobre el parámetro alfa (utilizado para la regularización). Valor predeterminado = 1e-6.
  • alpha_2 : Parámetro de escala inversa para la distribución Gamma sobre el parámetro alfa. Valor predeterminado = 1e-6.
  • lambda_1 : Parámetro de forma de la distribución Gamma sobre el parámetro lambda. Valor predeterminado = 1e-6.
  • lambda_2 : Parámetro de escala inversa de la distribución Gamma sobre el parámetro lambda. Valor predeterminado = 1e-6.

NOTA: Es posible que este código no funcione en un IDE en línea. Ejecútelo en Google Colab o en su máquina local.

Código:  

Python3

# Importing modules that are required
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.linear_model import BayesianRidge
   
# Loading dataset
dataset = load_boston()
X, y = dataset.data, dataset.target
   
# Splitting dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.15, random_state = 42)
   
# Creating and training model
model = BayesianRidge()
model.fit(X_train, y_train)
   
# Model making a prediction on test data
prediction = model.predict(X_test)
   
# Evaluation of r2 score of the model against the test set
print(f"r2 Score Of Test Set : {r2_score(y_test, prediction)}")

Producción: 

r2 Score Of Test Set : 0.7943355984883815

Obtenemos una puntuación de r2 de aproximadamente 0,7934 en el conjunto de pruebas utilizando el regresor de cresta bayesiana con todos los parámetros predeterminados. Esta es una puntuación aceptable. Sin embargo, puede modificar los parámetros alfa y lambda discutidos anteriormente para obtener mejores resultados para su conjunto de datos. 

Conclusión: 
ahora que sabe cómo funcionan los regresores bayesianos y cuándo usarlos, debe intentar usarlos la próxima vez que desee realizar una tarea de regresión, especialmente si el conjunto de datos es pequeño. 

Referencias:  

Publicación traducida automáticamente

Artículo escrito por alokesh985 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *