sklearn.ensemble.RandomForestRegressor

class sklearn.ensemble.RandomForestRegressor

Un regresor de bosque aleatorio.

Un bosque aleatorio es un metaestimador que ajusta un número de árboles de decisión clasificatorios en varias submuestras del conjunto de datos y utiliza el promedio para mejorar la precisión predictiva y controlar el sobreajuste. El tamaño de la submuestra se controla con el parámetro max_samples si bootstrap=True (predeterminado), de lo contrario se utiliza todo el conjunto de datos para construir cada árbol.

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

Parámetros
n_estimatorsint, default=100

El número de árboles en el bosque.

Distinto en la versión 0.22: El valor predeterminado de n_estimators cambió de 10 a 100 en 0.22.

criterion{«mse», «mae»}, default=»mse»

La función para medir la calidad de una división. Los criterios admitidos son «mse» para el error cuadrático medio, que es igual a la reducción de la varianza como criterio de selección de características, y «mae» para el error absoluto medio.

Nuevo en la versión 0.18: Criterio de Error Absoluto Medio(MAE en inglés).

max_depthint, default=None

La profundidad máxima del árbol. Si es None, entonces los nodos se expanden hasta que todas las hojas sean puras o hasta que todas contengan menos de min_samples_split muestras.

min_samples_splitint o float, default=2

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

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

  • Si es float, entonces min_samples_split es una fracción y ceil(min_samples_split * n_samples) es 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 requerido para estar en un nodo hoja. Un punto de división en 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 la regresión.

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

  • Si es float, entonces min_samples_leaf es una fracción y ceil(min_samples_leaf * n_samples) es 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 ponderada mínima de la suma total de ponderaciones (de todas las muestras de entrada) requerida para estar en un nodo hoja. Las muestras tienen la misma ponderación cuando no se proporciona sample_weight.

max_features{«auto», «sqrt», «log2»}, int o float, default=»auto»

El número de características a tener en cuenta a la hora de buscar 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 round(max_features * n_features) se consideran en cada división.

  • Si es «auto», entonces max_features=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.

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 nodos, incluso si requiere inspeccionar efectivamente más características de max_features.

max_leaf_nodesint, default=None

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

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 se pasa sample_weight.

Nuevo en la versión 0.19.

min_impurity_splitfloat, default=None

El umbral para la parada anticipada del crecimiento del árbol. 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: El valor de min_impurity_split ha quedado obsoleto en favor de min_impurity_decrease en la versión 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). Utiliza min_impurity_decrease en su lugar.

bootstrapbool, default=True

Si se utilizan muestras por bootstrap al construir árboles. Si es False, se utiliza todo el conjunto de datos para construir cada árbol.

oob_scorebool, default=False

si se utilizan muestras fuera de bolsa (out-of-bag) para estimar el R^2 en datos no vistos.

n_jobsint, default=None

El número de trabajos a ejecutar en paralelo. fit, predict, decision_path y apply son todos paralelizados sobre los árboles. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa que se utilizan todos los procesadores. Ver Glosario para más detalles.

random_stateentero, instancia de RandomState o None, default=None

Controla tanto la aleatoriedad del bootstrapping de las muestras utilizadas al construir árboles (si bootstrap=True) como el muestreo de las características a considerar cuando se busca la mejor división en cada nodo (si max_features < n_features). Ver Glosario para obtener más detalles.

verboseint, default=0

Controla la verbosidad al momento de ajustar y predecir.

warm_startbool, default=False

Cuando se establece en True, se reutiliza la solución de la llamada anterior al ajuste y se añaden más estimadores al conjunto(ensemble), de lo contrario, sólo se ajusta un nuevo bosque completo. Ver el Glosario.

ccp_alphafloat no negativo, default=0.0

Parámetro de complejidad utilizado para la Poda de Coste-Complejidad Mínima (Minimal Cost-Complexity Pruning). Se elegirá el subárbol con la mayor complejidad de coste que sea menor que ccp_alpha. Por defecto, no se realiza ninguna poda. Para más detalles, consulta Poda de Coste-Complejidad Mínima.

Nuevo en la versión 0.22.

max_samplesint o float, default=None

Si bootstrap es True, es el número de muestras a escoger de X para entrenar cada estimador base.

  • Si es None (predeterminado), entonces escoge X.shape[0] muestras.

  • Si es int, entonces escoge max_samples muestras.

  • Si es float, entonces extrae max_samples * X.shape[0] muestras. Por lo tanto, max_samples debe estar en el intervalo (0, 1).

Nuevo en la versión 0.22.

Atributos
base_estimator_DecisionTreeRegressor

La plantilla del estimador hijo utilizada para crear la colección de subestimadores ajustados.

estimators_list de DecisionTreeRegressor

La colección de subestimadores ajustados.

feature_importances_ndarray de forma (n_features,)

La importancia de las características basadas en la impureza.

n_features_int

El número de características cuando se realiza fit.

n_outputs_int

El número de salidas cuando se realiza fit.

oob_score_float

Puntuación del conjunto de datos de entrenamiento obtenido utilizando una estimación out-of-bag. Este atributo solo existe cuando oob_score es True.

oob_prediction_ndarray de forma (n_samples,)

Predicción calculada con la estimación out-of-bag en el conjunto de entrenamiento. Este atributo sólo existe cuando oob_score es True.

Ver también

DecisionTreeRegressor, ExtraTreesRegressor

Notas

Los valores predeterminados de los parámetros que controlan el tamaño de los árboles (por ejemplo, `max_depth, min_samples_leaf, etc.) conducen a árboles completamente desarrollados y sin podar que pueden ser potencialmente muy grandes en algunos conjuntos de datos. Para reducir el consumo de memoria, la complejidad y el tamaño de los árboles deben controlarse estableciendo los valores de esos parámetros.

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, max_features=n_features y bootstrap=False, 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, hay que fijar random_state.

El valor predeterminado max_features="auto" utiliza n_features en lugar de n_features / 3. Este último fue sugerido originalmente en [1], mientras que el primero fue justificado empíricamente más recientemente en [2].

Referencias

1
  1. Breiman, «Random Forests», Machine Learning, 45(1), 5-32, 2001.

2

P. Geurts, D. Ernst., and L. Wehenkel, «Extremely randomized trees», Machine Learning, 63(1), 3-42, 2006.

Ejemplos

>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=4, n_informative=2,
...                        random_state=0, shuffle=False)
>>> regr = RandomForestRegressor(max_depth=2, random_state=0)
>>> regr.fit(X, y)
RandomForestRegressor(...)
>>> print(regr.predict([[0, 0, 0, 0]]))
[-8.32987858]

Métodos

apply

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

decision_path

Devuelve la ruta de decisión en el bosque.

fit

Construye un bosque de árboles a partir del conjunto de entrenamiento (X, y).

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.

apply()

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

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

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

Devuelve
X_leavesndarray de forma (n_samples, n_estimators)

Para cada punto de datos x en X y para cada árbol del bosque, devuelve el índice de la hoja en la que termina x.

decision_path()

Devuelve la ruta de decisión en el bosque.

Nuevo en la versión 0.18.

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

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

Devuelve
indicatormatriz dispersa de forma (n_samples, n_nodes)

Devuelve una matriz indicadora de nodos donde los elementos distintos de cero indican que las muestras pasan por los nodos. La matriz tiene el formato CSR.

n_nodes_ptrndarray de forma (n_estimators + 1,)

Las columnas del indicador[n_nodes_ptr[i]:n_nodes_ptr[i+1]] dan el valor del indicador para el i-ésimo estimador.

property feature_importances_

La importancia de las características basadas en la impureza.

Cuanto más alta sea, más importante será la característica. La importancia de una característica se calcula como la reducción total (normalizada) del criterio que aporta esa característica. También se conoce como importancia de Gini.

Advertencia: las importancias de las características 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 1, a menos que todos los árboles sean árboles de un solo nodo que consistan sólo en el nodo raíz, en cuyo caso será una arreglo de ceros.

fit()

Construye un bosque de árboles a partir del conjunto de entrenamiento (X, y).

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

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

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

Los valores objetivo (etiquetas de clase en clasificación, números reales en regresión).

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

Ponderación de las muestras. Si es None, las muestras se ponderan por igual. Las divisiones que crearían nodos hijos 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 lugar a que una sola clase tenga un peso negativo en cualquiera de los nodos hijos.

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 el objetivo de regresión para X.

El objetivo de regresión predicho de una muestra de entrada se calcula como la media de los objetivos de regresión predichos de los árboles del bosque.

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

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

Devuelve
yndarray de forma (n_samples,) o (n_samples, n_outputs)

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 de cuadrados de los residuos ((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 en su lugar 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 consistencia 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 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.

Ejemplos usando sklearn.ensemble.RandomForestRegressor