Hola. En esta sesión vamos a continuar con introducir el concepto de árbol de regresión, pero ahora vamos a entrar en más detalle en la estructura general del modelo. Es importante que recordemos en la última sesión que estuvimos viendo, de algún modo, cómo podíamos hacer un modelo muy sencillo, simplemente imputando el valor promedio de la variable respuesta, sin tener en cuenta el valor de las variables predictoras, sin tener en cuenta la información que nos aporta el "dataset" y esa pequeña variante de introducir simplemente una distinción, una partición del conjunto de datos y, si en lugar de tener un valor promedio, paso a tener un valor promedio de la respuesta para cada uno de los conjuntos. Esta idea es la idea clave que debemos recordar y que ahora vamos a utilizar. Vamos a ver en abstracto en qué consiste el diseño de un árbol. Remarcar que lo que vamos a introducir ahora nos sirve, tanto para los árboles de regresión como para los árboles de clasificación pero, en esta sesión, vamos a centrarnos en dejar constancia de cada uno de los detalles en el caso de los árboles de regresión. Pero, en general, cuando haremos un árbol tenemos una estructura de este tipo que comentamos el otro día, es una estructura ramificada y que vamos a representar, por lo general, como algo binario, que vamos a ir haciendo particiones dos a dos. En este dibujo hay tres cosas que debemos tener en mente cuando lo veamos o cuando estemos pensando en árboles. Por un lado, en cada vértice, de algún modo tenemos que visualizar que hay una partición de nuestro conjunto de datos. Así que, desde el primer nodo, el que tenemos más arriba que podríamos llamar raíz, ahí tenemos todo el conjunto de datos. Cuando partimos, estamos partiendo el conjunto de datos y, cada vez que partimos, partimos el conjunto de datos del nodo del cual proviene la partición, y así sucesivamente. Otro punto importante es entender en qué consiste exactamente el modelo. El modelo en sí, va a ser recogido o capturado por cada uno de los nodos terminales de este árbol, de este gráfico. Así que, si veis, en este escenario tan sencillo tenemos cinco nodos terminales, cada uno de ellos nos va a aportar una parte de la información del modelo. Y, por último, en abstracto también, en qué consiste hacer una predicción, cuando llega un nuevo individuo o un nuevo caso, cómo voy a imputarle un valor predicho. La idea, simplemente, va a ser en recorrer este árbol a modo de poder decidir a qué nodo terminal debo calificar o debo poner a este nuevo individuo. Esas ideas tan sencillas, repasémoslas muy brevemente, tal como las hemos dicho repasemos. En primer lugar, los vértices corresponden a particiones de la base de datos. Así que, por ejemplo, en la primera partición, si tuviéramos el ejemplo que estamos haciendo todo el tiempo, simplemente con una variable predictora tendríamos cómo mi conjunto de los doce casos se parte en dos conjuntos. En segundo lugar, hemos dicho que hay que tener en cuenta que un nodo terminal imputa un valor al modelo. Del mismo modo, cada vez que hago una partición estoy imputando un valor del modelo, así que, más que tener una base de datos en cada nodo, también tengo un valor predicho en cada nodo. Así que en la raíz, cuando empezamos a hacer el árbol, cuando todavía no hemos hecho ninguna partición, el valor que imputaría al modelo en este ejemplo sería seis, que si recordáis era el valor promedio de la variable respuesta. Una vez hago la partición, parto de la base de datos y paso a tener dos valores diferentes, cada uno para cada uno de los nodos, como modelo. Por un lado, el promedio de la respuesta es 4,7 y ese sería el valor del modelo y, por el otro lado, el valor de la respuesta sería de 6,8. En este caso, ¿cómo volvería a partir? Si vuelvo a partir, me voy a olvidar de este 4,7 y voy a pasar a mirar el siguiente nodo terminal. Pero, el modelo en sí, nos vamos a centrar siempre en los nodos terminales y esta es la idea. Cuando llega una nueva observación, va a ir recorriendo el árbol desde la raíz hasta un nodo terminal. ¿En función de qué criterios se va a decidir? En función de la descriptiva que tengas en este nuevo caso de las variables predictoras. Entonces, en un marco más general, esto sería un poco el diseño abstracto pero, entonces, en el marco general siempre teníamos una variable "Y" respuesta u objetivo, que va a ser una variable cuantitativa porque estamos haciendo el caso de regresión, tenemos unas variables predictoras, que no será una como estamos haciendo todo el tiempo, hay que pensar que hay un conjunto de elevar a dimensión de posibles candidatas a ser de partición y, por otro lado, nuestro tamaño muestral que puede ser más o menos grande, pero lo denotamos en general por "n". En este escenario, que es el más global de modelización, un árbol va a consistir en escoger desde el principio, desde la raíz, simplemente promediando la respuesta, con ese valor de referencia vamos a ir tomando particiones, escogiendo cuál es la variable y dónde debería cortarla para que el resultado de la evaluación del modelo sea lo mejor posible. La idea es, si tenemos "p" variables diferentes como variables predictoras y "n" casos diferentes, fijémonos que yo tengo "n" menos uno puntos donde cortar el "dataset". La idea es, podemos ir partiendo, te decía hay "n" opciones, en principio puedo tener hasta "n" menos uno opciones para cada una de las "p" variables y me van a dar modelos diferentes. Así que tengo "p" por "n" menos uno opciones a que sean el mejor modelo, y esta es la idea. ¿Cómo vamos a partir el modelo? Escogiendo cada vez, entre todas las posibles opciones, cuál es la mejor variable porque tiene un valor de corte que produce, en este caso, una suma de cuadrados totales menor. La idea siempre va a ser intentar reducir la suma de cuadrados totales o aumentar ese "r" cuadrado, ese porcentaje de capacidad explicativa del modelo. Pero, la idea es que tenemos, fijaros, que hay cierta complejidad, tenemos muchas opciones y habrá que calcularlas todas para realmente poder decidir cuál es la variable que tengo que tomar y dónde debo cortarla a fin de tomar una partición. Y eso, recursivamente. Una vez lo hemos hecho, repetimos. ¿Cómo lo repetimos? Una vez he partido el "dataset", me encuentro en un nuevo nodo con un nuevo "dataset", con un nuevo valor para "n" y, por tanto, con otras opciones que debo volver a evaluar para poder volver a decidir. Así que es un proceso recursivo que podéis ver que tiene dos puntos claves, uno, saber con qué criterio particionar, y otro, saber con qué criterio o qué estrategia seguir para dejar, para detenerme, para decidir que un nodo es un nodo terminal. Centrémonos en estos dos puntos claves. En cuanto al criterio de partición, ya hemos visto en el ejemplo y, en general, en la mayoría de técnicas, que la mayoría de veces siempre nos centramos en que el objetivo del modelo es predecir cuál será el valor que espero observar. En este contexto, es muy habitual utilizar la suma de cuadrados totales. Pero, remarcamos que esta no es la única estrategia y, en base a cuál sea el objetivo y cuál va a ser la manera de evaluar el error, esto es realmente lo que nos va a determinar cuál es el criterio de partición. Por otro lado, el criterio de detención. Aquí, en general, existen dos estrategias, una es la estrategia de hallar un criterio concreto de detención que puedas imputar al algoritmo de cálculo y otra estrategia es hacer una condición muy "naif", muy sencilla, hacer un árbol relativamente grande y, una vez lo has hecho, una vez has terminado el cálculo, una vez computacionalmente ha terminado, analizar el resultado y podar el árbol. El concepto de podar es lo que nos viene en mente, es, una vez tengo el árbol muy grande, voy a ir cortando ramas a fin de encontrar aquel árbol óptimo, que ya obtenga buenos resultados y tenga realmente una dimensión más razonable. En este contexto, remarcar el tema de la incertidumbre que siempre estamos comentando, que es muy importante que una vez tengo el modelo claro, se va a evaluar de algún modo cuál es la incertidumbre. Fijémonos que en estos procesos y, en general, en todas los metodologías que vamos a ver en el ámbito del "big data", el proceso de calibraje o de modelo va muy ligado al criterio que hayamos escogido para la incertidumbre. Es decir, la manera de medir la incertidumbre del modelo no es una vez calibrado, sino que ya lo estoy decidiendo de algún modo indirecto a medida que estoy calibrando el modelo. Aquí, el criterio que nos está autorizando en el ejemplo, el criterio para medir la incertidumbre, es la suma de cuadrados totales, que esa suma de cuadrados totales, el objetivo es minimizarlo o utilizar el "r" cuadrado a fin de maximizarlo. Esta sería la principal en el contexto que estamos utilizando, pero repetir que, en función del objetivo y cuál ha sido la metodología que has escogido como criterio de partición, va a determinar después cuál va a ser tu medida de incertidumbre. Por otro lado, otra manera importante, otra pieza importante a remarcar en este contexto, es que se tiene que utilizar muchas veces algoritmos algo más complicados que los que vimos anteriormente o comentamos para hacer la validación. Recordar que hablamos del algoritmo o la metodología "training test". Esa es la metodología más sencilla, que era partir del conjunto de datos en dos conjuntos, uno utilizarlo para hacer el modelo y, el otro conjunto para hacer el cálculo del error. Esto es la idea básica, pero existen otras metodologías, que es como validación cruzada que aporta realmente modelos, metodologías mucho más satisfactorias a la hora de hacer una evaluación de este tipo de modelos porque, realmente, tienen cierta complejidad y saber exactamente cuáles son todas las posibles causas que van a producir un error en el modelo es bastante complejo, así que la mejor estrategia es hacer un método de validación algo más elaborado que un "training test". En el caso de los árboles y, en general, la mayoría de las metodologías en "big data", hay una parte muy importante que ya comentamos que son los metaparámetros, puesto que un árbol en sí tiene diferentes partes, y es muy importante remarcar que el diseño que hayas hecho de este árbol depende de ciertos metaparámetros, como el tamaño del árbol o un parámetro de complejidad, que va a ser el que nos va a determinar de algún modo, también, cuál va a ser el criterio para detener el árbol. En cuanto al tamaño del árbol, tener en cuenta que si el árbol es muy grande, vas a estar haciendo un sobre ajuste y, si el árbol es demasiado pequeño, será un árbol muy pobre que no te aportará información. Pero la estrategia, en general, para escoger un buen tamaño, justamente va a ser basado en estos criterios que decimos de detención. Estos criterios de detención, muchas veces se pueden expresar a través de los criterios de complejidad. Un parámetro importante es este que hemos dicho, el parámetro de complejidad que de algún modo mide cuál es la diferencia entre un árbol, o sea, la evaluación del error entre un árbol y a ese árbol añadirle otro nodo, otra partición. Esta diferencia es cierto parámetro que podemos fijar de antemano y nos va a permitir generar el modelo en base a un criterio de detención y, por el otro lado, también nos permite una metodología para evaluar cuál es el tamaño de un árbol óptimo. En general, este parámetro se fija en 0,01 que, de algún modo, puedes pensar que es una mejora del uno por ciento en la capacidad explicativa de la variabilidad del modelo. Bueno, y esto ha sido todo para introducir los árboles de regresión.