Tutorial: Uso básico de RapidMiner Parte II: Predicción de variables categóricas En esta segunda parte del tutorial, se presentará un ejemplo que enseñe cómo predecir una variable categórica. Es altamente recomendable que se haya leído la Parte I antes de continuar, ya que las operaciones comunes no serán explicadas nuevamente. Contexto Siguiendo con la idea de construir modelos predictivos que permitan determinar la calidad de un colegio, puede ser interesante usar la información disponible acerca de los resultados de la prueba SIMCE. Para el ejemplo presentado en este tutorial, se usarán los datos de los resultados de la prueba SIMCE del 2009, que pueden descargarse gratuitamente de: http://www.simce.cl/index.php?id=262 Análisis Propuesto Los archivos descargables desde la dirección previamente citada son, en realidad, un paquete de planillas con resultados de la prueba en distintos niveles de agregación. En particular, en este ejemplo se usará el archivo ESTAB_4to.xls que contiene los resultados de la prueba aplicada a niños de cuarto básico, agregada al nivel de establecimiento educacional. El análisis que se propone para este ejemplo, es llegar a construir un modelo que permita predecir cuál será el nivel de aprendizaje logrado en matemáticas por los alumnos de un establecimiento, dadas algunas de sus características, tales como ubicación geográfica, dependencia administrativa y nivel de ruralidad. A partir de la planilla original, se construyó una modificación de la misma, que incluye transformaciones de variables categóricas a nominales, esto con el fin de poder utilizar una mayor variedad de modelos. El archivo que se utilizará se adjunta y se llama ESTAB_4TO_mod.xls Trabajo con RapidMiner En esta ocasión se asume que se tiene RapidMiner abierto y que no es la primera vez que se usa (si lo es, ver la Parte I de este tutorial). Luego, para construir el modelo se deben seguir los siguientes pasos: 1. Elegir la opción New para crear un nuevo archivo. 2. Darle un nombre (ejemplo Tutorial2) y ubicarlo en el repositorio local. Lo primero que se debe hacer es importar los datos desde la planilla al proyecto actual. En el tutorial anterior, esto se realizó mediante el operador Read Excel, sin embargo, también se mencionó que existía otra forma de hacerlo: mediante la inclusión de los datos en el repositorio local, que es lo que se explicará a continuación. 3. En el panel de la izquierda ir a la pestaña Repositories y seleccionar la opción Import Excel Sheet (ver Screenshot 1: Selección de opción para importar datos). Screenshot 1: Selección de opción para importar datos Se abrirá un asistente idéntico al que aparece al usar el operador Read Excel, por lo que los pasos a seguir ya deberían ser conocidos: 4. Explorar los archivos del computador y seleccionar el archivo ESTAB_4TO_mod.xls, pulsar Next. 5. Cerciorarse de que todas las celdas estén seleccionadas y pulsar en Next. 6. Seleccionar la anotación Name para la primera fila de la planilla y pulsar en Next. 7. Dejar seleccionadas las casillas de las siguientes variables, con sus respectivos tipos, notados entre paréntesis: REGION (polynominal), RBD (integer), DDCIA (polynominal), RURALIDAD (binominal), GRUPO (polynominal), ALUM_MAT (integer), PROM_MAT (integer). 8. Asignarle el rol id a RBD y label a PROM_MAT, pulsar en Next. 9. Seleccionar el repositorio local y darle un nombre (ejemplo DatosSimce), pulsar en Finish. Con esto realizado, se habrá importado los datos elegidos al repositorio de trabajo. Para asegurarse de que todo esté bien, verificar que aparezca el nombre recién introducido en la lista de repositorios del panel izquierdo. Lo que resta a continuación es simplemente construir el modelo, siguiendo los siguientes pasos. 10. Arrastrar el set de datos recién creado desde el repositorio hasta el área de diseño del proceso, esto producirá que aparezca el operador Retrieve (ver Screenshot 2). Screenshot 2: Comienzo del diseño Luego, lo que se necesita hacer es categorizar la variable objetivo (PROM_MAT), puesto que inicialmente es un valor numérico y se quiere traducir en las categorías Bueno y Malo. Si bien esto podría haberse realizado en Excel, acá se mostrará una de las técnicas de preprocesamiento de datos que provee RapidMiner: la transformación Numerical to Binominal. 11. En el panel Operators, explorar, seleccionar el operador Data Transformation>Type Conversion->Numerical to Binominal y arrastrarlo al área de trabajo. 12. Conectar la salida out de Retrieve con la entrada exa del operador recién agregado. 13. En el panel Parameters del operador Numerical to Binominal seleccionar la opción single en el campo attribute filter type, marcar la casilla include special attributes, seleccionar la opción PROM_MAT para el campo attribute y dar el valor 250 al campo max (ver Screenshot 3). Opcionalmente se puede conectar la salida exa de Numerical to Binominal con la salida res del proceso y ejecutarlo para ver el efecto que produce este operador. Al hacerlo, se puede notar que la variable PROM_MAT ahora es de tipo binominal y sus valores son false para los puntajes menores o iguales a 250 y true para el resto. Screenshot 3: Operador Numerical to Binominal A continuación se procederá a construir un proceso con el operador Validation que use un árbol de decisión (Decision Tree) para entrenar el modelo y evalúe su rendimiento de la misma forma que en el tutorial anterior. 14. Agregar el operador Split Validation y conectar su entrada tra con la salida exa de Numerical to Binominal. 15. Ir al interior de Validation y agregar los operadores Apply Model y Performance en la zona Testing, conectándolos adecuadamente, al igual que se hizo en el tutorial anterior. 16. Explorar la lista de operadores en Modeling->Classification and Regression->Tree Induction->Decision Tree, seleccionarlo y arrastrarlo al área de Training. 17. Conectar su entrada tra con la entrada tra del área y su salida mod, con su correspondiente de esa zona (ver Screenshot 4). 18. Volver al área de diseño principal (subiendo un nivel) 19. Conectar las salidas mod y ave a salidas res del proceso completo (ver Screenshot 5). Con esto, el diseño del proceso ha quedado concluido y solo resta ejecutarlo para obtener los resultados. Para hacerlo, presionar el botón Play de la barra horizontal superior y cambiar a la perspectiva de resultados. Screenshot 4: Composición del operador Validation Screenshot 5: Diseño completo del proceso Al ejecutar el proceso y observar los resultados del Performance Vector, en el criterio accuracy, se obtiene una tabla denominada matriz de confusión (ver Screenshot 6) y que se lee de la siguiente forma: “Del total de establecimientos malos (valor false), 697 fueron clasificados como malos y 257 como buenos, lo que corresponde a una precisión del 73.06%. Análogamente, del total de establecimientos buenos (valor true), 187 fueron clasificados como malos y 523 como buenos, lo que corresponde a una precisión del 73.66%”. Screenshot 6: Resultados del rendimiento del modelo Por otro lado, está el resultado correspondiente al modelo en sí, que en este caso es un árbol de decisión. RapidMiner muestra este tipo de modelos de forma gráfica y se puede ver en la pestaña Tree (Decision Tree) (ver Screenshot 7). Para el caso de este ejemplo, se observa que la mejor manera de discriminar entre los establecimientos para poder predecir su rendimiento en el SIMCE de matemáticas es mediante su pertenencia a un grupo socioeconómico, notando que, por ejemplo, si un establecimiento pertenece al grupo E (el más alto), su rendimiento en el SIMCE será bueno con una probabilidad cercana a 1, mientras que si un establecimiento pertenece al grupo A (el más bajo), su rendimiento será malo con una alta probabilidad. En tanto, se observa que para establecimientos del grupo C, la probabilidad de un rendimiento bueno o malo es muy similar en ambos casos. Cabe señalar que el hecho de que este modelo solo use una variable para llevar a cabo la discriminación es una mera coincidencia del ejemplo y se explica debido a que el utilizar las otras variables no otorga una mayor precisión en la clasificación. Con esto, se da por concluida la segunda parte de este tutorial, ya que se ha mostrado cómo construir un proceso que permita predecir variables categóricas y, además, se explicó como importar datos al repositorio, para poder usarlos con cualquier proyecto. Screenshot 7: Resultado del modelo Conclusiones e ideas propuestas A partir de lo realizado en este ejemplo, sería interesante realizar el mismo análisis con datos de otros años, para ver si alguna de las otras variables cobra relevancia y permiten una mejor clasificación del rendimiento. Por otro lado, se puede intentar realizar este mismo proceso, pero identificando 3 categorías distintas (Malo, Intermedio, Bueno) y ver cuál es el rendimiento del modelo. Asimismo se puede probar con otros modelos que permitan predecir variables categóricas, recordando que un operador puede ser fácilmente reemplazado mediante el menú contextual que aparece al ser seleccionado con el botón derecho del mouse. Por último, cabe destacar que tras dos ejemplos ya se ha podido establecer un cierto patrón en el diseño de procesos (leer datos, pasarlos por un proceso de validación, que entrena un modelo y luego lo evalúa y obtener resultados). Este esquema es el básico para cualquier proceso en RapidMiner y se puede utilizar como plantilla para otros ejemplos y actividades.