-
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ámetron_estimators
. Elegirsubsample < 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). Usarcriterion='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 yceil(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.
- Si es int, entonces considere
-
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 yceil(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.
- Si es int, entonces considere
-
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, yN_t_R
es el número de muestras en el niño correcto.N
,N_t
,N_t_R
yN_t_L
todos se refieren a la suma ponderada, sisample_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 demin_impurity_decrease
en 0,19. El valor predeterminado demin_impurity_split
ha cambiado de 1e-7 a 0 en 0.23 y se eliminará en 1.0 (cambio de nombre de 0.25). Usarmin_impurity_decrease
en lugar de. -
initestimator or ‘zero’, default=None
-
Objeto estimador que se utiliza para calcular las predicciones iniciales.
init
tiene que proporcionarfit
ypredict_proba
. Si es “cero”, las predicciones sin procesar iniciales se establecen en cero. Por defecto, unDummyEstimator
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 yint(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. - Si es int, entonces considere
-
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 anterioresn_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 enn_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 elinit
estimador. Solo disponible sisubsample < 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óni
en la muestra de la bolsa. Sisubsample == 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 oloss.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.
- 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 dispersacsr_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 escasocsr_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 escasocsr_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 clavecallable(i, self,
. Si el invocable regresa
locals())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 escasocsr_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 escasocsr_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 escasocsr_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 escasocsr_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 contrariok==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 escasocsr_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 escasocsr_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
Detención anticipada de Gradient Boosting
Transformaciones de características con conjuntos de árboles
Estimaciones fuera de bolsa de aumento de gradiente
Discretización de funciones