Aprendizaje Automático para el Análisis de Datos GRADO EN ESTADÍSTICA Y EMPRESA Ricardo Aler Mur PRÁCTICA 3 (2 puntos) Vamos a trabajar con temas de distribución y coste en Weka. Ahora utilizaremos el fichero oil.arff. Aquí el objetivo es la detección de escapes de petróleo. Abajo se puede ver una imagen con un escape. Oil.arff tiene 41 instancias positivas y 896 negativas y es por tanto una muestra desequilibrada. Apartados de la práctica: 1. 2. 3. 4. Aprendizaje teniendo en cuenta la distribución de los datos: SMOTE Evaluación teniendo en cuenta el coste en Weka Aprendizaje teniendo en cuenta el coste: cost-sensitive classifier Curvas ROC en Weka 1. Aprendizaje teniendo en cuenta la distribución de los datos: SMOTE En el problema oil.arff una de las clases es bastante minoritaria. Como sabemos, en ocasiones esto implica que el clasificador aprenderá bien la clase mayoritaria a costa de ignorar la minoritaria. Comprobar si esto ocurre en oil.arff usando el clasificador J48 (que genera árboles de decisión). ¿Cuáles son los porcentajes de aciertos de cada una de las clases? ¿Hay alguna que se aprenda particularmente mal? Vamos a usar SMOTE para requilibrar la muestra (es decir, incrementar el número de datos de la clase minoritaria). SMOTE es un filtro (transforma el conjunto de datos). Para aplicar ese filtro utilizaremos un meta-clasificador: FilteredClassifier. Este metaclasificador tiene dos parámetros: Classifier y Filter. En Filter, pondremos SMOTE, que es un filtro de tipo supervised/instance. En classifier pondremos J48. SMOTE también tiene un parámetro que es necesario modificar: percentage. Este parámetro representa el porcentaje de instancias a crear: si vale 100% significa que se duplicarán las instancias de la clase minoritaria. Si vale 200%, se cuadruplicarán. Experimentad con varios valores. ¿Se puede mejorar el porcentaje de aciertos de la clase minoritaria sin empeorar demasiado la clase mayoritaria? 2. Evaluación teniendo en cuenta el coste en Weka En este apartado se trata de evaluar modelos aprendidos utilizando matrices de coste en lugar de usar sólo el porcentaje de aciertos. Para ello, en Weka es necesario activar la opción “Cost-sensitive evaluation” en el botón “More options” en la pestaña Classify. Una vez activado, es necesario introducir una matriz de costes pulsando el botón “Set”. Es necesario poner el número de clases (2) y pulsar “Resize”. Aparecerá una matriz de costes, con los costes de error a 1. Vamos a suponer que el coste de clasificar mal un dato de la clase mayoritaria es de 25 euros, mientras que el coste de clasificar mal uno de la clase minoritaria es de 1000 euros. Introducir los valores apropiados en la matriz de costes. Usar los siguientes clasificadores. El coste se puede ver en Total Cost: ZeroR (este es el clasificador que clasifica como la clase mayoritaria) IB1: Clasificador de vecino más cercano con K=1 J48: Genera árboles de decisión Naive Bayes Bayes Net (red bayesiana) Anotar los costes resultantes y los porcentajes de aciertos. ¿Cuál es el algoritmo que nos proporciona un mejor coste? ¿Coincide con el que tiene menor error (mayor porcentaje de aciertos)?. 3. Aprendizaje teniendo en cuenta el coste: cost-sensitive classifier En el apartado anterior vimos que uno de los algoritmos es mejor que los demás para minimizar el coste. Sin embargo, cada uno de los algoritmos intenta minimizar el error de clasificación, no el coste, simplemente por casualidad uno de ellos es mejor. Vamos ahora a intentar minimizar directamente el coste usando el meta-clasificador costsensitive classifier. Este meta-clasificador tiene dos parámetros: classifier y costMatrix. En el primero pondremos el clasificador que obtuvo los mejores resultados en el apartado 2. En costMatrix pondremos la matriz de costes. ¿Se consigue mejorar el coste conseguido en el apartado 2? Probad también con J48. ¿Se mejora el coste también? 4. Curvas ROC en Weka Visualizar la curva ROC para la clase minoritaria con los algoritmos NaiveBayes y J48 (visualize threshold-curve). Poned en la memoria los volcados de pantalla correspondiente. Ahora vamos a comparar ambas curvas, pero no podemos hacerlo dentro de Weka: tendremos que exportar los datos. Desde la ventana que contiene la curva ROC, usad save para exportar los datos a un fichero de texto en formato arff. Después, importad ambos ficheros a Excel (pestaña datos / Obtener datos externos). Las columnas 2 y 4 contienen los TP y FP, respectivamente. Haced un gráfico de dispersión con ambas curvas. ¿Qué conclusión podemos sacar al ver ambas curvas juntas? Usando la matriz de costes del apartado 2 y sabiendo que la proporción de positivos Pos=41/937 (41 datos positivos y 937 instancias en total), cual es aproximadamente el coste normalizado esperado (usad “a ojo” la curva de coste que podéis ver en “Visualize cost curve”). NORMAS DE ENTREGA Será necesario entregar una memoria respondiendo a las preguntas, incluyendo volcados de pantalla donde sea necesario. Esta práctica vale 2 puntos. La fecha de entrega es el día del examen (o antes).