Si las cosas no salen bien en el modelado predictivo, usa XGboost. El algoritmo XGBoost se ha convertido en el arma definitiva de muchos científicos de datos.
Es un algoritmo altamente sofisticado, lo suficientemente poderoso como para tratar todo tipo de irregularidades de datos. En este artículo, descubrirá XGBoost y obtendrá una introducción suave de lo que es, de dónde vino y cómo puede aprender más.
Después leyendo este post sabrás:
- ¿Qué es XGBoost?
- ¿Qué hace que XGBoost sea tan popular?
- ¿Cómo funciona XGBoost?
¿Qué árbol de decisiones es? ¿Cómo funciona?
- ¿Qué es un estudiante débil y un estudiante fuerte?
- ¿Cómo se lleva a cabo Boosting?
- ¿Cómo usar la validación cruzada de k-fold utilizando XGBoost?
- ¿Cuándo usar XGBoost? ¿Y cuándo no usar XGBoost?
Dos términos comunes que se usan en ML son Empaquetado y refuerzo
Empaquetado: Es un enfoque en el que se toman muestras aleatorias de datos, se crean algoritmos de aprendizaje y se utilizan medios sencillos para encontrar embalajes. Probabilidades.
Refuerzo : El refuerzo es similar, sin embargo, la selección de la muestra se realiza de manera más inteligente. Posteriormente le damos más peso a las observaciones difíciles de clasificar.
La biblioteca más popular en machine learning supervisado . XGBoost es una biblioteca optimizada de aumento de gradiente distribuida diseñada para ser altamente eficiente flexible y portátil . Implementa algoritmos de machine learning en el marco Gradient Boosting . XGBoost proporciona un refuerzo de árbol paralelo (también conocido como GBDT, GBM) que resuelve muchos problemas de ciencia de datos de una manera rápida y precisa. El mismo código se ejecuta en el entorno distribuido principal (Hadoop, SGE, MPI) y puede resolver problemas más allá de miles de millones de ejemplos.
¿Qué hace que XGBoost sea tan popular?
- La velocidad y el rendimiento
- del algoritmo central es paralelizable Tiene algoritmos de resolución de modelos lineales y de aprendizaje de árboles. Entonces, lo que lo hace rápido es su capacidad para realizar cálculos paralelos en una sola máquina
- rendimiento de vanguardia en muchas tareas de ML
CARACTERÍSTICAS – XGBOOST
- Velocidad: puede realizar automáticamente cálculos paralelos Windows y Linux, con OpenMP. Generalmente es 10 veces más rápido que la gbm clásica.
- Tipo de entrada: toma varios tipos de datos de entrada:
- Matriz densa: Matriz densa de R, es decir, matriz ;
- Matriz dispersa: Matriz dispersa de R, es decir, matriz :: dgC Matriz;
- Archivo de datos: archivos de datos locales;
- xgb.DMatrix: su propia clase (recomendado).
- Sparsity: acepta entradas dispersas tanto para el reforzador de árboles como para el reforzador lineal, y está optimizado para entradas dispersas;
- Personalización: admite funciones objetivo personalizadas y funciones de evaluación.
- biblioteca distribuida optimizada de gradiente
- escrita originalmente para c ++ (después de ganar un concurso, esta biblioteca es adoptada por la comunidad de machine learning)
- tiene API en varios idiomas:
- Python [19659019] R
- Julia
- Scala
- Java
¿Cómo funciona XGBoost?
XGBoost es una implementación de código abierto popular y eficiente del algoritmo de gradiente de árboles reforzados. Gradient boosting es un algoritmo de aprendizaje supervisado, que intenta predecir con precisión una variable objetivo combinando las estimaciones de un conjunto de modelos más simples y débiles.
Cuando se usa gradiente boosting para la regresión, el es débil learners son árboles de regresión, y cada regresión traemapsea un punto de datos de entrada a una de sus hojas que contiene una puntuación continua. XGBoost minimiza una función objetivo regularizada (L1 y L2) que combina una función de pérdida convexa (basada en la diferencia entre las salidas previstas y objetivo) y un término de penalización para la complejidad del modelo (en otras palabras, las funciones del árbol de regresión). La capacitación continúa de manera iterativa, agregando nuevos árboles que predicen los residuos o errores de árboles anteriores que luego se combinan con árboles anteriores para hacer la predicción final. Se llama aumento de gradiente porque utiliza un algoritmo de descenso de gradiente para minimizar la pérdida al agregar nuevos modelos. (Fuente: documentación de AWS)
Para profundizar en ella, también puede leer esto XGBoost: Un sistema de crecimiento de árbol escalable papel
Veamos un ejemplo básico de cómo usa XGBoost
Nota- Asegúrate de que tienes instalado XGBoost. Si no, consulte la guía de instalación . Para usuarios de Anaconda Guía de instalación .
Parámetros de XGBoost
Antes de ejecutar XGBoost, debemos establecer tres tipos de parámetros: parámetros generales, parámetros de refuerzo y parámetros de tareas.
- Parámetros generales relacionar con qué refuerzo estamos usando para impulsar, comúnmente árbol o modelo lineal
- Los parámetros de refuerzo dependen de qué refuerzo ha elegido
- Los parámetros de la tarea de aprendizaje deciden el aprendizaje guión. Por ejemplo, las tareas de regresión pueden usar diferentes parámetros con las tareas de clasificación. Para más información, consulte Parámetros de XGBoost .
Parámetros -------- 1.params: dict Parámetros de refuerzo.
2. dtrain: DMatrix Datos a entrenar.
3. num_boost_round: int Número de iteraciones de refuerzo.
4. evals: lista de pares (DMatrix, string) Lista de elementos que se evaluarán durante el entrenamiento, esto permite al usuario ver el rendimiento en el conjunto de validación.
5. obj: function Función objetivo personalizada.
6. feval: función función de evaluación personalizada.
7. maximizar: bool Si se debe maximizar feval.
8. early_stopping_rounds: int Activa la detención temprana. El error de validación debe disminuir al menos cada ronda (s) para continuar el entrenamiento. Requiere al menos un elemento en evals. Si hay más de uno, utilizará el último. Devuelve el modelo de la última iteración (no la mejor). Si se produce una parada temprana, el modelo tendrá tres
9 adicionales. campos: bst.best_score, bst.best_iteration y bst.best_ntree_limit. (Utilice bst.best_ntree_limit para obtener el valor correcto si num_parallel_tree y / o num_class aparecen en los parámetros)
10. evals_result: dict Este diccionario almacena los resultados de la evaluación de todos los elementos en la lista de observación. Ejemplo: con una lista de observación que contiene [(dtest,'eval'), (dtrain,'train')] y un parámetro que contiene (& # 039; eval_metric & # 039 ;: & # 039; logloss & # 039;), el ** evals_result ** devuelve .. code-block :: none {& # 039; train & # 039 ;: {& # 039; logloss & # 039 ;: ['0.48253', '0.35953']}, & # 039; eval & # 039 ;: {& # 039; logloss & # 039 ;: ['0.480385', '0.357756']}} 11. verbose_eval: bool o int Requiere al menos un elemento en evals. Si ** verbose_eval ** es Verdadero, la métrica de evaluación en el conjunto de validación se imprime en cada etapa de impulso. Si ** verbose_eval ** es un número entero, la métrica de evaluación en el conjunto de validación se imprime en cada etapa ** ** verbose_eval ** boosting. También se imprime la última etapa de impulso / la etapa de aumento encontrada utilizando ** early_stopping_rounds **. Ejemplo: con `` verbose_eval = 4`` y al menos un elemento en evals, se imprime una métrica de evaluación cada 4 etapas de impulso, en lugar de cada etapa de impulso. learning_rates: list or function (en desuso: use la API de devolución de llamada) Lista de la tasa de aprendizaje para cada ronda de impulso o una función personalizada que calcula eta en términos de el número actual de la ronda y el número total de la ronda de impulso (por ejemplo, produce una caída en la tasa de aprendizaje)
12. xgb_model: nombre de archivo del modelo xgb almacenado o & # 039; Booster & # 039; ejemplo El modelo Xgb se carga antes del entrenamiento (permite continuar el entrenamiento).
13. devoluciones de llamada: lista de funciones de devolución de llamada Lista de funciones de devolución de llamada que se aplican al final de cada iteración. Es posible utilizar devoluciones de llamada predefinidas utilizando el módulo xgb.callback.
Ejemplo: [xgb.callback.reset_learning_rate(custom_rates)]
[Nota – Incluí el código principal solo para demostrar cómo se usa XGBoost. Para ver desde el principio, consulte Github (el enlace se proporciona al final del artículo).]
Código-
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 1 )
En [10]:
impresión (X_train.shape) impresión (X_test.shape) impresión (y_train.shape) impresión (y_test.shape)
Fuera [10]:
(435759, 54) (145253, 54) (435759,) (145253,)
In [11]:
xgb_cl = xgb.XGBClass n_estimators = 15, learning_rate = 0.5, max_delta_step = 5)
In [12]:
xgb_cl.fit (X_train, y_train)
Out
XGBClassifier (base_score) & # 039; gbtree & # 039 ;, colsample_bylevel = 1, colsample_bytree = 1, gamma = 0, learning_rate = 0.5, max_delta_step = 5, max_depth = 3, min_child_weight = 1, missing = None, n_estimators = None , n_jobs = 1, nthread = None, objectivo = & # 039; multi: softprob & # 039 ;, random_state = 0, reg_alpha = 0, reg_lambda = 1, scale_pos_weight = 1, seed = None, silent = True, subsample = 1)
In [13]:
preds = xgb_cl.predict (X_test)
In [14]:
# Calcular la precisión: precisión precisión = flotador (np.sum (preds == y_test)) / y_test.shape [0] print ("exactitud: % f "% (precisión))
precisión: 0.735888
Por lo general, XGBoost Utilizado con árboles como aprendiz de base. Entonces, ¿necesitamos entender qué árbol de decisión es? ¿Cómo funciona?
Los árboles de decisión son algoritmos de aprendizaje supervisados que se utilizan para las tareas de clasificación y de regresión en las que nos concentraremos en la clasificación en esta primera parte de nuestro tutorial de árbol de decisión.
Los árboles de decisión se asignan a la información Algoritmos basados en el aprendizaje que utilizan diferentes medidas de ganancia de información para el aprendizaje. Podemos usar árboles de decisión para problemas en los que tenemos entradas continuas pero también categóricas y funciones de destino. La idea principal de los árboles de decisión es encontrar aquellas características descriptivas que contienen la mayor parte de la “información” con respecto a la característica de destino y luego dividir el conjunto de datos a lo largo de los valores de estas características, de modo que los valores de la característica de destino para los sub_datasets resultantes sean lo más puros posible →
Se dice que la característica descriptiva que deja la característica de destino más puramente es la más informativa. Este proceso de búsqueda de la característica “más informativa” se realiza hasta que cumplimos con los criterios de detención en los que finalmente terminamos en los llamados nodos de hoja . Los nodos de hoja contienen las predicciones que haremos para las nuevas instancias de consulta presentadas a nuestro modelo capacitado. Esto es posible ya que el modelo ha aprendido la estructura subyacente de los datos de entrenamiento y, por lo tanto, dado algunos supuestos, puede hacer predicciones sobre el valor de la característica objetivo (clase) de instancias de consulta invisibles.
Un árbol de decisión contiene principalmente un nodo raíz nodos interiores y nodos de hoja que luego están conectados por ramas .
Árbol de decisión como aprendiz de la base
- Base learner – Algoritmo de aprendizaje individual en un algoritmo conjunto
- Compuesto de una pregunta binaria (sí o no)
- la predicción ocurre en “hojas” [19659100] Los árboles de decisión se construyen de forma iterativa (una decisión a la vez). Hasta que se cumpla un criterio de parada. Durante la construcción, el árbol se construye una división a la vez y la forma en que se selecciona una división (es decir, en qué función se dividirá y en la que el rango de valores de la entidad se dividirá) puede variar, pero implica elegir un punto de división que separe el el valor objetivo es mejor (más cada categoría en grupos que están dominados cada vez más por solo una categoría) hasta que todos o casi todos los valores dentro de la división dada son exclusivamente de una categoría u otra.Al usar este proceso, cada hoja del árbol de decisión tendrá La categoría única en la mayoría o debe ser exclusivamente de una categoría. Los árboles de decisión individuales generalmente son de bajo sesgo y alta varianza. Es decir, son buenos para aprender a relacionarse con los datos en los que los entrena, pero tienden a sobreponerse a los datos que usa para entrenarlos y, por lo general, generalizan mal los datos nuevos.XGBoost utiliza un tipo de árbol de decisiones ligeramente diferente, llamado árbol de Clasificación y Regresión (o CART ). Mientras que para el árbol de decisión descrito anteriormente, los nodos de hoja siempre contienen valores de decisión. Los árboles CART contienen una puntuación de valor real en cada hoja, independientemente de si se usan en la clasificación o regresión. Las puntuaciones en valores reales pueden luego ser umbrales para convertirlas en categorías para el problema de clasificación si es necesario.En [15]:
de sklearn.tree import DecisionTreeClassifier [19659055] # Crea los conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.20, random_state = 1)
# Instantiate the classifier: dt_clff4] ] dt_clf_4 = DecisionTreeClassifier (max_depth = 4)
# Ajusta el clasificador al conjunto de entrenamiento dt_clf_4.fit (X_train, y_train)
# Predict las etiquetas en este cuadro
y_pred_4 = dt_clf_4.predict (X_test)# Calcule la precisión de las predicciones: precisión precision = float (np.sum (y_pred_4 == y_test)) / y_test.shape [npsum(19_pcc_cc] imprimir ("precisión:", precisión)
Salida [15]:
precisión: 0.7004036040377615
Ahora, hemos revisado los aspectos básicos de una decisión tr ee Ahora, hablemos sobre el concepto central que le da a XGBoost su rendimiento de vanguardia.
Boosting no es un algoritmo específico de machine learning, pero el concepto se puede aplicar a un conjunto de modelos de machine learning. . Entonces, es una especie de meta-algoritmo. Específicamente, es un meta-algoritmo conjunto que se usa principalmente para reducir cualquier variación de un solo alumno y para convertir a muchos alumnos débiles en un estudiante arbitrariamente fuerte.
Ahora, ¿qué es un estudiante débil y un estudiante fuerte?
Un estudiante débil es cualquier algoritmo de machine learning que sea solo ligeramente mejor que el azar. Por ejemplo, El árbol de decisión que puede predecir algún resultado con un poco más de frecuencia que la aleatoriedad pura se consideraría un alumno débil. La idea principal que permite que XGBoost funcione es el hecho de que puede utilizar el impulso para convertir una colección de estudiantes débiles en estudiantes fuertes. Mientras que Strong learner es un algoritmo que puede ajustarse para lograr un rendimiento arbitrariamente bueno para algún problema de aprendizaje supervisado.
¿Cómo se realiza el Impulso?
Aprendizaje iterativo de una serie de modelos débiles en subconjuntos de los datos que tiene a la mano, y ponderando cada una de sus predicciones de acuerdo con el desempeño de cada estudiante débil. Luego combinamos todas las predicciones de los aprendices débiles multiplicadas por sus ponderaciones para obtener una predicción ponderada final única que es mucho mejor que cualquiera de las predicciones individuales en sí mismas.
A continuación, se explica la explicación de Documentación XGBoost.
Nosotros clasifique a los miembros de una familia en diferentes hojas y asigne la puntuación en la hoja correspondiente. Un CARRITO es un poco diferente de los árboles de decisión, en los que la hoja solo contiene valores de decisión. En CART, una puntuación real está asociada con cada una de las hojas, lo que nos da interpretaciones más ricas que van más allá de la clasificación. Esto también permite un enfoque de optimización basado en principios, como veremos en una parte posterior de este tutorial.
Por lo general, un solo árbol no es lo suficientemente fuerte como para usarlo en la práctica. Lo que realmente se usa es el modelo de conjunto, que suma la predicción de varios árboles.
Este es un ejemplo de un conjunto de dos árboles. Las puntuaciones de predicción de cada árbol individual se resumen para obtener la puntuación final. Si nos fijamos en el ejemplo, un hecho importante es que los dos árboles intentan complementarse entre sí. Matemáticamente, podemos escribir nuestro modelo en la forma
donde K es el número de árboles, f es una función en el espacio funcional F y F es el conjunto de todos los CART posibles. La función objetivo que se optimiza está dada por
Ahora viene una pregunta difícil: ¿cuál es el modelo utilizado en bosques aleatorios? Conjuntos de árboles! Así que los bosques aleatorios y los árboles reforzados son en realidad los mismos modelos; La diferencia surge de cómo los entrenamos. Esto significa que, si escribe un servicio predictivo para conjuntos de árboles, solo necesita escribir uno y debería funcionar tanto para bosques aleatorios como para árboles con gradiente potenciado. (Vea Treelite para ver un ejemplo real.) Un ejemplo de por qué los elementos de la roca de aprendizaje supervisado.
Ya que trabajaremos con la API de aprendizaje de XGBoost para la evaluación del modelo, a continuación, le sugerimos brevemente. un ejemplo que muestra cómo la evaluación del modelo que usa la validación cruzada funciona con la API de aprendizaje de XGBoost, que es diferente de la [scikit-learnAPI
]La validación cruzada es un método robusto para estimar el rendimiento estimado de un modelo de machine learning en datos invisibles generando muchas divisiones de trenes / pruebas no superpuestas en sus datos de entrenamiento e informando el rendimiento promedio de las pruebas en todas las divisiones de datos.
Si planea usar XGBoost en un conjunto de datos que tiene características categóricas es posible que desee considerar la posibilidad de aplicar alguna codificación (como la codificación instantánea) a dichas características antes de entrenar el modelo. Además, si tiene algunos valores faltantes como NA en el conjunto de datos, puede o no hacer un tratamiento por separado, ya que XGBoost es capaz de manejar los valores perdidos internamente.
In [26]:
de sklearn.metrics import mean_squared_error X, y = data.iloc [:,:-1]data.iloc [:,-1]
data_dmatrix = xgb.DMatrix (data = X) y)
Los hiperparámetros de XGBoost En este punto, antes de construir el modelo, debe conocer los parámetros de ajuste que proporciona XGBoost. Bueno, hay una gran cantidad de parámetros de ajuste para los alumnos basados en árboles en XGBoost y puedes leer todo sobre ellos aquí. Pero los más comunes que debe saber son:
- learning_rate: reducción de tamaño de paso utilizada para evitar el sobreajuste. El rango es [0,1]
- max_depth: determina la profundidad con la que se permite que crezca cada árbol durante cualquier ronda de impulso.
- submuestra: porcentaje de muestras utilizadas por árbol. Un valor bajo puede llevar a un desajuste.
- colsample_bytree: porcentaje de características utilizadas por árbol. Un valor alto puede llevar a un ajuste excesivo.
- n_estimators: número de árboles que desea construir.
- objetivo: determina la función de pérdida que se utilizará como reg: linear para problemas de regresión, reg: logistic para problemas de clasificación con solo decisión, binario: logística para problemas de clasificación con probabilidad.
XGBoost también admite parámetros de regularización para penalizar los modelos a medida que se vuelven más complejos y los reduce a modelos simples (parsimoniosos).
- gamma : controla si un nodo dado se dividirá basado en la reducción esperada en la pérdida después de la división. Un valor más alto conduce a menos divisiones. Compatible solo para aprendices basados en árboles.
- alpha : L1 regularización en el peso de las hojas. Un gran valor lleva a una mayor regularización.
- lambda : La regularización de L2 en el peso de las hojas y es más suave que la regularización de L1.
También vale la pena mencionar que aunque esté utilizando árboles como sus aprendices de base, También puede utilizar los aprendices de base lineal relativamente menos populares de XGBoost y otro aprendiz de árbol conocido como dardo. Todo lo que tienes que hacer es establecer el parámetro de refuerzo en gbtree (predeterminado), gblinear o dart.
Ahora, crearé el conjunto de prueba y tren para la validación cruzada de los resultados utilizando la función train_test_split del módulo de selección de modelos de sklearn con Tamaño de prueba de tamaño igual al 20% de los datos. Además, para mantener la reproducibilidad de los resultados, también se asigna un estado aleatorio.
Código-
En [27]:
X_train, X_test, y_train = y_test = train_test_split (X, y, test_size = 0.2, random_state = 123)
In [28]:
xg_reg = xgb.XGBRegressor (objetivo = & # 039; reg: linear & # 039 ;, colsample_bytree = 0.3, learning_rate = 0.1, max_depth = 5 , alpha = 10, n_estimators = 10)
In [29]:
xg_reg.fit (X_train, y_train)
preds = xg_reg.predict (X_test)
In [30]: [30]: [30] rmse = np.sqrt (mean_squared_error (y_test, preds))
print (“RMSE: % f [“% (rmse))Out [30]:
RMSS : 10.868649
Validación cruzada con k-fold usando XGBoost
Para construir modelos más robustos, es común realizar una validación en cruz con k-fold donde todas las entradas en el conjunto de datos de entrenamiento original se usan tanto para el entrenamiento En cuanto a la validación. Además, cada entrada se utiliza para la validación solo una vez. XGBoost admite la validación cruzada de k-fold a través del método cv (). Todo lo que tiene que hacer es especificar el parámetro de n pliegues, que es el número de conjuntos de validación cruzada que desea construir. Además, admite muchos otros parámetros como:
- num_boost_round: denota la cantidad de árboles que construyes (de manera análoga a [n_estimadores)
- métricas: indica las métricas de evaluación que se observarán durante el CV
- as_pandas: para devolver los resultados a pandas DataFrame.
- early_stopping_rounds: finaliza el entrenamiento del modelo antes si la métrica de espera (“rmse” en nuestro caso) no mejora para un número dado de rondas.
- semilla: para la reproducibilidad de los resultados. [19659147] Esta vez crearé parámetros del diccionario de hiperparámetros que contienen todos los hiperparámetros y sus valores como pares clave-valor, pero excluiré los n_estimadores del diccionario de hiperparámetros porque usaré num_boost_rounds en su lugar.
Lo haré use estos parámetros para construir un modelo de validación cruzada de 3 veces invocando el método cv () de XGBoost y almacene los resultados en un DataFrame de cv_results. Tenga en cuenta que aquí estamos utilizando el objeto Dmatrix que creó anteriormente.
En [31]:
params = {"object": "reg: linear", & # 039; colsample_bytree & # 039 ;: 0.3, & # 039; learning_rate & # 039 ;: 0.1, & # 039; max_depth & # 039 ;: 5, & # 039; alpha & # 039 ;: 10}
cv_results = xgb.cv (dtrain = data_dmatrix, params = params , nfold = 3, num_boost_round = 50, early_stopping_rounds = 10, metrics = "rmse", as_pandas = True seed = 123)
Out
src / tree / updater_prune.cc: 74: final de poda de árbol, 1 raíces, 4 nodos adicionales, 0 nodos de poda, max_depth = 2 [20:29:54] src / tree / updater_prune.cc: 74: final de poda de árbol, 1 raíces, 4 extra nodos, 0 nodos eliminados, max_depth = 2 [20:29:54] src / tree / updater_prune.cc: 74: final de la poda del árbol, 1 raíces, 4 nodos adicionales, 0 nodos eliminados, max_depth = 2
In [32]:
] cv_results.head ()
Salida [32]:
Entrada [33]:
impresión ((cv_results ["test-rmse-mean"]). cola (1)) [19659074] Fuera [33]:
49 3.988943 Nombre: test-rmse-mean, dtype: float64
Puede ver que su RMSE para la predicción de precios se ha reducido en comparación con la última vez y salió a estar alrededor de 4.03 por 1000 $. Puede alcanzar un RMSE aún más bajo para un conjunto diferente de hiper parámetros.
¿Cuándo debo usar XGBoost?
- Debe considerar usar XGBoost para cualquier tarea de machine learning supervisado que cumpla con los siguientes criterios: [19659019] Tiene un gran número de ejemplos de entrenamiento (los grandes pueden variar, pretendo significar el conjunto de datos que tiene pocas características y al menos 2000 ejemplos)
- Sin embargo, en general, siempre que el número de características en su conjunto de entrenamiento sea menor que el número de ejemplos que tiene.
El número de funciones <número de ejemplos de entrenamiento
- XGBoost pretende hacerlo bien, cuando tiene una combinación de características categóricas y numéricas o cuando solo tiene características numéricas. [19659147] ¿Cuándo no debería usar XGBoost?
- XGBoost no es ideal para el reconocimiento de imágenes, la visión por computadora, la PNL y los problemas de comprensión, este tipo de problema se puede abordar mucho mejor con enfoques de Aprendizaje profundo. [19659019] Nunca vayas por X GBoost cuando tienes un conjunto de entrenamiento muy pequeño
Espero que hayas encontrado útil este artículo y ahora te sientas más confiado para aplicar XGBoost en la resolución de un problema de ciencia de datos.
¿Te ha gustado este artículo? ¿Te gustaría compartir algunos otros hacks que implementas al hacer modelos XGBoost? Siéntase libre de dejar una nota en los comentarios a continuación y estaré encantado de discutir.
Código fuente – GitHub [19659014] Conjunto de datos utilizado – Tipo de cobertura forestal