sklearn.ensemble.GradientBoostingClassifier

class sklearn.ensemble.GradientBoostingClassifier

Potenciación de gradiente para clasificación.

La potenciación de gradiente crea un modelo aditivo de forma progresiva por etapas; permite la optimización de funciones de perdida arbitrariamente diferenciables. En cada etapa los árboles de regresión n_classes_ son encajados en el gradiente negativo de la función de perdida de desviación binomial o multinomial. La clasificación binaria es un caso especial donde solo un árbol de regresión es inducido.

Más información en el Manual de usuario.

Parámetros
loss{“deviance”, “exponential”}, default=”deviance”

La función de pérdida a optimizar. “deviance” se refiere a la desviación (= regresión logística) para la clasificación con resultados probabilistas. Para loss “exponential” la potenciación de gradiente recupera el algoritmo AdaBoost.

learning_ratefloat, default=0.1

La tasa de aprendizaje reduce la contribución de cada árbol por learning_rate. Hay una compensación entre learning_rate y n_estimators.

n_estimatorsint, default=100

La cantidad de etapas de potenciación a realizar. La potenciación de gradiente es bastante robusta al sobre-ajuste, por lo que un número grande normalmente resultará en mejor rendimiento.

subsamplefloat, default=1.0

La fracción de muestras a ser usadas para ajustar los aprendices base individuales. Si es menor que 1.0 esto resulta en Potenciación de Gradiente Estocástica. subsample interactúa con el parámetro n_estimators. Escoger subsample < 1.0 lleva a una reducción de varianza y un aumento en el sesgo.

criterion{“friedman_mse”, “mse”, “mae”}, default=”friedman_mse”

La función para medir la calidad de una división. Los criterios soportados son “friedman_mse” para el error cuadrático medio con puntuación de mejora por Friedman, “mse” para error cuadrático medio, y “mae” para el error absoluto medio. El valor predeterminado de “friedman_mse” es generalmente el mejor ya que puede proveer una mejor aproximación en algunos casos.

Nuevo en la versión 0.18.

Obsoleto desde la versión 0.24: criterion='mae' está obsoleto y será eliminado en la versión 1.1 (renombrado de 0.26). Usa criterion='friedman_mse' o 'mse' en su lugar, ya que los árboles deben usar un criterio de mínimos cuadrados en la potenciación de Gradiente.

min_samples_splitentero o flotante, default=2

El número mínimo de muestras requeridas para dividir un nodo interno:

  • Si int, entonces considera min_samples_split como el número mínimo.

  • Si float, entonces min_samples_split es una fracción y ceil(min_samples_split * n_samples) son el número mínimo de muestras para cada división.

Distinto en la versión 0.18: Se añadieron valores flotantes para las fracciones.

min_samples_leafentero o flotante, default=1

El número mínimo de muestras requeridas para estar en un nodo de hoja. Un punto dividido a cualquier profundidad sólo se considerará si deja al menos min_samples_leaf muestras de entrenamiento en cada una de las ramas izquierda y derecha. Esto puede tener el efecto de suavizar el modelo, especialmente en regresión.

  • Si int, entonces considera min_samples_split como el número mínimo.

  • Si float, entonces min_samples_leaf es una fracción y ceil(min_samples_leaf * n_samples) son el número mínimo de muestras para cada nodo.

Distinto en la versión 0.18: Se añadieron valores flotantes para las fracciones.

min_weight_fraction_leaffloat, default=0.0

La fracción mínima ponderada de la suma total de las ponderaciones (de todas las muestras de entrada) requeridas para estar en un nodo de hoja. Las muestras tienen la misma ponderación cuando no se proporciona sample_weight.

max_depthint, default=3

La profundidad máxima de los estimadores de regresión individuales. La profundidad máxima limita el número de nodos en el árbol. Ajusté este parámetro para un mejor rendimiento; el mejor valor dependerá de la interacción de las variables de entrada.

min_impurity_decreasefloat, default=0.0

Un nodo se dividirá si esta división induce una disminución de la impureza mayor o igual a este valor.

La ecuación de disminución de impureza ponderada es la siguiente:

N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)

donde N es el número total de muestras, N_t es el número de muestras en el nodo actual, N_t_L es el número de muestras en el hijo izquierdo, y N_t_R es el número de muestras en el hijo derecho.

N, N_t, N_t_R y N_t_L se refieren a la suma ponderada, si sample_weight es pasada.

Nuevo en la versión 0.19.

min_impurity_splitfloat, default=None

El umbral para la parada anticipada en el crecimiento de árboles. Un nodo se dividirá si su impureza está por encima del umbral, de lo contrario será una hoja.

Obsoleto desde la versión 0.19: min_impurity_split ha sido obviado en favor de min_impurity_decrease en 0.19. El valor predeterminado de min_impurity_split ha cambiado de 1e-7 a 0 en 0.23 y se eliminará en 1.0 (renombrado de 0.25). Use min_impurity_decrease en su lugar.

initestimador o “zero” default=None

Un objeto estimador utilizado para calcular las predicciones iniciales. init debe proporcionar fit y predict_proba. Si “zero”, las predicciones en bruto iniciales son establecidas como cero. Por defecto un DummyEstimator prediciendo los priores de clase es utilizado.

random_stateentero, instancia de RandomState o None, default=None

Controla la semilla aleatoria dada a cada estimador del árbol en cada iteración de potenciación. Además, controla la permutación aleatoria de las características en cada división (ver las Notas para más detalles). También controla la división aleatoria de los datos de entrenamiento para obtener un conjunto de validación si n_iter_no_change no es None. Pasa un int para una salida reproducible a lo largo de múltiples llamadas a la función. Ver Glosario.

max_features{“auto”, “sqrt”, “log2”}, int o float, default=None

El número de características a tener en cuenta cuando se busca la mejor división:

  • Si es int, entonces considera las características max_features en cada división.

  • Si es float, entonces max_features es una fracción y las características int(max_features * n_features) son consideradas en cada división.

  • Si es “auto”, entonces max_features=sqrt(n_features).

  • Si es “sqrt”, entonces max_features=sqrt(n_features).

  • Si es “log2”, entonces max_features=log2(n_features).

  • Si es None, entonces max_features=n_features.

Elegir max_features < n_features lleva a una reducción de varianza y un incremento en el sesgo.

Nota: la búsqueda de una división no se detiene hasta que se encuentre al menos una partición válida de las muestras de nodos, incluso si requiere inspeccionar eficazmente más de las características de max_features.

verboseint, default=0

Habilita la salida verborrea. Si 1, entonces imprime el progreso y el rendimiento de vez en cuando (mientras más sean los árboles menor será la frecuencia). Si es mayor que 1, imprimirá progreso y rendimiento para cada árbol.

max_leaf_nodesint, default=None

Hacer crecer árboles con max_leaf_nodes en modo best-first. Los mejores nodos se definen como una reducción relativa de la impureza. Si no hay ninguno, el número de nodos hoja es ilimitado.

warm_startbool, default=False

Cuando se establece a True, reutiliza la solución de la llamada anterior para ajustar y añadir más estimadores al ensemble, de lo contrario, solamente borrará la solución anterior. Ver el Glosario.

validation_fractionfloat, default=0.1

La proporción de datos de entrenamiento a reservar como conjunto de validación para la parada anticipada. Debe ser entre 0 y 1. Solamente utilizada si n_iter_no_change está establecido como un entero.

Nuevo en la versión 0.20.

n_iter_no_changeint, default=None

n_iter_no_change se usa para decidir si la parada anticipada será utilizada para terminar el entrenamiento cuando la puntuación de validación no mejore. Por defecto está establecido como None para desactivar la parada anticipada. Si se establece como un número, apartará un tamaño validation_fraction de los datos de entrenamiento como validación y terminará el entrenamiento cuando la puntuación de validación no mejore en todos los números de iteraciones n_iter_no_change previos. La división es estratificada.

Nuevo en la versión 0.20.

tolfloat, default=1e-4

Tolerancia para la parada anticipada. Cuando la pérdida no esta mejorando por al menos tol para n_iter_no_change iteraciones (si se establece en un número), el entrenamiento se detiene.

Nuevo en la versión 0.20.

ccp_alphaflotante no negativo, default=0.0

Parámetro de complejidad utilizado para la Poda de Mínima Complejidad de Costo. El subárbol con la complejidad de costo mayor que sea menor que ccp_alpha será elegido. Por defecto, no se realiza ninguna poda. Ver Poda de Coste-Complejidad Mínima para más detalles.

Nuevo en la versión 0.22.

Atributos
n_estimators_int

El número de estimadores seleccionados por la parada anticipada (si se especifica n_iter_no_change). De lo contrario, se establece como n_estimators.

Nuevo en la versión 0.20.

feature_importances_ndarray de forma (n_features,)

Las importancias basadas en la impureza de las características.

oob_improvement_ndarray de forma (n_estimators,)

La mejora en la pérdida (= desviación) en las muestras fuera-de-bolsa relativa a la iteración previa. oob_improvement_[0]```es la mejora en la pérdida de la primera etapa sobre el estimador ``init. Sólo esta disponible si subsample < 1.0

train_score_ndarray de forma (n_estimators,)

La puntuación i-ésima train_score_[i] es la desviación (= pérdida) del modelo en la iteración i de la muestra en-bolsa. Si subsample == 1 esta es la desviación en los datos de entrenamiento.

loss_LossFunction

El objeto concreto LossFunction.

init_estimator

El estimador que proporciona las predicciones iniciales. Establecer a través del argumento init o loss.init_estimator.

estimadores_ : ndarray de DecisionTreeRegressor de forma (n_estimators, loss_.K)ndarray de DecisionTreeRegressor de forma (n_estimators,

La colección de subestimadores instalados. loss_.K es 1 para la clasificación binaria, de lo contrario n_classes.

classes_ndarray de forma (n_classes,)

Las etiquetas de las clases.

n_features_int

El número de características en los datos.

n_clases_int

El número de clases.

max_features_int

El valor inferido de max_features.

Ver también

HistGradientBoostingClassifier

Árbol de Clasificación de Potenciación de Gradiente basado en histograma.

sklearn.tree.DecisionTreeClassifier

Un clasificador de árbol de decisiones.

RandomForestClassifier

Un metaestimador que ajusta un número de clasificadores de árboles de decisión en varias submuestras del conjunto de datos y utiliza el promedio para mejorar la exactitud predictiva y controlar el sobreajuste.

AdaBoostClassifier

Un metaestimador que comienza por ajustar un clasificador en el conjunto de datos original y luego ajusta copias adicionales del clasificador en el mismo conjunto de datos, pero donde las ponderaciones de las instancias mal clasificadas son ajustadas de manera tal que los clasificadores posteriores se enfocan más en casos difíciles.

Notas

Las características siempre son aleatoriamente permutadas en cada división. Por lo tanto, la mejor división encontrada podría variar, inclusive con los mismos datos de entrenamiento y max_features=n_features, si la mejora del criterio es idéntica para varias divisiones enumeradas durante la búsqueda de la mejor división. Para obtener un comportamiento determinístico durante el ajuste, random_state debe ser fijo.

Referencias

J. Friedman, Greedy Function Approximation: A Gradient Boosting Machine, The Annals of Statistics, Vol. 29, No. 5, 2001.

  1. Friedman, Stochastic Gradient Boosting, 1999

T. Hastie, R. Tibshirani and J. Friedman. Elements of Statistical Learning Ed. 2, Springer, 2009.

Ejemplos

El siguiente ejemplo muestra como ajustar un clasificador de potenciación de gradiente con 100 tocones de decisión como aprendices débiles.

>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> X, y = make_hastie_10_2(random_state=0)
>>> X_train, X_test = X[:2000], X[2000:]
>>> y_train, y_test = y[:2000], y[2000:]
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
...     max_depth=1, random_state=0).fit(X_train, y_train)
>>> clf.score(X_test, y_test)
0.913...

Métodos

apply

Aplica los árboles en el ensemble a X, devuelve los índices de las hojas.

decision_function

Calcula la función de decisión de X.

fit

Ajusta el modelo de potenciación de gradiente.

get_params

Obtiene los parámetros para este estimador.

predict

Predice la clase para X.

predict_log_proba

Predice las probabilidades log de clase para X.

predict_proba

Predice las probabilidades de clase para X.

score

Devuelve la precisión media en los datos y etiquetas de prueba dados.

set_params

Establece los parámetros de este estimador.

staged_decision_function

Calcula la función de decisión de X para cada iteración.

staged_predict

Predice la clase en cada etapa para X.

staged_predict_proba

Predice las probabilidades de clase en cada etapa para X.

apply()

Aplica los árboles en el ensemble a X, devuelve los índices de las hojas.

Nuevo en la versión 0.17.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una dispersa csr_matrix.

Devuelve
X_leavesarray-like de forma (n_samples, n_estimators, n_classes)

Por cada dato x en X y por cada árbol en el ensemble, devuelve el índice de la hoja en la que termina x en cada estimador. En el caso de la clasificación binaria, n_classes es 1.

decision_function()

Calcula la función de decisión de X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
scorendarray de forma (n_samples, n_classes) o (n_samples,)

La función de decisión de las meustras de entrada, que corresponde a los valores en bruto predichos desde los árboles del ensemble. El ordén de las clases corresponde a aquel en el atributo classes_. La regresión y la clasificación binaria producen un arreglo de forma (n_samples,).

property feature_importances_

Las importancias basadas en la impureza de las características.

Cuanto más alto, más importante sera la característica. La importancia de una característica se calcula como la reducción total (normalizada) del criterio traído por esa función. También se le conoce como la importancia de Gini.

Advertencia: las importancias de característica basadas en la impureza pueden ser no representativas para las características de alta cardinalidad (muchos valores únicos). Ver sklearn.inspection.permutation_importance como una alternativa.

Devuelve
feature_importances_ndarray de forma (n_features,)

Los valores de este arreglo suman a 1, a menos que todos los árboles sean árboles de nodos individuales consistiendo de solo el nodo raíz, en cuyo caso sera un arreglo de ceros.

fit()

Ajusta el modelo de potenciación de gradiente.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

yarray-like de forma (n_samples,)

Valores objetivo (cadenas o enteros en clasificación, números reales en la regresión) Para la clasificación, las etiquetas deben corresponder a las clases.

sample_weightarray-like de forma (n_samples,), default=None

Ponderados de muestra. Si es None, entonces las muestras están ponderadas de la misma manera. Divisiones que crearían nodos hijos con ponderado neto cero o negativo son ignoradas al buscar una división en cada nodo. En el caso de la clasificación, las divisiones también se ignoran si resultarían en cualquier clase individual llevando un ponderado negativo en cualquiera de los nodos hijos.

monitorinvocable, default=None

El monitor es llamado después de cada iteración con la iteración actual, una referencia al estimador y a las variables locales de _fit_stages como argumentos de palabra clave callable(i, self, locals()). Si el invocable devuelve True el procedimiento de ajuste se detiene. El monitor puede ser utilizado para varias cosas como calcular estimados apartados, parada anticipada, introspección del modelo, y snapshoting.

Devuelve
selfobject
get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

predict()

Predice la clase para X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
yndarray de forma (n_samples,)

Los valores predichos.

predict_log_proba()

Predice las probabilidades log de clase para X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
pndarray de forma (n_samples, n_classes)

Las log-probabilidades de clase de las muestras de entrada. El orden de las clases corresponde a aquel en el atributo classes_.

Errores posibles
AttributeError

Si el loss no soporta probabilidades.

predict_proba()

Predice las probabilidades de clase para X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
pndarray de forma (n_samples, n_classes)

Las probabilidades de clase de las muestras de entrada. El orden de las clases corresponde a aquel en el atributo classes_.

Errores posibles
AttributeError

Si el loss no soporta probabilidades.

score()

Devuelve la precisión media en los datos y etiquetas de prueba dados.

En la clasificación multietiqueta, se trata de la precisión del subconjunto, que es una métrica exigente, ya que se requiere para cada muestra que cada conjunto de etiquetas sea predicho correctamente.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de prueba.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Etiquetas verdaderas para X`.

sample_weightarray-like de forma (n_samples,), default=None

Ponderados de muestras.

Devuelve
scorefloat

Precisión media de self.predict(X) con respecto a y.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma ``<component>__<parameter>` para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.

staged_decision_function()

Calcula la función de decisión de X para cada iteración.

Este método permite el monitoreo (es decir, determinar el error en el conjunto de pruebas) después de cada etapa.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
scoregenerador de ndarray de forma (n_samples, k)

La función de decisión de las meustras de entrada, que corresponde a los valores en bruto predichos de los árboles del ensemble. Las clases corresponden a aquellas en el atributo classes_. La regresión y la clasificación binaria son casos especiales con k == 1, de lo contrario k==n_classes.

staged_predict()

Predice la clase en cada etapa para X.

Este método permite el monitoreo (es decir, determinar el error en el conjunto de pruebas) después de cada etapa.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
ygenerador de ndarray de forma (n_samples,)

El valor predicho de las muestras de entrada.

staged_predict_proba()

Predice las probabilidades de clase en cada etapa para X.

Este método permite el monitoreo (es decir, determinar el error en el conjunto de pruebas) después de cada etapa.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, se convertirá a dtype=np.float32 y si se proporciona una matriz dispersa se convertirá a una dispersa csr_matrix.

Devuelve
ygenerador de ndarray de forma (n_samples,)

El valor predicho de las muestras de entrada.

Ejemplos usando sklearn.ensemble.GradientBoostingClassifier