ML | XGBoost (aumento de gradiente extremo)

XGBoostes una implementación de árboles de decisión Gradient Boost. Esta biblioteca fue escrita en C++. Es un tipo de biblioteca de software que fue diseñada básicamente para mejorar la velocidad y el rendimiento del modelo. Recientemente ha sido dominante en el aprendizaje automático aplicado. Los modelos XGBoost dominan en gran medida en muchas competiciones de Kaggle. En este algoritmo, los árboles de decisión se crean en forma secuencial. Los pesos juegan un papel importante en XGBoost. Se asignan pesos a todas las variables independientes que luego se introducen en el árbol de decisión que predice los resultados. El peso de las variables predichas incorrectamente por el árbol aumenta y las variables luego se alimentan al segundo árbol de decisión. Estos clasificadores/predictores individuales luego se agrupan para dar un modelo fuerte y más preciso. Puede funcionar en problemas de regresión, clasificación, clasificación y predicción definida por el usuario.

Características de XGBoost La biblioteca está enfocada con láser en la velocidad computacional y el rendimiento del modelo, como tal, hay pocos adornos. Características del modelo Se admiten tres formas principales de aumento de gradiente:

  • Aumento de gradiente
  • Aumento de gradiente estocástico
  • Aumento de gradiente regularizado

características del sistema

  • Para el uso de una variedad de entornos informáticos, esta biblioteca proporciona:
  • Paralelización de la construcción del árbol.
  • Computación distribuida para entrenar modelos muy grandes
  • Optimización de caché de estructuras de datos y algoritmo

Mejoras/optimizaciones de XGBoost

XGBoost presenta varias optimizaciones integradas para acelerar el entrenamiento cuando se trabaja con grandes conjuntos de datos, además de su método único de generación y poda de árboles. Aquí hay un puñado de los más significativos:

  • Algoritmo codicioso aproximado: en lugar de evaluar cada división candidata, este algoritmo emplea cuantiles ponderados para encontrar la mejor división de Nodes.
  • Acceso Cash-Aware: XGBoost almacena datos en la memoria caché de la CPU.
  • Sparsity: Aware Split Finding calcula la ganancia colocando observaciones con valores faltantes en la hoja izquierda cuando faltan algunos datos. Luego repite el proceso colocándolos en la hoja apropiada y seleccionando el escenario con la Ganancia más alta.

Pasos para instalar Windows XGBoost usa submódulos de Git para administrar las dependencias. Entonces, cuando clone el repositorio, recuerde especificar la opción recursiva:

git clone --recursive https://github.com/dmlc/xgboost

Para los usuarios de Windows que usan las herramientas de Github, puede abrir el git-shell y escribir el siguiente comando:

git submodule init
git submodule update

OSX (Mac) Primero, obtenga gcc-8 con Homebrew ( https://brew.sh/ ) para habilitar subprocesos múltiples (es decir, usar múltiples subprocesos de CPU para entrenamiento). El compilador predeterminado de Apple Clang no es compatible con OpenMP, por lo que usar el compilador predeterminado habría deshabilitado los subprocesos múltiples.

brew install gcc@8

Luego instale XGBoost con pip:

pip3 install xgboost

Es posible que deba ejecutar el comando con el indicador de usuario si se encuentra con errores de permiso. 

Ejemplo: Código: código de Python para clasificador XGB 

Python3

# Importing the libraries
from sklearn.metrics import confusion_matrix
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
 
# Importing the dataset
dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values
 
# Encoding categorical data
labelencoder_X_1 = LabelEncoder()
 
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
 
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features=[1])
 
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]
 
# Splitting the dataset into the Training set and Test set
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=0)
 
# Fitting XGBoost to the training data
my_model = xgb.XGBClassifier()
my_model.fit(X_train, y_train)
 
# Predicting the Test set results
y_pred = my_model.predict(X_test)
 
# Making the Confusion Matrix
cm = confusion_matrix(y_test, y_pred)

Producción:

Accuracy will be about 0.8645

Publicación traducida automáticamente

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