Ejemplo de Gradient Boosting

Vamos a probar la implementación de Scikit-Learn del clasificador basado en Gradient Boosting y a compararlo con el árbol de decisión en el que se basa. Utilizaremos para esto el dataset de cáncer de pecho ofrecido por Scikit-Learn.

Comenzamos importando el algoritmo, cargando el dataset y separando los datos en el conjunto de características (X) y el de etiquetas (y).

from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()

X = pd.DataFrame(cancer.data, columns = cancer["feature_names"])
y = cancer["target"]

A continuación, creamos los datasets de entrenamiento y prueba, dejando el porcentaje de muestras por defecto (75% para el conjunto de entrenamiento y 25% para el conjunto de prueba):

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)

Importamos el clasificador basado en el árbol de decisión, lo instanciamos, entrenamos y comprobamos su precisión media:

from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier()
tree.fit(X_train, y_train)
tree.score(X_test, y_test)

0.8811188811188811

Importamos ahora el clasificador gradient boosting, lo instanciamos, entrenamos y comprobamos su precisión media:

from sklearn.ensemble import GradientBoostingClassifier
gbrt = GradientBoostingClassifier(random_state = 0)
gbrt.fit(X_train, y_train)
gbrt.score(X_test, y_test)

0.958041958041958

La mejora, aun con los parámetros por defecto, es sustancial, como podemos ver.