Hola, vamos a proseguir con la técnica de "Random Forest". Hemos visto que los árboles representan una técnica muy interesante, tanto para predecir variables cuantitativas como para predecir variables binarias. No obstante, aquí la idea es intentar recoger la información de diversos árboles, de hecho, una multitud de árboles ejecutados para los mismos problemas pero con particularidades distintas, con pequeñas diferencias. La idea es, también, que la contribución de cada uno de estos árboles al conjunto va a generar un bosque con mayores capacidades predictivas. Esta técnica también se aplica, tanto para variables cuantitativas como para variables binarias. La primera tarea que llevamos a cabo es la captura de los datos, la inspección, por si queremos recordar su contenido, y algunas transformaciones preliminares como, por ejemplo, la construcción de la columna para identificar la compañía que operaba el vuelo. Vamos a empezar con los bosques para regresión, es decir, que la variable objetivo es una variable cuantitativa, recordad "ArrDelay" representaba el retraso del avión en minutos. Las variables explicativas, las variedades con las que vamos a construir los distintos árboles y el modelo predictivo final son todas estas, de aquí que vienen empaquetadas en este vector. Procedemos, por lo tanto, generando las dos bases de datos como es habitual, para entrenar y para testar. El árbol ya está listo para ser ejecutado. Aquí definimos las características del bosque, y también insertamos una pequeña herramienta de control para medir los tiempos de ejecución. Esto es, bueno, más que nada interesante porque estas técnicas son más bien pesadas y podemos intentar medir, y controlar y ajustar los tiempos de ejecución para optimizar estos procesos. "Random Forest" permite identificar una serie de parámetros, la técnica propia de "Random Forest" nos permite identificar el número de árboles que queremos construir, la tasa de remuestreo en la que se va a basar cada subárbol, y la estrategia de selección de variables que van a contribuir a cada partición dentro de cada árbol. En particular, ahora mismo, el criterio es automático. Aquí tenemos un cien por cien como tasa de remuestreo y vamos a solicitar 500 árboles. También tenemos una serie de parámetros complementarios asociados a las particularidades de cada árbol. Aquí, estos parámetros vendrían a ser los mismos que vimos para árboles de regresión. Tras ejecutar el modelo, vemos que aquí ejecutamos el modelo y aquí llevamos a cabo las predicciones del mismo. En total, el tiempo de ejecución de entrenamiento para este caso particular ha sido considerable. No obstante, el entorno de trabajo actual es óptimo para este tipo de tareas puesto que ejecutar un número elevado de árboles puede llevarse a cabo en paralelo y, justamente, Spark es una herramienta apropiada para este tipo de enfoques de computación. Tras ejecutar el árbol, podemos proceder inspeccionando las predicciones realizadas, dado que son valores cuantitativos. Aquí, vemos también las predicciones pertinentes y podemos evaluar su capacidad de ajuste a través de métricas como, por ejemplo, el "r" cuadrado. En este caso particular, el "r" cuadrado para este modelo es del 63, 64 por ciento. Esto es replicado en la base de datos de test dando lugar a un "r" cuadrado ligeramente inferior. Este "r" cuadrado, comparado con lo que se había obtenido empleando otros modelos, es sensiblemente inferior. Hemos comentado que este problema particular tiene una componente lineal muy importante que estos métodos, quizá, no acaben de capturar o de afinar. Otros criterios que podríamos haber empleado en la ejecución de este bosque, como hemos dicho, hacen referencia a los criterios particulares de cada uno de los bosques y a los criterios del bosque en sí. Tasa de remuestreo, número de árboles y estrategia de selección de variables. Aquí vemos las distintas opciones, automático, la raíz cuadrada, un tercio, logaritmo de dos, o todas las variables explicativas disponibles. Un tercio, por ejemplo, indicaría que, en cada posible partición sólo se van a seleccionar, al azar, un tercio de las variables disponibles. En el caso de los bosques para clasificar, esencialmente, lo que tenemos es que la variable objetivo, aquí, "Retraso" es binaria. Esta variable, ya que se trata de un bosque, es transformada a doble y luego indexada, eso es un requisito del modelo. Generamos las particiones y estamos listos para ejecutar el árbol, pero en el bosque. El bosque, como en el caso anterior, tiene 500 árboles, ahora mismo la profundidad es de tres. Aquí tenemos una semilla de aleatorización también fijada para que el proceso sea reproducible. La estrategia de selección de variables es, ahora mismo, raíz cuadrada, y el criterio de pureza, para decidir si partir o no partir cada uno de los nodos, es el índice de Gini. Este modelo se ejecuta y tarda alrededor de diez segundos. Listo el modelo, aquí hemos llevado a cabo las predicciones. Podemos observar aquí la base de datos resultante con los valores originales y las predicciones realizadas, y resumir el resultado a través de una tabla de clasificación. Aquí tendríamos la matriz de confusión de la prueba, del modelo, los valores originales, las predicciones, cada una de las combinaciones. Recordad que, de aquí, obteníamos la sensibilidad, la especificidad, etcétera, pero que la capacidad predictiva del modelo, finalmente, la obteníamos a partir de la representación de la curva "ROC" y el área que contiene. Para ello, capturábamos la columna "probs" a partir del vector de probabilidades. Este vector tiene dos componentes, nosotros extraemos uno de los elementos para hacer el gráfico, finalmente, con los valores observados y las probabilidades predichas. Aquí vemos el gráfico resultante. Podemos cuantificar la capacidad de ajuste, aquí veríamos la tabla resultante y, aquí, veríamos el área bajo la curva. Es decir, como decía antes, podemos cuantificar la capacidad de ajuste del modelo a partir del área bajo la curva de la curva ROC. Esto lo evaluamos en la base de datos de entrenamiento dando lugar a un valor próximo al 0.92 y, también, calculamos el área bajo la curva del modelo calculado en la base de datos de test. El resultado es muy similar, indicando una capacidad de reproducción elevada. Hasta aquí la presentación de los Random Forest para clasificar y, también, para el problema de regresión.