XGBoost para regresión

Los resultados de los problemas de regresión son valores continuos o reales. Algunos algoritmos de regresión de uso común son la regresión lineal y los árboles de decisión. Hay varias métricas involucradas en la regresión como el error cuadrático medio (RMSE) y el error cuadrático medio (MAE). Estos son algunos miembros clave de los modelos XGBoost, cada uno juega un papel importante.

  • RMSE: Es la raíz cuadrada del error cuadrático medio (MSE).
  • MAE: Es una suma absoluta de diferencias reales y predichas, pero carece matemáticamente, por eso se usa poco, en comparación con otras métricas.

XGBoost es un enfoque poderoso para construir modelos de regresión supervisados. La validez de esta declaración se puede inferir al conocer su función objetivo (XGBoost) y los alumnos base. La función objetivo contiene una función de pérdida y un término de regularización. Informa sobre la diferencia entre los valores reales y los valores predichos, es decir, qué tan lejos están los resultados del modelo de los valores reales. La función de pérdida más común en XGBoost para problemas de regresión es reg:linear, y la de clasificación binaria es reg:logistics. El aprendizaje por conjuntos implica entrenar y combinar modelos individuales (conocidos como estudiantes base) para obtener una única predicción, y XGBoost es uno de los métodos de aprendizaje por conjuntos. XGBoost espera tener los alumnos base que son uniformemente malos en el resto para que cuando se combinen todas las predicciones,Código: 

python3

# Necessary imports
import numpy as np
import pandas as pd
import xgboost as xg
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
 
# Load the data
dataset = pd.read_csv("boston_house.csv")
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1]
 
# Splitting
train_X, test_X, train_y, test_y = train_test_split(X, y,
                      test_size = 0.3, random_state = 123)
 
# Instantiation
xgb_r = xg.XGBRegressor(objective ='reg:linear',
                  n_estimators = 10, seed = 123)
 
# Fitting the model
xgb_r.fit(train_X, train_y)
 
# Predict the model
pred = xgb_r.predict(test_X)
 
# RMSE Computation
rmse = np.sqrt(MSE(test_y, pred))
print("RMSE : % f" %(rmse))

Producción:

129043.2314

Código: Aprendiz de base lineal 

python3

# Necessary imports
import numpy as np
import pandas as pd
import xgboost as xg
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
 
# Load the data
dataset = pd.read_csv("boston_house.csv")
X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1]
 
# Splitting
train_X, test_X, train_y, test_y = train_test_split(X, y,
                      test_size = 0.3, random_state = 123)
 
# Train and test set are converted to DMatrix objects,
# as it is required by learning API.
train_dmatrix = xg.DMatrix(data = train_X, label = train_y)
test_dmatrix = xg.DMatrix(data = test_X, label = test_y)
 
# Parameter dictionary specifying base learner
param = {"booster":"gblinear", "objective":"reg:linear"}
 
xgb_r = xg.train(params = param, dtrain = train_dmatrix, num_boost_round = 10)
pred = xgb_r.predict(test_dmatrix)
 
# RMSE Computation
rmse = np.sqrt(MSE(test_y, pred))
print("RMSE : % f" %(rmse))

Producción:

 124326.24465

Nota: El conjunto de datos debe convertirse a DMatrix. Es una estructura de datos optimizada que hicieron los creadores de XGBoost. Le da al paquete sus ganancias de rendimiento y eficiencia. La función de pérdida también es responsable de analizar la complejidad del modelo, y si el modelo se vuelve más complejo, existe la necesidad de penalizarlo y esto se puede hacer usando Regularización. Penaliza los modelos más complejos a través de la regularización LASSO (L1) y Ridge (L2) para evitar el sobreajuste. El objetivo final es encontrar modelos simples y precisos. Los parámetros de regularización son los siguientes:

  • gamma: reducción mínima de pérdida permitida para que ocurra una división. Cuanto mayor sea la gamma, menos las divisiones.
    alpha : regularización L1 en pesos de hoja, cuanto mayor sea el valor, mayor será la regularización, lo que hace que muchos pesos de hoja en el alumno base vayan a 0.
  • lambda : regularización de L2 en los pesos de las hojas, esto es más suave que L1 y hace que los pesos de las hojas disminuyan suavemente, a diferencia de L1, que impone fuertes restricciones en los pesos de las hojas.

A continuación se encuentran las fórmulas que ayudan a construir el árbol XGBoost para Regresión. Paso 1: Calcule los puntajes de similitud, ayuda a hacer crecer el árbol.

Similarity Score = (Sum of residuals)^2 / Number of residuals + lambda

Paso 2: Calcule la ganancia para determinar cómo dividir los datos.

Gain = Left tree (similarity score) + Right (similarity score) - Root (similarity score)

Paso 3: podar el árbol calculando la diferencia entre ganancia y gamma (parámetro de complejidad de árbol definido por el usuario) 

Gain - gamma

Si el resultado es un número positivo, entonces no podar y si el resultado es negativo, entonces podar y nuevamente restar gamma del siguiente valor de Ganancia en el árbol. Paso 4: Calcule el valor de salida para las hojas restantes

Output value = Sum of residuals / Number of residuals + lambda

Nota: Si el valor de lambda es mayor que 0, resulta en más poda al reducir las puntuaciones de similitud y da como resultado valores de salida más pequeños para las hojas. Veamos una parte de las matemáticas involucradas en encontrar el valor de salida adecuado para minimizar la función de pérdida Para clasificación y regresión, XGBoost comienza con una predicción inicial generalmente 0.5, como se muestra en el siguiente diagrama. Para saber qué tan buena es la predicción, calcule la función de pérdida usando la fórmula, para el ejemplo dado, resultó ser 196.5. Posteriormente, podemos aplicar esta función de pérdida y comparar los resultados, y comprobar si las predicciones mejoran o no. XGBoost usa esa función de pérdida para construir árboles minimizando la siguiente ecuación:La primera parte de la ecuación es la función de pérdida y la segunda parte de la ecuación es el término de regularización y el objetivo final es minimizar toda la ecuación. Para optimizar el valor de salida para el primer árbol, escribimos la ecuación de la siguiente manera, reemplazamos p(i) con las predicciones iniciales y el valor de salida y dejamos lambda = 0 para cálculos más simples. Ahora la ecuación parece, La función de pérdida para la predicción inicial se calculó antes, que resultó ser 196.5 . Entonces, para el valor de salida = 0 , la función de pérdida = 196.5 . De manera similar, si graficamos el punto para el valor de salida = -1, función de pérdida = 203.5 y para el valor de salida = +1, función de pérdida = 193.5, y así sucesivamente para otros valores de salida y si lo graficamos en el gráfico. obtenemos una parábolacomo estructura. Este es el gráfico de la ecuación en función de los valores de salida. Si lambda = 0, el valor de salida óptimo está en la parte inferior de la parábola donde la derivada es cero. XGBoost utiliza la aproximación de Taylor de segundo orden tanto para la clasificación como para la regresión. La función de pérdida que contiene los valores de salida se puede aproximar de la siguiente manera: la primera parte es la función de pérdida, la segunda parte incluye la primera derivada de la función de pérdida y la tercera parte incluye la segunda derivada de la función de pérdida. La primera derivada está relacionada con Gradient Descent, por lo que aquí XGBoost usa ‘g’ para representar la primera derivada y la segunda derivada está relacionada con Hessian, por lo que está representada por ‘h’en XGBoost. Reemplazando lo mismo en la ecuación: elimine los términos que no contienen el término del valor de salida, ahora minimice la función restante siguiendo los pasos:

  • Tome el valor de salida wrt derivado.
  • Establecer derivada igual a 0 (resolviendo para el punto más bajo en parábola)
  • Resuelva para el valor de salida.
    • g(i) = residuos negativos
    • h(i) = número de residuos

This is the output value formula for XGBoost in Regression. It gives the x-axis coordinate for the lowest point in the parabola.

Publicación traducida automáticamente

Artículo escrito por nikki2398 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 *