Random forest
# Random forest

Random forest (o random forests) también conocidos en castellano como Bosques aleatorios es una combinación de árboles predictores tal que cada árbol depende de los valores de un vector aleatorio probado independientemente y con la misma distribución para cada uno de estos. Es una modificación sustancial de bagging que construye una larga colección de árboles no correlacionados y luego los promedia.

El algoritmo para inducir un random forest fue desarrollado por Leo Breiman y Adele Cutler y Random forests es su marca de fábrica. El término aparece de la primera propuesta de Random decision forests, hecha por Tin Kam Ho de Bell Labs en 1995. El método combina la idea de bagging de Breiman y la selección aleatoria de atributos, introducida independientemente por Ho, Amit y Geman, para construir una colección de árboles de decisión con variación controlada.

La selección de un subconjunto aleatorio de atributos es un ejemplo del método random subspace, el que, según la formulación de Ho, es una manera de llevar a cabo la discriminación estocástica propuesta por Eugenio Kleinberg.

En muchos problemas el rendimiento del algoritmo random forest es muy similar a la del boosting, y es más simple de entrenar y ajustar. Como consecuencia, el Random forest es popular y ampliamente utilizado.

## Definición de random forests

La idea esencial del bagging es promediar muchos modelos ruidosos pero aproximadamente imparciales, y por tanto reducir la variación. Los árboles son los candidatos ideales para el bagging, dado que ellos pueden registrar estructuras de interacción compleja en los datos, y si crecen suficientemente profundo, tienen relativamente baja parcialidad. Producto de que los árboles son notoriamente ruidosos, ellos se benefician enormemente al promediar.

Cada árbol es construido usando el siguiente algoritmo:

* Sea N el número de casos de prueba, M es el número de variables en el clasificador.
* Sea m el número de variables de entrada a ser usado para determinar la decisión en un nodo dado; m debe ser mucho menor que M
* Elegir un conjunto de entrenamiento para este árbol y usar el resto de los casos de prueba para estimar el error.
* Para cada nodo del árbol, elegir aleatoriamente m variables en las cuales basar la decisión. Calcular la mejor partición del conjunto de entrenamiento a partir de las m variables.

Para la predicción un nuevo caso es empujado hacia abajo por el árbol. Luego se le asigna la etiqueta del nodo terminal donde termina. Este proceso es iterado por todos los árboles en el ensamblado, y la etiqueta que obtenga la mayor cantidad de incidencias es reportada como la predicción.

## Características (o rasgos) y Ventajas

Las ventajas del random forests son:

* Ser uno de los algoritmos de aprendizaje más certeros que hay disponible. Para un conjunto de datos lo suficientemente grande produce un clasificador muy certero.
* Correr eficientemente en bases de datos grandes.
* Manejar cientos de variables de entrada sin excluir ninguna.
* Dar estimaciones de qué variables son importantes en la clasificación.
* Tener un método eficaz para estimar datos perdidos y mantener la exactitud cuando una gran proporción de los datos está perdida.
* Computar los prototipos que dan información sobre la relación entre las variables y la clasificación.
* Computar las proximidades entre los pares de casos que pueden usarse en los grupos, localizando valores atípicos, o (ascendiendo) dando vistas interesantes de los datos.
* Ofrecer un método experimental para detectar las interacciones de las variables.

## Desventajas

* Se ha observado que Random forests sobreajusta en ciertos grupos de datos con tareas de clasificación/regresión ruidosas.
* A diferencia de los árboles de decisión, la clasificación hecha por random forests es difícil de interpretar.
* Para los datos que incluyen variables categóricas con diferente número de niveles, el random forests se parcializa a favor de esos atributos con más niveles. Por consiguiente, la posición que marca la variable no es fiable para este tipo de datos. Métodos como las permutaciones parciales se han usado para resolver el problema
* Si los datos contienen grupos de atributos correlacionados con similar relevancia para el rendimiento, entonces los grupos más pequeños están favorecidos sobre los grupos más grandes.

## Visualización

Para formar una visualización intuitiva del espacio-modelo representado por un random forests, se creó un set de datos que consiste en 200 puntos aleatorios (100 puntos verdes y 100 puntos rojos). Los puntos verdes eran obtenidos a partir de una distribución Gaussiana con un centroide en (0,1), y los puntos rojos eran obtenidos de una distribución de Gaussiana con un centroide en (1,0). En ambos casos, la variación era circular con un radio medio de 1.

El modelo del random forest, consistente de 50 árboles, entrenados usando estos datos. La pureza del color indica la porción de los 50 árboles que votaron de acuerdo. Un over-fit (sobre ajuste) significativo puede ser observado en la visualización de Random Forest después del entrenamiento.

En contraste, se presenta la visualización de un modelo de regresión logístico (menos propenso al sobre ajuste), que también fue entrenado usando estos mismos datos.

