Clasificador de bosque aleatorio: descripción general, cómo funciona, pros y contras

Publicado: 2021-06-18

¿Alguna vez te has preguntado cómo elige Netflix una película para recomendarte? ¿O cómo elige Amazon los productos para mostrar en su feed?

Todos utilizan sistemas de recomendación, una tecnología que utiliza el clasificador de bosque aleatorio.

El clasificador de bosque aleatorio se encuentra entre los algoritmos de clasificación más populares. Hoy aprenderemos sobre este sólido algoritmo de aprendizaje automático y veremos cómo funciona. También aprenderá sobre su implementación, ya que compartiremos un tutorial paso a paso sobre cómo usar el clasificador de bosque aleatorio en un problema de la vida real.

Cubriremos las ventajas y desventajas de Random Forest Sklearn y mucho más en los siguientes puntos.

Tabla de contenido

Clasificador de bosque aleatorio: una introducción

El clasificador de bosque aleatorio es un algoritmo de aprendizaje supervisado que puede usar para problemas de regresión y clasificación. Es uno de los algoritmos de aprendizaje automático más populares debido a su alta flexibilidad y facilidad de implementación.

¿Por qué el clasificador de bosque aleatorio se llama bosque aleatorio?

Esto se debe a que consta de múltiples árboles de decisión al igual que un bosque tiene muchos árboles. Además de eso, utiliza la aleatoriedad para mejorar su precisión y combatir el sobreajuste, lo que puede ser un gran problema para un algoritmo tan sofisticado. Estos algoritmos crean árboles de decisión basados ​​en una selección aleatoria de muestras de datos y obtienen predicciones de cada árbol. Después de eso, seleccionan la mejor solución viable a través de votos.

Tiene numerosas aplicaciones en nuestra vida diaria, como selectores de funciones, sistemas de recomendación y clasificadores de imágenes. Algunas de sus aplicaciones de la vida real incluyen la detección de fraudes, la clasificación de solicitudes de préstamos y la predicción de enfermedades. Forma la base del algoritmo Boruta, que selecciona características vitales en un conjunto de datos.

¿Como funciona?

Suponiendo que su conjunto de datos tenga "m" características, el bosque aleatorio elegirá aleatoriamente "k" características donde k < m. Ahora, el algoritmo calculará el nodo raíz entre las k características eligiendo un nodo que tenga la mayor ganancia de información.

Después de eso, el algoritmo divide el nodo en nodos secundarios y repite este proceso "n" veces. Ahora tienes un bosque con n árboles. Finalmente, realizará bootstrapping, es decir, combinará los resultados de todos los árboles de decisión presentes en su bosque.

Sin duda, es uno de los algoritmos más sofisticados, ya que se basa en la funcionalidad de los árboles de decisión.

Técnicamente, es un algoritmo de conjunto. El algoritmo genera los árboles de decisión individuales a través de una indicación de selección de atributos. Cada árbol se basa en una muestra aleatoria independiente. En un problema de clasificación, todos los árboles votan y la clase más popular es el resultado final. Por otro lado, en un problema de regresión, calculará el promedio de todas las salidas del árbol y ese sería su resultado final.

Una implementación de Python de bosque aleatorio es mucho más simple y robusta que otros algoritmos no lineales utilizados para problemas de clasificación.

El siguiente ejemplo te ayudará a entender cómo usas el clasificador de bosque aleatorio en tu día a día:

Ejemplo

Supongamos que desea comprar un automóvil nuevo y le pide recomendaciones a su mejor amigo Supratik. Le preguntaría acerca de sus preferencias, su presupuesto y sus requisitos y también compartiría sus experiencias pasadas con su automóvil para darle una recomendación.

Aquí, Supratik está utilizando el método del árbol de decisiones para brindarle comentarios basados ​​en su respuesta. Después de sus sugerencias, te sientes inseguro con sus consejos, así que le preguntas a Aditya sobre sus recomendaciones y él también te pregunta sobre tus preferencias y otros requisitos.

Suponga que itera este proceso y le hace esta pregunta a sus amigos. Ahora tienes varios coches para elegir. Reúnes todos los votos de tus amigos y decides comprar el coche que tenga más votos. Ahora ha utilizado el método del bosque aleatorio para elegir un automóvil para comprar.

Sin embargo, cuanto más itere este proceso, más propenso será a sobreajustarse. Esto se debe a que su conjunto de datos en los árboles de decisión seguirá siendo más específico. El bosque aleatorio combate este problema mediante el uso de la aleatoriedad.

Pros y contras del clasificador de bosque aleatorio

Cada algoritmo de aprendizaje automático tiene sus ventajas y desventajas. Las siguientes son las ventajas y desventajas del algoritmo de clasificación de bosques aleatorios:

Ventajas

  • El algoritmo de bosque aleatorio es significativamente más preciso que la mayoría de los clasificadores no lineales.
  • Este algoritmo también es muy robusto porque utiliza múltiples árboles de decisión para llegar a su resultado.
  • El clasificador de bosque aleatorio no enfrenta el problema de sobreajuste porque toma el promedio de todas las predicciones, cancelando los sesgos y, por lo tanto, solucionando el problema de sobreajuste.
  • Puede utilizar este algoritmo tanto para problemas de regresión como de clasificación, lo que lo convierte en un algoritmo muy versátil.
  • Los bosques aleatorios no permiten que los valores faltantes causen un problema. Pueden usar valores medianos para reemplazar las variables continuas o calcular el promedio ponderado por proximidad de los valores faltantes para resolver este problema.
  • Este algoritmo le ofrece una importancia relativa de las características que le permite seleccionar fácilmente las características que más contribuyen para su clasificador.

Desventajas

  • Este algoritmo es sustancialmente más lento que otros algoritmos de clasificación porque usa múltiples árboles de decisión para hacer predicciones. Cuando un clasificador de bosque aleatorio hace una predicción, cada árbol en el bosque tiene que hacer una predicción para la misma entrada y votar por la misma. Este proceso puede llevar mucho tiempo.
  • Debido a su lentitud, los clasificadores de bosques aleatorios pueden resultar inadecuados para las predicciones en tiempo real.
  • El modelo puede ser bastante difícil de interpretar en comparación con un árbol de decisiones, ya que puede realizar una selección siguiendo la ruta del árbol. Sin embargo, eso no es posible en un bosque aleatorio ya que tiene múltiples árboles de decisión.

Diferencia entre bosque aleatorio y árboles de decisión

Un árbol de decisión, como sugiere su nombre, es un diagrama de flujo en forma de árbol con ramas y nodos. El algoritmo divide los datos en función de las características de entrada en cada nodo y genera múltiples ramas como salida. Es un proceso iterativo y aumenta el número de ramas creadas (salida) y la diferenciación de los datos. Este proceso se repite hasta que se crea un nodo donde casi todos los datos pertenecen a la misma clase y no son posibles más bifurcaciones o divisiones.

Por otro lado, un bosque aleatorio usa árboles de decisión múltiple, de ahí el nombre 'bosque'. Reúne votos de los distintos árboles de decisión que utilizó para hacer la predicción requerida.

Por lo tanto, la principal diferencia entre un clasificador de bosque aleatorio y un árbol de decisión es que el primero usa una colección del segundo. Aquí hay algunas diferencias adicionales entre los dos:

  • Los árboles de decisión se enfrentan al problema del sobreajuste, pero los bosques aleatorios no. Esto se debe a que los clasificadores de bosques aleatorios usan subconjuntos aleatorios para contrarrestar este problema.
  • Los árboles de decisión son más rápidos que los bosques aleatorios. Los bosques aleatorios usan árboles de decisión múltiples, lo que requiere mucho poder de cómputo y, por lo tanto, más tiempo.
  • Los árboles de decisión son más fáciles de interpretar que los bosques aleatorios y puede convertir los primeros fácilmente de acuerdo con las reglas, pero es bastante difícil hacer lo mismo con los últimos.

Construyendo el Algoritmo (Random Forest Sklearn)

En el siguiente ejemplo, hemos realizado una implementación de Python de bosque aleatorio mediante el uso de la biblioteca scikit-learn. Puede seguir los pasos de este tutorial para crear su propio clasificador de bosque aleatorio.

Si bien el 80 % de cualquier tarea de ciencia de datos requiere que optimice los datos, lo que incluye limpieza de datos, limpieza, corrección de valores faltantes y mucho más. Sin embargo, en este ejemplo, nos centraremos únicamente en la implementación de nuestro algoritmo.

Primer paso: importar las bibliotecas y cargar el conjunto de datos

Primero, tendremos que importar las bibliotecas requeridas y cargar nuestro conjunto de datos en un marco de datos.

Aporte:

#Importando las bibliotecas requeridas

importar pandas como pd

importar numpy como np

importar matplotlib.pyplot como plt

#Importando el conjunto de datos

desde sklearn.datasets importar load_iris
conjunto de datos = load_iris ()

Segundo paso: dividir el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba

Después de importar las bibliotecas necesarias y cargar los datos, debemos dividir nuestro conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba. El conjunto de entrenamiento nos ayudará a entrenar el modelo y el conjunto de prueba nos ayudará a determinar qué tan preciso es realmente nuestro modelo.

Aporte:

# Ajustar el clasificador al conjunto de entrenamiento

de sklearn.tree importar DecisionTreeClassifier

modelo = DecisionTreeClassifier (criterio = 'entropía', divisor = 'mejor', estado_aleatorio = 0)

modelo.fit(tren_X, tren_y)

Producción:

DecisionTreeClassifier(class_weight=Ninguno, criterio='entropía', max_ depth=Ninguno,
max_features=Ninguno, max_leaf_nodes=Ninguno,
min_impurity_decrease=0.0, min_impurity_split=Ninguno,
min_muestras_hoja=1, min_muestras_split=2,
min_weight_fraction_leaf=0.0, presort=Falso, random_state=0,

divisor = 'mejor')

Tercer paso: crear un clasificador de bosque aleatorio

Ahora, crearemos nuestro clasificador de bosque aleatorio usando Python y scikit-learn.

Aporte:

#Ajustando el clasificador al conjunto de entrenamiento

de sklearn.ensemble importar RandomForestClassifier

modelo = RandomForestClassifier(n_estimators=100, criterio-'entropía', random_state = 0)

modelo.fit(tren_X, tren_y)

Producción:

RandomForestClassifier(bootstrap=Verdadero, class_weight=Ninguno, criterio='entropía',

max_depth=Ninguno, max_features='automático', max_leaf_nodes=Ninguno,

min_impurity_decrease=0.0, min_impurity_split=Ninguno,

min_muestras_hoja=1, min_muestras_split=2,

min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=Ninguno,

oob_score=Falso, random_state=0, detallado=0, warm_start=Falso)

Cuarto paso: Predecir los resultados y hacer la matriz de Confusión

Una vez que hemos creado nuestro clasificador, podemos predecir los resultados usándolo en el conjunto de prueba y hacer la matriz de confusión y obtener su puntaje de precisión para el modelo. Cuanto mayor sea la puntuación, más preciso será nuestro modelo.

Aporte:

#Predecir los resultados del conjunto de pruebas

y_pred = modo.predecir(X_prueba)

#Crear la matriz de confusión

de sklearn.metrics importar confusion_matrix

cm = matriz_confusión(y_test, y_pred)

cm

Salida :

matriz ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

Entrada :

#Obtén la puntuación de tu modelo

modelo.puntuación(X_test, y_test)

Salida :

0.977777777777777

Conclusión

Los clasificadores de bosques aleatorios tienen muchas aplicaciones. Se encuentran entre los algoritmos de aprendizaje automático más robustos y son imprescindibles para cualquier profesional de IA y ML.

Si está interesado en obtener más información sobre la inteligencia artificial, consulte el programa Executive PG de IIIT-B y upGrad en aprendizaje automático e IA, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, IIIT -Estado de exalumno B, más de 5 proyectos prácticos finales y asistencia laboral con las mejores empresas.

¿Qué es Random Forest en el aprendizaje automático?

Random Forest es un método de aprendizaje conjunto que puede dar predicciones más precisas que la mayoría de los otros algoritmos de aprendizaje automático. Se usa comúnmente en el aprendizaje de árboles de decisión. Un bosque se crea usando árboles de decisión, cada árbol de decisión es un clasificador fuerte en sí mismo. Estos árboles de decisión se utilizan para crear un bosque de clasificadores fuertes. Este bosque de clasificadores fuertes brinda una mejor predicción que los árboles de decisión u otros algoritmos de aprendizaje automático.

¿Cuáles son las diferencias entre el bosque aleatorio y los árboles de decisión?

Un árbol de decisión es un diagrama de flujo que describe el proceso de análisis para un problema dado. Tendemos a usarlos con más frecuencia para problemas de clasificación. Un árbol de decisión describe el proceso de eliminación necesario para hacer una clasificación. A diferencia del árbol de decisión, el bosque aleatorio se basa en un conjunto de árboles y muchos estudios demuestran que es más poderoso que el árbol de decisión en general. Además, el bosque aleatorio es más resistente al sobreajuste y es más estable cuando faltan datos.

¿Cuáles son las desventajas del bosque aleatorio?

Random Forest es un modelo ligeramente complejo. No es un modelo de caja negra y no es fácil interpretar los resultados. Es más lento que otros modelos de aprendizaje automático. Requiere una gran cantidad de características para obtener una buena precisión. Los bosques aleatorios son un tipo de método de aprendizaje de conjunto, como otros métodos de conjunto, como embolsado, impulso o apilamiento. Estos métodos tienden a ser inestables, lo que significa que si los datos de entrenamiento cambian ligeramente, el modelo final puede cambiar drásticamente.