sklearn.ensemble.GradientBoostingRegressor

class sklearn.ensemble.GradientBoostingRegressor

Potenciación de Gradiente para regresión.

El PG (GB en inglés) construye un modelo aditivo de forma progresiva por etapas; permite la optimización de funciones de pérdida diferenciables arbitrarias. En cada etapa un árbol de regresión es ajustado al gradiente negativo de la función de pérdida dada.

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

Parámetros
loss{“ls”, “lad”, “huber”, “quantile”}, default=”ls”

La función de pérdida a optimizar. “ls” se refiere a la regresión de minimos cuadrados. “lad” (desviación menor absoluta) es una función de perdida altamente robusta basada únicamente en la información de orden de las variables de entrada. “huber” es una combinación de ambas. “quantile” permite la regresión por cuantiles (utilice alpha para especificar el cuantil).

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). La forma correcta de minimizar el error absoluto es usar loss='lad' en su lugar.

min_samples_splitint o float, 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_leafint o float, 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

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

initestimator or “zero” default=None

Un objeto estimador utilizado para calcular las predicciones iniciales. init debe proporcionar fit y predict. Si “zero”, las predicciones en bruto iniciales son establecidas como cero. Por defecto un DummyEstimator es utilizado, prediciendo tanto el valor objetivo promedio (para loss=”ls”), como un cuantil para las otras perdidas.

random_stateint, instancia de RandomState o None, por defecto=None

Controla la semilla aleatoria dada a cada estimador de á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 varias llamadas de 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 considere las características max_features en cada división.

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

  • Si «auto», entonces max_features=n_features.

  • Si «sqrt», entonces max_features=sqrt(n_features).

  • Si «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.

alphafloat, default=0.9

El cuantil-alfa de la función de pérdida de huber y la función de perdida de cuantil. Solo sí loss='huber' o loss='quantile'.

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 sera utilizada para terminar el entrenamiento cuando el puntaje de validación no esta mejorando. Por defecto esta 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.

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

estimators_ndarray de DecisionTreeRegressor de forma (n_estimators, 1)

La colección de sub-estimadores ajustados.

n_clases_int

El número de clases, establecido a 1 para regresores.

Obsoleto desde la versión 0.24: El atributo n_jobs fue obsoleto en la versión 0.24 y será eliminado en la 1.1 (cambio de nombre de la versión 0.26).

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.

n_features_int

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

max_features_int

El valor inferido de max_features.

Ver también

HistGradientBoostingRegressor

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

sklearn.tree.DecisionTreeRegressor

Un regresor de árbol de decisión.

sklearn.tree.RandomForestRegressor

Un regresor de bosque aleatorio.

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

>>> from sklearn.datasets import make_regression
>>> from sklearn.ensemble import GradientBoostingRegressor
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_regression(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=0)
>>> reg = GradientBoostingRegressor(random_state=0)
>>> reg.fit(X_train, y_train)
GradientBoostingRegressor(random_state=0)
>>> reg.predict(X_test[1:2])
array([-61...])
>>> reg.score(X_test, y_test)
0.4...

Métodos

apply

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

fit

Ajustado del modelo de potenciación de gradiente.

get_params

Obtiene los parámetros para este estimador.

predict

Predice el objetivo de regresión para X.

score

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

set_params

Establece los parámetros de este estimador.

staged_predict

Predice el objetivo de regresión 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)

Para cada punto de dato x en X y para cada árbol en el ensemble, devuelve el índice de la hoja en la que x termina en cada estimador.

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()

Ajustado del 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
deepbooleano, 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 el objetivo de regresión 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.

score()

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

El coeficiente \(R^2\) se define como \((1 - \frac{u}{v})\), donde \(u\) es la suma residual de cuadrados ((y_true - y_pred) ** 2).sum() y \(v\) es la suma total de cuadrados ((y_true - y_true.mean()) ** 2).sum(). La mejor puntuación posible es 1,0 y puede ser negativa (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado de y, sin tener en cuenta las características de entrada, obtendría una puntuación \(R^2\) de 0,0.

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

Muestras de prueba. Para algunos estimadores puede ser una matriz de núcleo precalculada o una lista de objetos genéricos con forma (n_samples, n_samples_fitted), donde n_samples_fitted es el número de muestras utilizadas en el ajuste para el estimador.

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

Valores verdaderos para X.

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

Ponderaciones de la muestra.

Devuelve
scorefloat

\(R^2\) de self.predict(X) con respecto a y.

Notas

La puntuación \(R^2\) utilizada al llamar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la coherencia con el valor predeterminado de r2_score`. Esto influye en el método score de todos los regresores de salida múltiple (excepto para MultiOutputRegressor).

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como con 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 de estimador

Instancia del estimador.

staged_predict()

Predice el objetivo de regresión 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.GradientBoostingRegressor