Random Forest es un algoritmo flexible de machine learning que genera grandes resultados aún sin tunear los hyper-parameter. Es uno de los más usados y sirve tanto para clasificar como para regresiones.
Random Forest es un algoritmo de aprendizaje supervisado, es decir, que aprende en función de datos anteriores de los cuales se conoce la clase a la que pertenecen.
El forest que genera es de árboles de decisión mayormente generados con el método de bagging que se basa en que la combinación de modelos aumenta el resultado general, es decir que, se generan varios árboles de decisión que se promedian para llegar a una decisión más estable y precisa.
Con Random Forest se puede hacer regresiones mediante el Random Forest Regressor. El algoritmo, en vez de buscar el atributo más importante cuando divide un nodo, busca el mejor atributo entre un set aleatorio de atributos.
Una gran cualidad es que es sencillo medir la importancia de los atributos en la predicción. Sklearn provee una herramienta que mide la importancia de un atributo mirando cuanto un nodo, usando ese atributo, reduce la impureza.
Viendo así la importancia de los atributos, se puede definir eliminar algunos por no contribuir a la predicción. Esto es importante, ya que es regla de machine learning que cuantos más atributos están en juego en la predicción, mayor es la probabilidad de caer en overfitting.
Los hiperparámetros son usados para mejorar la capacidad predictiva o aumentar la velocidad de cálculo: n_estimators (número de árboles). En general, cuantos más árboles se generan, más estable y preciso es el modelo, pero el tiempo de computación aumenta. max_features (cantidad máxima de atributos que se consideran para partir un nodo), min_sample_leaf (minimo número de hojas necesarias para partir un nodo).
Es utilizado en innumerables aplicaciones, muy útil para sacar un modelo rápidamente aunque se puedan encontrar mejores, pero que tomen más tiempo como una red neuronal.
Bootstrapping: Generación de varios datasets a partir de una cantidad limitada de datos donde se seleccionan grupos de ellos en forma aleatoria CON reposición, es decir que pueden aparecer datos repetidos en el nuevo set generado y datos que nunca se seleccionen dentro de los mismos (Out of Bag).
Random forest toma datasets generados con bootstrapping. Selecciona solo una determinada cantidad de variables candidatas en forma aleatoria para evaluarlas y determinar el root, y así para el resto de los nodos con las variables que quedan sin usar.
Para clasificar, evalúa el nuevo dato en los distintos árboles y clasifica por votación simple de cada árbol de los cientos generados.
Se puede medir la performance del random forest mediante el acierto sobre las instancias Out of Bag (las que quedaron sin ser elegidas por el bootstrapping).
Bootstrapping + aggregate data (to make decision) = bagging.
Para ajustar el random forest, se puede empezar utilizando una cantidad de features a seleccionar aleatoriamente para evaluar los nodos, igual a la raíz de la cantidad de variables, e ir variando esa cantidad.
Titanic Project – Random Forest con Python – Random Forest con R