class sklearn.ensemble.GradientBoostingClassifier(*, loss="deviance", learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, min_impurity_split=None, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0) [source]

Aumento de gradiente para clasificación.

GB construye un modelo aditivo de manera progresiva por etapas; permite la optimización de funciones de pérdida diferenciables arbitrarias. En cada etapa n_classes_ Los árboles de regresión se ajustan al gradiente negativo de la función de pérdida de desviación binomial o multinomial. La clasificación binaria es un caso especial en el que solo se induce un único árbol de regresión.

Leer más en el Guía del usuario.

Parámetros
loss{‘deviance’, ‘exponential’}, default=’deviance’

La función de pérdida a optimizar. ‘desviación’ se refiere a la desviación (= regresión logística) para la clasificación con salidas probabilísticas. Para pérdidas, el aumento de gradiente ‘exponencial’ recupera el algoritmo AdaBoost.

learning_ratefloat, default=0.1

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

n_estimatorsint, default=100

El número de etapas de impulso a realizar. El aumento de gradiente es bastante robusto al sobreajuste, por lo que un gran número generalmente da como resultado un mejor rendimiento.

subsamplefloat, default=1.0

La fracción de muestras que se utilizará para ajustar a los alumnos de base individuales. Si es menor que 1.0, esto da como resultado un aumento de gradiente estocástico. subsample interactúa con el parámetro n_estimators. Elegir subsample < 1.0 conduce a una reducción de la varianza y un aumento del sesgo.

criterion{‘friedman_mse’, ‘mse’, ‘mae’}, default=’friedman_mse’

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

Nuevo en la versión 0.18.

En desuso desde la versión 0.24: criterion='mae' está en desuso y se eliminará en la versión 1.1 (cambio de nombre de 0.26). Usar criterion='friedman_mse' o 'mse' en cambio, ya que los árboles deberían usar un criterio de mínimos cuadrados en Gradient Boosting.

min_samples_splitint or float, default=2

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

  • Si es int, entonces considere min_samples_split como el número mínimo.
  • Si flota, 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.

Modificado en la versión 0.18: Se agregaron valores flotantes para fracciones.

min_samples_leafint or float, default=1

El número mínimo de muestras necesarias para estar en un nodo hoja. Un punto de división a cualquier profundidad solo 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 es int, entonces considere min_samples_leaf como el número mínimo.
  • Si flota, 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.

Modificado en la versión 0.18: Se agregaron valores flotantes para fracciones.

min_weight_fraction_leaffloat, default=0.0

La fracción ponderada mínima de la suma total de pesos (de todas las muestras de entrada) que se requiere para estar en un nodo hoja. Las muestras tienen el mismo peso 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. Ajuste este parámetro para obtener el mejor rendimiento; el mejor valor depende 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 ponderada de disminución de impurezas es la siguiente:

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

dónde 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 niño correcto.

N, N_t, N_t_R y N_t_L todos se refieren a la suma ponderada, si sample_weight esta pasado.

Nuevo en la versión 0.19.

min_impurity_splitfloat, default=None

Umbral de parada temprana en el crecimiento de los árboles. Un nodo se dividirá si su impureza está por encima del umbral; de lo contrario, es una hoja.

En desuso desde la versión 0.19: min_impurity_split ha sido desaprobado a 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 (cambio de nombre de 0.25). Usar min_impurity_decrease en lugar de.

initestimator or ‘zero’, default=None

Objeto estimador que se utiliza para calcular las predicciones iniciales. init tiene que proporcionar fit y predict_proba. Si es “cero”, las predicciones sin procesar iniciales se establecen en cero. Por defecto, un DummyEstimator se utiliza la predicción de las clases a priori.

random_stateint, RandomState instance or None, default=None

Controla la semilla aleatoria dada a cada estimador de árbol en cada iteración de impulso. Además, controla la permutación aleatoria de las características en cada división (consulte Notas para obtener 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 Ninguno. Pase un int para una salida reproducible a través de múltiples llamadas a funciones. Ver Glosario.

max_features{‘auto’, ‘sqrt’, ‘log2’}, int or float, default=None

La cantidad de características a considerar al buscar la mejor división:

  • Si es int, entonces considere max_features características en cada división.
  • Si flota, entonces max_features es una fracción y int(max_features * n_features) las características se consideran 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 ninguno, entonces max_features=n_features.

Elegir max_features < n_features conduce a una reducción de la varianza y un aumento del sesgo.

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

verboseint, default=0

Habilite la salida detallada. Si es 1, muestra el progreso y el rendimiento de vez en cuando (cuantos más árboles, menor es la frecuencia). Si es mayor que 1, imprime el progreso y el rendimiento de cada árbol.

max_leaf_nodesint, default=None

Cultiva árboles con max_leaf_nodes de la mejor manera primero. Los mejores nodos se definen como una reducción relativa de la impureza. Si es Ninguno, entonces un número ilimitado de nodos hoja.

warm_startbool, default=False

Cuando se establece en True, reutilice la solución de la llamada anterior para ajustar y agregar más estimadores al conjunto; de lo contrario, simplemente borre la solución anterior. Ver el glosario.

validation_fractionfloat, default=0.1

La proporción de datos de entrenamiento que se deben reservar como conjunto de validación para la detención anticipada. Debe estar entre 0 y 1. Solo se usa si n_iter_no_change se establece en un número entero.

Nuevo en la versión 0.20.

n_iter_no_changeint, default=None

n_iter_no_change se utiliza para decidir si la parada anticipada se utilizará para finalizar el entrenamiento cuando la puntuación de validación no mejora. De forma predeterminada, está configurado en Ninguno para deshabilitar la parada anticipada. Si se establece en un número, se reservará validation_fraction tamaño de los datos de entrenamiento como validación y finalizar el entrenamiento cuando la puntuación de validación no mejora en todos los anteriores n_iter_no_change número de iteraciones. La división está estratificada.

Nuevo en la versión 0.20.

tolfloat, default=1e-4

Tolerancia a la parada anticipada. Cuando la pérdida no mejora en 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_alphanon-negative float, default=0.0

Parámetro de complejidad utilizado para la poda de costo mínimo-complejidad. El subárbol con la mayor complejidad de costos que es menor que ccp_alpha será elegido. De forma predeterminada, no se realiza ninguna poda. Ver Poda de costo mínimo y complejidad para detalles.

Nuevo en la versión 0.22.

Atributos
n_estimators_int

El número de estimadores seleccionados por la parada anticipada (si n_iter_no_change está especificado). De lo contrario, se establece en n_estimators.

Nuevo en la versión 0.20.

feature_importances_ndarray of shape (n_features,)

La característica basada en impurezas es importante.

oob_improvement_ndarray of shape (n_estimators,)

La mejora en la pérdida (= desviación) en las muestras fuera de la bolsa en relación con la iteración anterior. oob_improvement_[0] es la mejora en la pérdida de la primera etapa sobre el init estimador. Solo disponible si subsample < 1.0

train_score_ndarray of shape (n_estimators,)

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

loss_LossFunction

El hormigón LossFunction objeto.

init_estimator

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

estimators_ndarray of DecisionTreeRegressor of shape (n_estimators, loss_.K)

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

classes_ndarray of shape (n_classes,)

Las etiquetas de las clases.

n_features_int

El número de características de datos.

n_classes_int

El número de clases.

max_features_int

El valor inferido de max_features.

Ver también

HistGradientBoostingClassifier

Árbol de clasificación de aumento de gradiente basado en histogramas.

sklearn.tree.DecisionTreeClassifier

Un clasificador de árbol de decisión.

RandomForestClassifier

Un metaestimador que se ajusta a varios clasificadores de árboles de decisión en varias submuestras del conjunto de datos y utiliza promedios para mejorar la precisión predictiva y controlar el sobreajuste.

AdaBoostClassifier

Un metaestimador que comienza ajustando un clasificador en el conjunto de datos original y luego ajusta copias adicionales del clasificador en el mismo conjunto de datos donde los pesos de instancias clasificadas incorrectamente se ajustan de modo que los clasificadores posteriores se enfocan más en casos difíciles.

Notas

Las características siempre se permutan aleatoriamente en cada división. Por lo tanto, la mejor división encontrada puede variar, incluso 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 determinista durante el ajuste, random_state tiene que ser arreglado.

Referencias

J. Friedman, Aproximación de funciones codiciosas: una máquina de aumento de gradiente, The Annals of Statistics, vol. 29, N ° 5, 2001.

  1. Friedman, Impulso de gradiente estocástico, 1999

T. Hastie, R. Tibshirani y J. Friedman. Elementos del aprendizaje estadístico Ed. 2, Springer, 2009.

Ejemplos de

El siguiente ejemplo muestra cómo ajustar un clasificador de aumento de gradiente con 100 elementos 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(X)

Aplique árboles en el conjunto a X, devuelva índices de hojas.

decision_function(X)

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

fit(X, y[, sample_weight, monitor])

Ajuste el modelo de aumento de gradiente.

get_params([deep])

Obtenga parámetros para este estimador.

predict(X)

Predice la clase para X.

predict_log_proba(X)

Predice las probabilidades logarítmicas de clase para X.

predict_proba(X)

Predice las probabilidades de clase para X.

score(X, y[, sample_weight])

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

set_params(** parámetros)

Establezca los parámetros de este estimador.

staged_decision_function(X)

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

staged_predict(X)

Predice la clase en cada etapa para X.

staged_predict_proba(X)

Predice las probabilidades de clase en cada etapa para X.

apply(X) [source]

Aplique árboles en el conjunto a X, devuelva índices de hojas.

Nuevo en la versión 0.17.

Parámetros
X{array-like, sparse matrix} of shape (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á en una matriz dispersa csr_matrix.

Devoluciones
X_leavesarray-like of shape (n_samples, n_estimators, n_classes)

Para cada punto de datos x en X y para cada árbol en el conjunto, devuelva el índice de la hoja x termina en cada estimador. En el caso de la clasificación binaria, n_classes es 1.

decision_function(X) [source]

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

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

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

Devoluciones
scorendarray of shape (n_samples, n_classes) or (n_samples,)

La función de decisión de las muestras de entrada, que corresponde a los valores brutos predichos de los árboles del conjunto. El orden de las clases corresponde al del atributo clases_. La regresión y la clasificación binaria producen una matriz de formas (n_samples,).

property feature_importances_

La característica basada en impurezas es importante.

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

Advertencia: la importancia de las características basadas en impurezas puede ser engañosa para las características de alta cardinalidad (muchos valores únicos). Ver sklearn.inspection.permutation_importance como alternativa.

Devoluciones
feature_importances_ndarray of shape (n_features,)

Los valores de esta matriz suman 1, a menos que todos los árboles sean árboles de un solo nodo que constan solo del nodo raíz, en cuyo caso será una matriz de ceros.

fit(X, y, sample_weight=None, monitor=None) [source]

Ajuste el modelo de aumento de gradiente.

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

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

yarray-like of shape (n_samples,)

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

sample_weightarray-like of shape (n_samples,), default=None

Pesos de muestra. Si es Ninguno, las muestras se ponderan por igual. Las divisiones que crearían nodos secundarios con peso neto cero o negativo se ignoran al buscar una división en cada nodo. En el caso de la clasificación, las divisiones también se ignoran si dan como resultado que una sola clase tenga un peso negativo en cualquiera de los nodos secundarios.

monitorcallable, default=None

El monitor se llama después de cada iteración con la iteración actual, una referencia al estimador y las variables locales de _fit_stages como argumentos de palabras clave callable(i, self,
locals())
. Si el invocable regresa True el procedimiento de ajuste se detiene. El monitor se puede utilizar para varias cosas, como calcular estimaciones retenidas, detenerse antes de tiempo, introspección del modelo e instantáneas.

Devoluciones
selfobject
get_params(deep=True) [source]

Obtenga parámetros para este estimador.

Parámetros
deepbool, default=True

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

Devoluciones
paramsdict

Nombres de parámetros asignados a sus valores.

predict(X) [source]

Predice la clase para X.

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

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

Devoluciones
yndarray of shape (n_samples,)

Los valores predichos.

predict_log_proba(X) [source]

Predice las probabilidades logarítmicas de clase para X.

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

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

Devoluciones
pndarray of shape (n_samples, n_classes)

Las probabilidades logarítmicas de la clase de las muestras de entrada. El orden de las clases corresponde al del atributo clases_.

Eleva
AttributeError

Si el loss no admite probabilidades.

predict_proba(X) [source]

Predice las probabilidades de clase para X.

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

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

Devoluciones
pndarray of shape (n_samples, n_classes)

Las probabilidades de clase de las muestras de entrada. El orden de las clases corresponde al del atributo clases_.

Eleva
AttributeError

Si el loss no admite probabilidades.

score(X, y, sample_weight=None) [source]

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

En la clasificación de etiquetas múltiples, esta es la precisión del subconjunto, que es una métrica rigurosa, ya que para cada muestra se requiere que cada conjunto de etiquetas se prediga correctamente.

Parámetros
Xarray-like of shape (n_samples, n_features)

Muestras de prueba.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Verdaderas etiquetas para X.

sample_weightarray-like of shape (n_samples,), default=None

Pesos de muestra.

Devoluciones
scorefloat

Precisión media de self.predict(X) wrt. y.

set_params(**params) [source]

Establezca 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.

Devoluciones
selfestimator instance

Instancia de estimador.

staged_decision_function(X) [source]

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

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

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

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

Devoluciones
scoregenerator of ndarray of shape (n_samples, k)

La función de decisión de las muestras de entrada, que corresponde a los valores brutos predichos de los árboles del conjunto. Las clases corresponden a las del atributo clases_. La regresión y la clasificación binaria son casos especiales con k == 1, de lo contrario k==n_classes.

staged_predict(X) [source]

Predice la clase en cada etapa para X.

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

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

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

Devoluciones
ygenerator of ndarray of shape (n_samples,)

El valor previsto de las muestras de entrada.

staged_predict_proba(X) [source]

Predice las probabilidades de clase en cada etapa para X.

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

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

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

Devoluciones
ygenerator of ndarray of shape (n_samples,)

El valor previsto de las muestras de entrada.

Ejemplos usando sklearn.ensemble.GradientBoostingClassifier

Regularización de Gradient Boosting

Regularización de Gradient Boosting

Detención anticipada de Gradient Boosting

Detención anticipada de Gradient Boosting

Transformaciones de características con conjuntos de árboles

Transformaciones de características con conjuntos de árboles

Estimaciones fuera de bolsa de aumento de gradiente

Estimaciones fuera de bolsa de aumento de gradiente

Discretización de funciones

Discretización de funciones