Precisión del Modelo Gráficas, estadı́stica y minerı́a de datos con python Miguel Cárdenas Montes Centro de Investigaciones Energéticas Medioambientales y Tecnológicas, Madrid, Spain [email protected] 6-10 de Octubre de 2014 M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 1 / 63 Tabla de Contenidos 1 Objetivos 2 Introducción 3 Precisión en Clasificadores 4 Precisión en Regresión 5 Holdout Method 6 Cross-validation 7 Bootstrap 8 Bagging 9 ROC 10 No Free Lunch Theorem 11 Sobreajuste M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 2 / 63 Objetivos Conocer las herramientas para medir la calidad de los modelos en aprendizaje supervisado. Aspectos Técnicos scikit-learn API Matriz de Confusión. Método de Retención Validación Cruzada Bootstrap M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 3 / 63 Introducción M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 4 / 63 Introducción Las técnicas de validación tienen dos motivaciones fundamentales: Casi todas las técnicas tienen parámetros libres, por ejemplo el número de vecinos en KNN, lo cuales se desean ajustar de forma que maximicen la precisión. Se desea conocer la precisión del modelo de cara a la clasificación de datos en el futuro. Además, cuando se dispone de un conjunto de datos y varios métodos para clasificarlos es lógico querer saber la precisión que ofrece cada método. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 5 / 63 Introducción Si se dispusiera de un conjunto ilimitado de datos, muchas de las cuestiones que se tratarán en esta presentación no tendrı́an sentido. Sin embargo, el caso suele ser justo el opuesto: un número finito y normalmente más pequeño de lo deseado. Un problema a tener en cuenta es, que para un número finito de datos, el modelo suele sobreajustarse a éstos. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 6 / 63 Propuesta 60-20-20 60% de los datos para el conjunto de entrenamiento. 20% de los datos para el conjunto de validación, para el ajuste de los parámetros del algoritmo. 20% de los datos para el conjunto de test. ¡Este es el valor del error generalizado! M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 7 / 63 Propuesta 60-20-20 60% de los datos para el conjunto de entrenamiento. Con esto entrenaremos el algoritmo: kmeans, knn, svm, etc, con diferentes configuraciones. Por ejemplo, knn con 3, 5, 7, ... vecinos. 20% de los datos para el conjunto de validación, para el ajuste de los parámetros del algoritmo. Se evalúa este conjunto de datos con los datos anteriormente entrenados: knn con 3, 5, 7, etc. El mı́nimo obtenido marca la mejor configuración del algoritmo. 20% de los datos para el conjunto de test. ¡Este es el valor del error generalizado! Sobre el algoritmo anterior, con la mejor configuración obtenida anteriormente (por ejemplo knn con 5 vecinos), se evalúa este conjunto de datos, lo cual marcará el error generalizado del modelo. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 8 / 63 Precisión en Clasificadores M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 9 / 63 Medida de Precisión de Clasificador I El uso de los datos de entrenamiento para simultáneamante derivar un clasificador y a la vez estimar la precisión del modelo de aprendizaje conduce a la obtención de valores muy optimistas de este valor. La precisión del modelo puede ser definida como el porcentaje de tuplas clasificadas correctamente. También se puede hablar del ratio de error o de malas clasificaciones. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 10 / 63 Medida de Precisión de Clasificador II Gran parte de las técnicas de este capı́tulo pueden ser también aplicadas a la medida de la calidad de ajustes mediante algoritmos evolutivos. Esto las dota de una alcance más allá de la minerı́a de datos. Otro factor a tener encuenta en las medidas de error es el tiempo que requieren para su cálculo. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 11 / 63 Matriz de Confusión I La matriz de confusión resume cuatro casos: Verdadero positivo: caso positivo etiquetados como positivo. Verdadero negativo: caso negativo etiquetados como negativo. Falso positivo: caso negativo etiquetado como positivo. Falso negativo: caso positivo etiquetado como negativo. Partiendo de estos casos, se puede hacer una estadı́stica más elaborada. Verdadero Falso M. Cárdenas (CIEMAT) Clas. Verdadero verdaderos positivos falsos positivos Errores Clas. Falso falsos negativos verdaderos negativos 6-10 de Octubre de 2014 12 / 63 Matriz de Confusión II Se denomina sensitivity o recall al cociente entre los verdaderos positivos y el total de positivos. También se denomina recognition. Clas. Verdadero Verdadero Falso verdaderos positivos falsos positivos M. Cárdenas (CIEMAT) Clas. Falso falsos negativos verdaderos negativos Errores sensitivity truepositive = totalpositive 6-10 de Octubre de 2014 13 / 63 Matriz de Confusión III Se denomina specificity al cociente entre los verdaderos negativos y el total de negativos. Verdadero Clas. Verdadero verdaderos positivos Falso M. Cárdenas (CIEMAT) falsos positivos Clas. Falso falsos negativos verdaderos negativos Errores specificity truenegative = totalnegative 6-10 de Octubre de 2014 14 / 63 Matriz de Confusión IV Se denomina precision al cociente entre los verdaderos positivos y la suma de los verdaderos positivos y los falsos positivos. Clas. Verdadero verdaderos positivo falsos positivo precision Verdadero Falso = M. Cárdenas (CIEMAT) Clas. Falso falsos negativo verdaderos negativo verdadero positivo verdadero positivo+falso positivo Errores 6-10 de Octubre de 2014 15 / 63 Matriz de Confusión V La matriz de confusión ideal para M positivos y N negativos es: Verdadero Falso M. Cárdenas (CIEMAT) Clas. Verdadero M 0 Errores Clas. Falso 0 N 6-10 de Octubre de 2014 16 / 63 Matriz de Confusión VI 1000 positivos en la muestra. 100 negativos en la muestra. V F Clas. Verdadero 995 20 995 995+20 Clas. Falso 5 80 995 995+5 80 80+20 = 99.50% = 80.00% sensitivity specificity = 98.03% precision M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 17 / 63 Accuracy I Una medida adicional de la precisión es el concepto de accuracy : accuracy = sensitivity · pos neg + specificity · pos + neg pos + neg Aplicado al caso anterior: accuracy = 0.995 · M. Cárdenas (CIEMAT) 100 1000 + 0.800 · = 0.977 1100 1100 Errores 6-10 de Octubre de 2014 18 / 63 Matriz de Confusión VII Debilidades No existen sugerencias sobre la división de un conjunto único de datos: una parte se asigna al conjunto de entrenamiento y el resto al conjunto de test. La medida es única y tiene tratamiento estadı́stico. Pierde utilidad con datos desbalanceados. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 19 / 63 Matriz de Confusión VIII Para M clases, la matriz de confusión tendrı́a M×M dimensiones. La diagonal serı́an los verdaderos, y el resto las clasificaciones erróneas. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 20 / 63 Matriz de Confusión: Ejemplo import random import numpy as np from sklearn import svm from sklearn.metrics import confusion_matrix # training set X = np.r_[’1,2,0’, \ [25, 35, 45, 20, 35, 52, 23, 40, 60, 48, 33], \ [10, 60, 80, 20, 120, 18, 95, 62, 100, 220, 150] ] Y = np.array( [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) p = range(len(X)) random.seed(0) random.shuffle(p) X, Y = X[p], Y[p] half = int(len(X) / 2) classifier = svm.SVC(kernel=’linear’) y_ = classifier.fit(X[:half], Y[:half]).predict(X[half:]) # Compute confusion matrix cm = confusion_matrix(Y[half:], y_) print cm M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 21 / 63 Matthews Correlation Coefficient El coeficiente de correlación de Matthews es aplicable a la matriz de confusión incluso con datos desbalanceados. MCC es aplicable a clasificaciones binarias. Devuelve un valor entre -1 y 1, siendo 1 el caso de predicción perfecta, -1 el totalmente incorrecta y 0 predicción aleatoria. TP · TN − FP · FN MCC = p (TP + FP)(TP + FN)(TN + FP)(TN + FN) M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 22 / 63 Precisión en Regresión M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 23 / 63 Medida de Errores en Regresión I La función de pérdida mide el error entre el valor real, yi , y el valor predicho, yi′ . Error absoluto: |yi − yi′ | Error cuadrático: (yi − yi′ )2 Error absoluto medio: PN Error cuadrático medio: M. Cárdenas (CIEMAT) |yi −yi′ | PN N (yi −yi′ )2 N Errores 6-10 de Octubre de 2014 24 / 63 Holdout Method Método de Retención M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 25 / 63 Holdout Method En este método, un conjunto de datos son divididos aleatoriamente en dos subconjuntos: el de entrenamiento y el de test. La proporción suele ser dos tercios (entrenamiento) a un tercio (test). El subconjunto de entrenamiento es usado para la realización del modelo, mientras que el de test es utilizado para medir su precisión. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 26 / 63 Random Subsampling Random subsampling es una variación de Holdout Method en el cual este método es repetido K veces. La precisión global se estima como la media de los valores obtenidos. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 27 / 63 Estratificación La estratificación es una técnica que trata de asegurar que todas las clases aparezan representadas en la muestra de test y además con proporción similar a la que tienen en los datos. Esta variación es deseable si los datos están desbalanceados: hay muchos más datos de una clase que de otra. Se puede aplicar a Holdout Method, Random subsampling, pero también a Cross-validation. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 28 / 63 Cross-validation Validación Cruzada M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 29 / 63 K-fold cross-validation I En este método el conjunto de datos es particionado en k muestras excluyentes y de tamaño similar. La creación del modelo y su medida de error se realiza repetidamente (k veces) con k-1 muestras para la creación del modelo, y 1 muestra para la medida del error. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 30 / 63 K-fold cross-validation II A diferencia de Holdout Method y Random subsampling, aquı́ cada muestra es utilizada el mismo número de veces para entrenamiento y una vez para test. La precisión estimada es el número total de clasificaciones correctas (tras las k iteraciones), dividida por el número total de tuplas. El error estimado es el número total de clasificaciones incorrectas (tras las k iteraciones), dividida por el número total de tuplas. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 31 / 63 K-fold cross-validation III Habitualmente se usa k=10 porque los experimentos han mostrado que es una buena opción para obtener una estimación de la precisión. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 32 / 63 Random cross-validation Este método divide aleatoriamente el conjunto de datos en subconjuntos de entrenamiento y test. Cada subconjunto es usado como en k-fold. La desventaja de este método es que algunas observaciones nunca serán seleccionadas, mientras que otras lo serán mútiples veces. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 33 / 63 Leave-one-out cross-validation I Leave-one-out es una variación de k-fold donde k es igual al número de tuplas. Leave-one-out es computacionalmente caro. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 34 / 63 Leave-one-out cross-validation II import numpy as np from sklearn import neighbors, datasets from sklearn.cross_validation import LeaveOneOut X = np.array([[ 25, 10], [ 35, 60], [ 45, 80], [ 20, 20], [ 35, 120], [ 52, 18], [ 23, 95], [ 40, 62], [ 60, 100], [ 48, 220], [ 33, 150] ]) Y = np.array( [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) scores = list() n_neighbors = 1 loo = LeaveOneOut(len(Y)) clf = neighbors.KNeighborsClassifier(n_neighbors, weights=’uniform’) for train, test in loo: X_train, X_test = X[train], X[test] Y_train, Y_test = Y[train], Y[test] clf.fit(X_train, Y_train) scores.append(clf.score(X_test, Y_test)) Z= clf.predict(X_test) print Z, Y[test] print scores M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 35 / 63 Leave-one-out cross-validation III Salida: [0] [0] [1] [0] [1] [0] [0] [0] [1] [0] [0] [0] [0] [1] [0] [1] [0] [1] [1] [1] [0] [1] [1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0] M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 36 / 63 Bootstrap M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 37 / 63 Bootstrap I A diferencia de los anteriores métodos, en bootstrap una tupla puede ser seleccionada más de una vez para el subconjunto de entrenamiento. Bootstrap tiene diversas variantes. La más comunmente utilizada es la denominada .632 bootstrap. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 38 / 63 Bootstrap II Si el conjunto de datos tiene d tuplas, el conjunto es muestreado d veces, pudiéndose elegirse varias veces la misma tupla. Existen ciertas tuplas que no será elegidas. Las tuplas no elegidas forman el subconjunto de test. Cada tupla tiene una probabilidad de ser elegida probabilidad de no ser elegida, (1 − d1 ). 1 d, y una Para bootstrap hay que realizar d selecciones, por lo tanto, la probabilidad de no ser elegida es (1 − d1 )d . Si d es grande, entonce la probabilidad de que una tupla no sea elegida para el subconjunto de entrenamiento es: e −1 = 0.368, 36.8%. Y de ser elegida es 63.2%. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 39 / 63 Bootstrap III Intuitivamente, la muestra original se considera como la ”población verdadera”. Cada muestra simula el proceso de muestreo desde la ”población verdadera”. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 40 / 63 Bootstrap III Si el proceso se repite k veces, entonces la precisión global puede ser estimada como: Acc(M) = k X (0.632 · Acc(Mi )test set + 0.368 · Acc(Mi )training set ) i=1 Acc(Mi )test set es la predicción del model obtenido con la muestra bootstrap i cuando se aplica al subconjunto de test i. Acc(Mi )training set es la predicción del model obtenido con la muestra bootstrap i cuando se aplica al conjunto original de datos. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 41 / 63 Bootstrap IV 1 Muestrear (con repetición) un subconjunto m de instancias de conjunto D, D > m. 2 Usar el subconjunto m para entrenar un modelo M. 3 Calcular el error sobre el training set, etraining set . 4 Usar las tuplas restantes de D para evaluar el modelo M, y ası́ calcular el error sobre el test set, etest set . 5 Estimar el error con la combinación lineal 0.632 · Acc(Mi )test set + 0.368 · Acc(Mi )training set . PN Promediar el error repitiendo el proceso N veces. i errori /N. 6 M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 42 / 63 Bootstrap V El uso de la combinación lineal 0.632 · Acc(Mi )test set + 0.368 · Acc(Mi )training set intenta balancear la influencia de la estimación optimista al usar el tranning set y la estimación pesimista test set. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 43 / 63 Bootstrap VI Debilidades Bootstrap tiene una baja varianza pero requiere muchas iteraciones para obtener una buena estimación del error. A medida que el volumen de datos crece el algoritmo se vuelve muy lento. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 44 / 63 Bagging y Boosting M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 45 / 63 Bagging I Existen estrategias para mejorar la precisión de los modelos, tanto en clasificación como en regresión. Estos métodos se denominan ensemble methods ya que combinan los resultados de más de un modelo. Bagging (bootstrap agregation) es uno de los más populares. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 46 / 63 Bagging II Dado un conjunto de datos D, compuesto de d tuplas, en cada iteración, i, un subconjunto de entrenamiento, Di de d tuplas es creado a partir de D usando bootstrap. Por cada subconjunto de entrenamiento, Di , se crea un modelo, Mi . Para clasificar una tupla desconocida, cada modelo Mi emite una predicción sobre dicha tupla, la cual cuenta como un voto. Finalmente, el clasificador bagging cuenta los votos y asigna la clase más votada a e la tupla desconocida. Para regresión, bagging puede aplicarse igualmente tomado el valor promedio de cada predicción para la tupla desconocida. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 47 / 63 Bagging III Bagging ofrece un incremento sobre la precisión de cualquiera de los clasificadores individuales utilizados. Además es más robusto porque el modelo compuesto reduce la varianza de los clasificadores individuales. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 48 / 63 Boosting I En la técnica denominada boosting se asignan pesos a cada tupla del conjunto de entrenamiento. A continuación se usa una serie de k clasificadores. Después de cada clasificador se incrementa el peso de las tuplas mal clasificadas. Esto permite concentrar la atención del clasificador en estas tuplas ”difı́ciles de clasificar”. Boosting generará una secuencia de clasificadores, donde en cada nuevo ciclo el clasificador es un ”experto” en clasificar algunas de la tuplas mal clasificadas de la iteración anterior. El clasificador final combina los votos de cada clasificador individual, donde el peso del voto de cada clasificador es una función de su exactitud. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 49 / 63 AdaBoost I De todas las variantes de boosting, AdaBoost es una de las más populares. Adaboost tiene dos variantes: Seleccionar las tupas de acuerdo con las clasificaciones erróneas del clasificador anterior. Más representantes de las tuplas mal clasificadas son elegidas. Las tuplas mal clasificadas tienen un peso superior. Los pesos se incrementan o se disminuyen en función de que las tuplas se clasifiquen correctamente o erróneamente. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 50 / 63 Boosting y Bagging I Boosting Se utiliza un único algoritmo para crear hipótesis alternativas sobre el mismo conjunto de dato. Para ello se aumenta el peso en cada iteración sobre los ejemplos que han sido clasificados erróneamente. Finalmente se combinan las distintas hipótesis. Bagging Se utiliza un único algoritmo para crear hipótesis alternativas sobre N muestras del conjunto original de datos (M tuplas). Finalmente se combinan las distintas hipótesis. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 51 / 63 ROC M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 52 / 63 ROC I El nombre ROC deriva de Receiver Operating Characteristic. Su construcción está relacionada con la Matriz de Confusión a través del true-positive rate que se dibuja en el eje Y , y del false- positive rate que se dibuja en el eje X . true-positive rate proporción de tuplas positivas que son correctamente indentificadas. false-positive rate proporción de tuplas negativas que son incorrectamente identificadas como positivas. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 53 / 63 ROC II El nombre ROC deriva de Receiver Operating Characteristic. Su construcción está relacionada con la Matriz de Confusión a través del true-positive rate que se dibuja en el eje Y , y del false-positive rate que se dibuja en el eje X . M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 54 / 63 ROC Ejemplo I Clasificador no excelente. 1.0 F 300 700 0.8 0.6 TPR V F V 300 200 0.4 300 TPR = 300+200 = 0.6 300 FPR = 700+300 = 0.3 0.2 0.0 0.0 0.2 0.4 0.6 0.8 1.0 FPR M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 55 / 63 ROC Ejemplo II Clasificador mejorado. 1.0 F 200 800 0.8 0.6 TPR V F V 400 100 0.4 400 = 0.8 TPR = 400+100 200 FPR = 800+200 = 0.2 0.2 0.0 0.0 0.2 0.4 0.6 0.8 1.0 FPR M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 56 / 63 No Free Lunch Theorem M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 57 / 63 No Free Lunch Theorem I Entre varios algoritmos de Minerı́a de datos, ¿cuál es el que produce el modelo más preciso? ¿Podemos esperar que un algoritmo en particular tenga un redimiento superior a la media de un conjunto amplio de algoritmos para un grupo importante de problemas? Es decir, ¿existe un algoritmo superior o mejor de todos los demás? M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 58 / 63 No Free Lunch Theorem II Forma 1 Todos los algoritmos que buscan el extremo de una función objetivo tienen el mismo rendimiento cuando si se promedian sobre todas las funciones de coste posibles. Forma 2 El rendimiento medio de cualquier par de algoritmos sobre todos los posibles problemas es idéntico. M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 59 / 63 Sobreajuste - Overfitting M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 60 / 63 Sobreajuste I M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 61 / 63 Sobreajuste II M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 62 / 63 Gracias Gracias ¿Preguntas? ¿Más preguntas? M. Cárdenas (CIEMAT) Errores 6-10 de Octubre de 2014 63 / 63