[AUDIO_EN_BLANCO] [MÚSICA] Hola, vamos a proseguir a continuación con la técnica de árboles en el contexto de regresión, es decir, para modelizar, explicar y predecir una variable de naturaleza cuantitativa. Empezamos capturando los datos. Podemos explorar los contenidos de la base de datos con esta instrucción. Vemos y revisamos las variables disponibles. En esta ocasión, consideramos que quizá pueda ser interesante añadir una variable relacionada con la compañía que opera el vuelo. Es esta columna. Esta columna, no obstante, es alfanumérica, son números. Por lo tanto, para proseguir, necesitamos reconvertir esta variable de códigos a una variable con contenido numérico. Esto es lo que se lleva a cabo, empleando esta instrucción, y aquí podemos comprobar mediante este pequeño cálculo la transformación llevada a cabo. Las compañías vienen etiquetadas con dos dígitos que son convertidos a códigos numéricos. Ahora esta variable es susceptible de ser también empleada en el modelo. Para ajustar el modelo debemos configurar, como es habitual, las variables predictoras en una única columna y modificar el nombre de la variable objetivo en este nuevo nombre. La variable de trabajo es el retraso en minutos. Como se ha indicado anteriormente, para validar el modelo, emplearemos una base de datos de test y para entrenar el modelo una base de datos pues de entrenamiento. Esta partición aparece aquí mediante esta instrucción, random split, configuramos y partimos la base de datos en dos, con este tamaño, el 70 por ciento se va a dedicar al entrenamiento y el 30 por ciento al test. La partición es al azar, aleatoria, no obstante indicamos aquí una semilla de aleatorización. Esta semilla provocará que los resultados cuando sean ejecutados nuevamente vengan a dar la misma partición. Aunque es una partición al azar, es una partición reproducible gracias a la semilla. Por lo tanto, tenemos estas dos bases de datos con estos dos tamaños: 21.000 casos y 9.000 casos en el caso del test. Para proseguir, emplearemos este modelo. Este modelo se define a continuación. Uno de los parámetros del modelo que va a caracterizarlo es la profundidad: un árbol de regresión con profundidad cinco. Si bien hay más opciones para indicar, eso lo veremos a continuación. Ahora mismo solo indicamos que la profundidad máxima sea de cinco niveles. Tras ejecutar el modelo obtenemos las predicciones. Aquí vemos un simple listado de los valores originales, las características empleadas y la predicción en minutos del resultado. Vemos cómo hay una serie de valores repetidos. Esto significa que son observaciones que en el fondo han sido clasificadas en el mismo nodo terminal. Podemos reflejar un poco la distribución de valores para los nodos terminales a partir de esta instrucción que agrupa en función del valor predicho. Y vemos el número de casos para cada uno de los valores predichos asociados a nodos terminales. Finalmente, podemos evaluar la capacidad predictiva de este modelo a partir de una métrica, en particular R cuadrado, y calcularlo. El R cuadrado de este modelo, empleado para las predicciones de la base de datos de entrenamiento es de un 72 por ciento. Este R cuadrado es ligeramente más pobre que el R cuadrado que vimos que se podía alcanzar mediante el modelo de regresión lineal. Una explicación podría ser que la configuración de posibles predicciones, y por lo tanto casillas, en nuestro ajuste, especificando una profundidad de cinco, es ineficaz, es ineficiente. Para ello, pasaríamos a la etapa de tuneado de parámetros. Los metaparámetros del árbol de regresión están aquí indicados. Tenemos, por un lado, la profundidad. Por otro lado, el número de particiones que se van a llevar a cabo para las variables cuantitativas a necesario partirlas, el mínimo de observaciones por nodo terminal. Por defecto, aquí estaríamos indicando uno, pero la idea es que podemos jugar con distintas combinaciones de profundidad, número de observaciones por nodo terminal, etcétera. También tenemos el criterio de continuar partiendo conforme exista un incremento en el criterio de información contemplado. Este criterio, en el caso de árboles de regresión, es simplemente la variabilidad global, bueno, la variabilidad del error. Conforme se consiga la variabilidad del error, entonces el árbol podría continuar partiéndose, siempre que no se consiga la profundidad máxima. Por lo tanto, tenemos herramientas para intentar modificar el árbol y conseguir un mejor resultado. En este caso, indicamos una profundidad de 20, un número de observaciones por nodo terminal de 10 y un número de particiones para las variables cuantitativas de digamos 50. Tras ejecutar el modelo, llevamos a cabo las predicciones y validamos, calculamos la métrica R cuadrado para lo valores predichos. En este caso, vemos que el resultado mejora, es de un 78 por ciento, pero no obstante tampoco se consiguen valores especialmente altos. Por otro lado, este R cuadrado se ha calculado empleando la base de datos de entrenamiento. Un R cuadrado limpio requiere ser evaluado en la base de datos de test. Para ello llevamos a cabo lo mismo, aplicamos el modelo generado calculando nuevos valores predichos para esta nueva base de datos y generamos de nuevo un R cuadrado complementario. Ahora tendríamos la capacidad predictiva del modelo en un 72 por ciento, y esta es una capacidad limpia de overfitting, puesto que hemos empleado unos datos que el modelo todavía no ha visto. Finalmente, podríamos concluir que el modelo todavía no es especialmente eficiente, quizá requiera nuevas modificaciones, explorando un poco distintas combinaciones de valores en los parámetros de trabajo. Si bien esto se puede hacer manualmente, nuevas versiones de PySpark contemplan el tuneado más automático. No obstante, ahora mismo con la versión actual no es posible hacerlo y solo podríamos hacerlo a mano, probando y probando hasta conseguir algún valor más interesante. Hasta aquí la sesión dedicada a los árboles de regresión. [MÚSICA] [AUDIO_EN_BLANCO]