logo

Regresión de bosque aleatoria en Python

La regresión de bosque aleatorio es una técnica versátil de aprendizaje automático para predecir valores numéricos. Combina las predicciones de múltiples árboles de decisión para reducir el sobreajuste y mejorar la precisión. pitón aprendizaje automático Las bibliotecas facilitan la implementación y optimización de este enfoque.

Aprendizaje conjunto

El aprendizaje conjunto es una técnica de aprendizaje automático que combina las predicciones de múltiples modelos para crear una predicción más precisa y estable. Es un enfoque que aprovecha la inteligencia colectiva de múltiples modelos para mejorar el rendimiento general del sistema de aprendizaje.



Tipos de métodos de conjunto

Existen varios tipos de métodos de aprendizaje en conjunto, que incluyen:

  1. Ensacado (agregación Bootstrap): Este método implica entrenar múltiples modelos en subconjuntos aleatorios de datos de entrenamiento. Luego se combinan las predicciones de los modelos individuales, normalmente mediante un promedio.
  2. Impulsar: Este método implica entrenar una secuencia de modelos, donde cada modelo posterior se centra en los errores cometidos por el modelo anterior. Las predicciones se combinan mediante un esquema de votación ponderada.
  3. Apilado: Este método implica utilizar las predicciones de un conjunto de modelos como características de entrada para otro modelo. La predicción final la realiza el modelo de segundo nivel.

Bosque aleatorio

Un bosque aleatorio es un método de aprendizaje conjunto que combina las predicciones de múltiples árboles de decisión para producir una predicción más precisa y estable. Es un tipo de algoritmo de aprendizaje supervisado que se puede utilizar tanto para tareas de clasificación como de regresión.

Cada árbol de decisión tiene una varianza alta, pero cuando los combinamos todos en paralelo, la varianza resultante es baja ya que cada árbol de decisión se entrena perfectamente con esos datos de muestra en particular y, por lo tanto, el resultado no depende de un árbol de decisión sino de múltiples árboles de decisión. En el caso de un problema de clasificación, el resultado final se toma utilizando el clasificador de votación mayoritaria. En el caso de un problema de regresión, el producto final es la media de todos los productos. Esta parte se llama Agregación .



Funcionamiento del modelo de regresión de bosque aleatorio

Funcionamiento del modelo de regresión de bosque aleatorio

¿Qué es la regresión forestal aleatoria?

La regresión de bosque aleatoria en el aprendizaje automático es una conjunto técnico capaz de realizar ambas regresión y clasificación tareas con el uso de múltiples árboles de decisión y una técnica llamada Bootstrap and Aggregation, comúnmente conocida como harpillera . La idea básica detrás de esto es combinar múltiples árboles de decisión para determinar el resultado final en lugar de depender de árboles de decisión individuales.

Random Forest tiene múltiples árboles de decisión como modelos de aprendizaje base. Realizamos aleatoriamente muestreo de filas y muestreo de características del conjunto de datos formando conjuntos de datos de muestra para cada modelo. Esta parte se llama Bootstrap.



Necesitamos abordar la técnica de regresión de Random Forest como cualquier otra aprendizaje automático técnica.

  • Diseñe una pregunta o datos específicos y obtenga la fuente para determinar los datos requeridos.
  • Asegúrese de que los datos estén en un formato accesible; de ​​lo contrario, conviértalos al formato requerido.
  • Especifique todas las anomalías notables y los puntos de datos faltantes que puedan ser necesarios para lograr los datos requeridos.
  • Cree un modelo de aprendizaje automático.
  • Establezca el modelo de referencia que desea lograr
  • Entrene el modelo de aprendizaje automático de datos.
  • Proporcionar información sobre el modelo con datos de prueba.
  • Ahora compare las métricas de rendimiento tanto de los datos de prueba como de los datos pronosticados del modelo.
  • Si no satisface sus expectativas, puede intentar mejorar su modelo en consecuencia, datar sus datos o utilizar otra técnica de modelado de datos.
  • En esta etapa, usted interpreta los datos que ha obtenido y los informa en consecuencia.

Regresión de bosque aleatoria en Python

Usaremos una técnica de muestra similar en el siguiente ejemplo. A continuación se muestra una implementación de muestra paso a paso de la regresión de bosque aleatoria, en el conjunto de datos que se puede descargar aquí: https://bit.ly/417n3N5

Pitón Las bibliotecas nos facilitan mucho el manejo de los datos y la realización de tareas típicas y complejas con una sola línea de código.

  • pandas – Esta biblioteca ayuda a cargar el marco de datos en un formato de matriz 2D y tiene múltiples funciones para realizar tareas de análisis de una sola vez.
  • numpy – Los arreglos Numpy son muy rápidos y pueden realizar grandes cálculos en muy poco tiempo.
  • Matplotlib / nacido en el mar – Esta biblioteca se utiliza para dibujar visualizaciones.
  • Sklearn: este módulo contiene varias bibliotecas que tienen funciones preimplementadas para realizar tareas desde el preprocesamiento de datos hasta el desarrollo y evaluación de modelos.
  • AleatorioBosqueRegresor – Este es el modelo de regresión que se basa en el modelo Random Forest o el aprendizaje conjunto que usaremos en este artículo utilizando la biblioteca sklearn.
  • aprender: Esta biblioteca es la biblioteca principal de aprendizaje automático en Python. Proporciona una amplia gama de herramientas para preprocesar, modelar, evaluar e implementar modelos de aprendizaje automático.
  • Codificador de etiquetas: Esta clase se utiliza para codificar datos categóricos en valores numéricos.
  • KNN Computadora: Esta clase se utiliza para imputar valores faltantes en un conjunto de datos utilizando un enfoque de k vecinos más cercanos.
  • tren_prueba_split: Esta función se utiliza para dividir un conjunto de datos en conjuntos de entrenamiento y prueba.
  • Escalador estándar: Esta clase se utiliza para estandarizar características eliminando la media y escalando a la varianza unitaria.
  • puntuación_f1: Esta función se utiliza para evaluar el rendimiento de un modelo de clasificación utilizando la puntuación F1.
  • Regresor de bosque aleatorio: Esta clase se utiliza para entrenar un modelo de regresión forestal aleatoria.
  • puntuación_cross_val: Esta función se utiliza para realizar una validación cruzada k veces para evaluar el rendimiento de un modelo.

Paso 1: importar bibliotecas

Aquí estamos importando todas las bibliotecas necesarias.

Python3




import> pandas as pd> import> matplotlib.pyplot as plt> import> seaborn as sns> import> sklearn> import> warnings> from> sklearn.preprocessing>import> LabelEncoder> from> sklearn.impute>import> KNNImputer> from> sklearn.model_selection>import> train_test_split> from> sklearn.preprocessing>import> StandardScaler> from> sklearn.metrics>import> f1_score> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.model_selection>import> cross_val_score> warnings.filterwarnings(>'ignore'>)>

>

>

Paso 2: importar conjunto de datos

Ahora carguemos el conjunto de datos en el marco de datos del panda. Para un mejor manejo de datos y aprovechar las prácticas funciones para realizar tareas complejas de una sola vez.

tuplas de java

Python3




df>=> pd.read_csv(>'Salaries.csv'>)> print>(df)>

>

>

Producción:

 Position Level Salary 0 Business Analyst 1 45000 1 Junior Consultant 2 50000 2 Senior Consultant 3 60000 3 Manager 4 80000 4 Country Manager 5 110000 5 Region Manager 6 150000 6 Partner 7 200000 7 Senior Partner 8 300000 8 C-level 9 500000 9 CEO 10 1000000>

Aquí el.info()>El método proporciona una descripción general rápida de la estructura, los tipos de datos y el uso de memoria del conjunto de datos.

Python3




df.info()>

>

>

Producción:

 RangeIndex: 10 entries, 0 to 9 Data columns (total 3 columns):  # Column Non-Null Count Dtype  --- ------ -------------- -----   0 Position 10 non-null object  1 Level 10 non-null int64   2 Salary 10 non-null int64  dtypes: int64(2), object(1) memory usage: 372.0+ bytes>

Paso 3: Preparación de datos

Aquí el código extraerá dos subconjuntos de datos del conjunto de datos y los almacenará en variables separadas.

  • Funciones de extracción: Extrae las características del DataFrame y las almacena en una variable llamadaX>.
  • Extracción de la variable objetivo: Extrae la variable de destino del DataFrame y la almacena en una variable llamaday>.

Python3




# Assuming df is your DataFrame> X>=> df.iloc[:,>1>:>2>].values>#features> y>=> df.iloc[:,>2>].values># Target variable>

>

superíndice en ilustrador

>

Paso 4: Modelo de regresor de bosque aleatorio

El código procesa datos categóricos codificándolos numéricamente, combina los datos procesados ​​con datos numéricos y entrena un modelo de regresión de bosque aleatorio utilizando los datos preparados.

Python3




convertir un int a cadena c++
import> pandas as pd> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.preprocessing>import> LabelEncoder> >Check>for> and> handle categorical variables> label_encoder>=> LabelEncoder()> x_categorical>=> df.select_dtypes(include>=>[>'object'>]).>apply>(label_encoder.fit_transform)> x_numerical>=> df.select_dtypes(exclude>=>[>'object'>]).values> x>=> pd.concat([pd.DataFrame(x_numerical), x_categorical], axis>=>1>).values> # Fitting Random Forest Regression to the dataset> regressor>=> RandomForestRegressor(n_estimators>=>10>, random_state>=>0>, oob_score>=>True>)> # Fit the regressor with x and y data> regressor.fit(x, y)>

>

>

Paso 5: hacer predicciones y evaluación

El código evalúa el modelo de regresión de bosque aleatorio entrenado:

  • Puntuación fuera de bolsa (OOB), que estima el rendimiento de generalización del modelo.
  • Hace predicciones utilizando el modelo entrenado y las almacena en la matriz de 'predicciones'.
  • Evalúa el desempeño del modelo utilizando las métricas de error cuadrático medio (MSE) y R cuadrado (R2).

Puntuación fuera de bolsa en RandomForest

Puntuación de bolsa o puntuación fuera de control es el tipo de técnica de validación que se utiliza principalmente en algoritmos de ensacado para validar el algoritmo de ensacado. Aquí, una pequeña parte de los datos de validación se toma de la corriente principal de datos y se realizan predicciones sobre los datos de validación particulares y se comparan con los demás resultados.

La principal ventaja que ofrece la puntuación OOB es que aquí el algoritmo de ensacado no ve los datos de validación y es por eso que los resultados en la puntuación OOB son los resultados reales que indicaron el rendimiento real del algoritmo de ensacado.

Para obtener la puntuación OOB del algoritmo Random Forest en particular, es necesario establecer el valor Verdadero para el parámetro OOB_Score en el algoritmo.

Python3




# Evaluating the model> from> sklearn.metrics>import> mean_squared_error, r2_score> # Access the OOB Score> oob_score>=> regressor.oob_score_> print>(f>'Out-of-Bag Score: {oob_score}'>)> # Making predictions on the same data or new data> predictions>=> regressor.predict(x)> # Evaluating the model> mse>=> mean_squared_error(y, predictions)> print>(f>'Mean Squared Error: {mse}'>)> r2>=> r2_score(y, predictions)> print>(f>'R-squared: {r2}'>)>

>

>

Producción:

Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>

Paso 6: visualización

Ahora visualicemos los resultados obtenidos al utilizar el modelo de regresión RandomForest en nuestro conjunto de datos de salarios.

  • Crea una cuadrícula de puntos de predicción que cubren el rango de valores de las características.
  • Traza los puntos de datos reales como puntos de dispersión azules.
  • Traza los valores previstos para la cuadrícula de predicción como una línea verde.
  • Agrega etiquetas y un título a la trama para una mejor comprensión.

Python3




import> numpy as np> X_grid>=> np.arange(>min>(X),>max>(X),>0.01>)> X_grid>=> X_grid.reshape(>len>(X_grid),>1>)> > plt.scatter(X,y, color>=>'blue'>)>#plotting real points> plt.plot(X_grid, regressor.predict(X_grid),color>=>'green'>)>#plotting for predict points> > plt.title(>'Random Forest Regression Results'>)> plt.xlabel(>'Position level'>)> plt.ylabel(>'Salary'>)> plt.show()>

>

>

Producción:

Captura de pantalla-2023-12-04-101235

Paso 7: Visualización de un árbol de decisión único a partir del modelo de bosque aleatorio

El código visualiza uno de los árboles de decisión del modelo Random Forest entrenado. Traza el árbol de decisión seleccionado y muestra el proceso de toma de decisiones de un único árbol dentro del conjunto.

Python3




from> sklearn.tree>import> plot_tree> import> matplotlib.pyplot as plt> # Assuming regressor is your trained Random Forest model> # Pick one tree from the forest, e.g., the first tree (index 0)> tree_to_plot>=> regressor.estimators_[>0>]> # Plot the decision tree> plt.figure(figsize>=>(>20>,>10>))> plot_tree(tree_to_plot, feature_names>=>df.columns.tolist(), filled>=>True>, rounded>=>True>, fontsize>=>10>)> plt.title(>'Decision Tree from Random Forest'>)> plt.show()>

>

>

Producción:

Captura de pantalla-2023-12-05-111140 Aplicaciones de la regresión de bosque aleatoria

La regresión de bosque aleatorio tiene una amplia gama de problemas del mundo real, que incluyen:

  • Predicción de valores numéricos continuos: Predecir los precios de la vivienda, los precios de las acciones o el valor de vida del cliente.
  • Identificación de factores de riesgo: Detectar factores de riesgo de enfermedades, crisis financieras u otros eventos negativos.
  • Manejo de datos de alta dimensión: Analizar conjuntos de datos con una gran cantidad de características de entrada.
  • Capturar relaciones complejas: Modelado de relaciones complejas entre características de entrada y la variable objetivo.

Ventajas de la regresión forestal aleatoria

  • Es fácil de usar y menos sensible a los datos de entrenamiento en comparación con el árbol de decisión.
  • Es más preciso que el árbol de decisión algoritmo.
  • Es eficaz para manejar grandes conjuntos de datos que tienen muchos atributos.
  • Puede manejar datos faltantes, valores atípicos y funciones ruidosas.

Desventajas de la regresión forestal aleatoria

  • El modelo también puede resultar difícil de interpretar.
  • Este algoritmo puede requerir cierta experiencia en el dominio para elegir los parámetros apropiados, como la cantidad de árboles de decisión, la profundidad máxima de cada árbol y la cantidad de características a considerar en cada división.
  • Es computacionalmente costoso, especialmente para grandes conjuntos de datos.
  • Puede sufrir de sobreajuste si el modelo es demasiado complejo o el número de árboles de decisión es demasiado alto.

Conclusión

La regresión de bosque aleatorio se ha convertido en una poderosa herramienta para tareas de predicción continua, con ventajas sobre los árboles de decisión tradicionales. Su capacidad para manejar datos de alta dimensión, capturar relaciones complejas y reducir el sobreajuste lo ha convertido en una opción popular para una variedad de aplicaciones. La biblioteca scikit-learn de Python permite la implementación, optimización y evaluación de modelos de regresión de bosque aleatorio, lo que la convierte en una técnica accesible y eficaz para los profesionales del aprendizaje automático.

Preguntas frecuentes (FAQ)

1. ¿Qué es Python de regresión de bosque aleatorio?

Random Forest Regression Python es un método de aprendizaje conjunto que utiliza múltiples árboles de decisión para hacer predicciones. Es un algoritmo potente y versátil que es muy adecuado para tareas de regresión.

2. ¿Para qué sirve la regresión forestal aleatoria?

La regresión de bosque aleatoria se puede utilizar para predecir una variedad de variables objetivo, incluidos precios, ventas, pérdida de clientes y más. Es un algoritmo robusto que no se sobreajusta fácilmente, lo que lo convierte en una buena opción para aplicaciones del mundo real.

javascript si declaración

3. ¿Cuál es la diferencia entre bosque aleatorio y regresión?

Random Forest es un método de aprendizaje conjunto, mientras que la regresión es un tipo de algoritmo de aprendizaje supervisado. Random Forest utiliza múltiples árboles de decisión para hacer predicciones, mientras que la regresión utiliza un único modelo para hacer predicciones.

4. ¿Cómo se ajustan los hiperparámetros de la regresión de bosque aleatorio?

Existen varios métodos para ajustar los hiperparámetros de la regresión de bosque aleatoria, como por ejemplo:

  • Búsqueda de cuadrícula: La búsqueda en cuadrícula implica probar sistemáticamente diferentes combinaciones de valores de hiperparámetros para encontrar la mejor combinación.
  • Búsqueda aleatoria: La búsqueda aleatoria muestra aleatoriamente diferentes combinaciones de valores de hiperparámetros para encontrar una buena combinación.

5. ¿Por qué el bosque aleatorio es mejor que la regresión?

Random Forest es generalmente más preciso y sólido que la regresión. También es menos propenso al sobreajuste, lo que significa que es más probable que se generalice bien a datos nuevos.