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ámetron_estimators
. Escogersubsample < 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 usarloss='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 yceil(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 yceil(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, yN_t_R
es el número de muestras en el hijo derecho.N
,N_t
,N_t_R
yN_t_L
se refieren a la suma ponderada, sisample_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 unDummyEstimator
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ísticasint(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'
oloss='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ñovalidation_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 iteracionesn_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 sisubsample < 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óni
de la muestra en-bolsa. Sisubsample == 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
oloss.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 comon_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.
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
Aplica los árboles en el ensemble a X, devuelve los índices de las hojas.
Ajustado del modelo de potenciación de gradiente.
Obtiene los parámetros para este estimador.
Predice el objetivo de regresión para X.
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
Establece los parámetros de este estimador.
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 dispersacsr_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 dispersacsr_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 clavecallable(i, self, locals())
. Si el invocable devuelveTrue
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 dispersacsr_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 dey
, 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)
, donden_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 ay
.
Notas
La puntuación \(R^2\) utilizada al llamar a
score
en un regresor utilizamultioutput='uniform_average'
desde la versión 0.23 para mantener la coherencia con el valor predeterminado der2_score`
. Esto influye en el métodoscore
de todos los regresores de salida múltiple (excepto paraMultiOutputRegressor
).
- 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 dispersacsr_matrix
.
- Devuelve
- ygenerador de ndarray de forma (n_samples,)
El valor predicho de las muestras de entrada.