Complementos de aprendizaje automático

Documentos relacionados
Evaluación de modelos

Precisión del Modelo

Módulo Minería de Datos Diplomado. Por Elizabeth León Guzmán, Ph.D. Profesora Ingeniería de Sistemas Grupo de Investigación MIDAS

Clasificación de documentos

Aprendizaje Automático para el Análisis de Datos GRADO EN ESTADÍSTICA Y EMPRESA. Ricardo Aler Mur

Evaluación de Hipótesis

Clasificación de estados cerebralesusando neuroimágenes funcionales

Análisis de Datos. Validación de clasificadores. Profesor: Dr. Wilfrido Gómez Flores

Aprendizaje Automático para el Análisis de Datos GRADO EN ESTADÍSTICA Y EMPRESA. Ricardo Aler Mur

Aprendizaje Automático Segundo Cuatrimestre de Evaluación de Hipótesis

Reconocimiento de Patrones

Macro para evaluación de modelos con variables de respuesta dicotómicas con fines de priorización.

ANÁLISIS DE DATOS. Jesús García Herrero

II. 2. Análisis manual de imágenes médicas: Análisis de la curva ROC (Receiver Operating Characteristic).

Aprendizaje Automatizado

Tema 2: Introducción a scikit-learn

Análisis Estadístico de Datos Climáticos. Verificación y valor de los pronósticos

ANÁLISIS DE DATOS. Ricardo Aler Mur

Minería de datos. Unidad 2. El proceso KDD Evaluación, difusión y uso. M en I Sara Vera Noguez

Análisis Estadístico de Datos Climáticos. Verificación y valor de los pronósticos (Wilks, Cap. 7) Facultad de Ciencias Facultad de Ingeniería 2013

III JORNADAS DE DATA MINING

Sistemas de Percepción Visión por Computador

VIII Jornadas de Usuarios de R

Introducción a los sistemas Multiclasificadores. Carlos J. Alonso González Departamento de Informática Universidad de Valladolid

Introducción al Procesamiento de Lenguaje Natural. Grupo de PLN - InCo

Modelos de Churn Bancarios con R Trabajo Final de la Maestría en Data Mining

Conjuntos de Clasificadores (Ensemble Learning)

Proyecto Final - Reconocimiento de Patrones

Métodos de Remuestreo en Aprendizaje Automático

Análisis de Datos. Introducción al aprendizaje supervisado. Profesor: Dr. Wilfrido Gómez Flores

Evaluación, validación y sobre-ajuste

Análisis de Datos. Combinación de clasificadores. Profesor: Dr. Wilfrido Gómez Flores

Aprendizaje inductivo

Examen Parcial. Attr1: A, B Attr2: A, B, C Attr3 1, 2, 3 Attr4; a, b Attr5: 1, 2, 3, 4

Jugando a policías y ladrones para detectar anomalías en red con ML. Carmen Torrano Giménez #CyberCamp17

RECONOCIMIENTO DE VINOS POR CULTIVOS CLASIFICACION

RECONOCIMIENTO DE PAUTAS

R PARA SABER SI VAS A VENIR

Apéndice A: Matrices de confusión y resultados de precisión, exhaustividad y medida F

Seminario-Taller Ciencia de Datos con Python

Aprendizaje: Boosting y Adaboost

INTRODUCTION TO MACHINE LEARNING ISABELLE GUYON

Índice general. Prefacio...5

Técnicas del aprendizaje automático para la asistencia en la toma de decisiones

Tema 5: Evaluación de Modelos de Clasificación Supervisada p. 1/2

Buenas prácticas para la implementación de herramientas de Ciencia de Datos Leonardo Alfonso Ramos Corona Facultad de Geografía, UAEM.

Aprendizaje Automatizado

EVALUACIÓN EN APRENDIZAJE. Eduardo Morales y Jesús González

CRITERIOS DE SELECCIÓN DE MODELOS

Methods of Classification in Mining of Meteorological Data

Métodos para Determinar el Atributo Distinguido en Multiredes Bayesianas

Machine Learning Bases

Desarrollo y optimización de un sistema de estimación del nivel UPDRS de un paciente de Parkinson a partir de grabaciones del habla

Técnicas Multivariadas Avanzadas

Tema 15: Combinación de clasificadores

Aprendizaje de intervalos para Redes Bayesianas de Nodos Temporales

Construcción y aplicación de modelos de

Aux 7. Introducción a la Minería de Datos

Estudio de rampas de producción eólica.

Posibles trabajos HIA

Técnicas de aprendizaje automático en el análisis de datos de DP. Dr. Carlos Fernández Lozano Juan de la Cierva-Formación

Introducción al Procesamiento del Habla

Taller #3. Carlos Reveco Cinthya Vergara

IAAE - Inteligencia Artificial Aplicada a la Ingeniería

IAAE - Inteligencia Artificial Aplicada a la Ingeniería

LA MINERÍA DE DATOS APLICADA A LA BÚSQUEDA DE PATRONES DE SUPERVIVIENCIA EN LA NEOPLASIA MALIGNA DE TRÁQUEA, BRONQUIOS Y PULMÓN

Introducción. Qué es Machine Learning?

Pangea. Sistema de recomendación de viajes. Speaker: Andrés Pipicello. Lucas Bernardi, Martín Chaia, Bruno Cuervo Parrino. Demo

Predicción basada en vecinos

Julio Deride Silva. 4 de junio de 2010

Javier Roca Pardiñas Prof. Titular de Universidade Dpto. Estatística e I.O. Universidade de Vigo

IAAE - Inteligencia Artificial Aplicada a la Ingeniería

Inteligencia de Negocio Curso

Técnicas Multivariadas Avanzadas

Curso: R for Data Mining. Análisis de datos, segmentación y técnicas de predicción con R

GUÍA DOCENTE: Sistemas Basados en Conocimiento y Minería de Datos (SBC)

Random Subspace Method. Índice. 1. Random Subspace Method. 1. Introducción. 2. Objetivo. 3. Implementación. 4. Evaluación. 5.

Jone Echazarra Tecanalia. Más allá del ojo humano: detección precoz del mildiu

Aux 6. Introducción a la Minería de Datos

Validación Cruzada (cross-validation) y Remuestreo (bootstrapping)

Tareas de la minería de datos: clasificación. CI-2352 Intr. a la minería de datos Prof. Braulio José Solano Rojas ECCI, UCR

Análisis y consideraciones sobre la implementación del Registro estadístico de territorio.

Métodos de Inteligencia Artificial

Réplica del III taller sobre modelización de nichos ecológicos de GBIF

Aprendizaje Automático para el Análisis de Datos GRADO EN ESTADÍSTICA Y EMPRESA. Ricardo Aler Mur

NEWTON TREES. Árboles de Estimación Estocástica de Probabilidades:

Estadística con R. Clasificadores

2. Formas cuadráticas. Expresiones diagonales. Clasificación respecto a su signo.

APRENDIZAJE PROBABILÍSTICO NAIVE BAYES

[20380] Visió per Computador Prueba 2 (2013) Teoria (10p) (una pregunta test fallada descuenta 1/4 de pregunta acertada)

Inteligencia Artificial: Su uso para la investigación

Máquinas de vectores soporte con R

Ciencia de Datos con Python

Tareas de la minería de datos: clasificación. PF-5028 Minería de datos Prof. Braulio José Solano Rojas UCR

Random Forests. Teoría y ejemplos. Romain Gouron. Conferencia 9, GLAM, Doble titulo Ecole Centrale de Nantes (Francia)

Uso de Algoritmos de Machine Learning en la Construcción de Mapas de Pobreza: Venezuela Omar Zambrano

Inteligencia de Negocio Curso

Transcripción:

Complementos de aprendizaje automático David Soĺıs Martín Dpto. Ciencias de la Computación e Inteligencia Artificial Ampliación de Inteligencia Artificial, 2016-2017

Índice Introducción Métricas Validación de modelos Optimización de parámetros

Introducción

Scikit learn Es una librería / framework desarrollada en Python y C++ orientada al aprendizaje automático (machine learning). Un poco de historia Inicialmente desarrollada por David Cournapeau durante el Google summer code en 2007 Later Matthieu Brucher se une al proyecto y la usa como parte de su tésis. En 2010 INRIA (Institut national de recherche en informatique et en automatique) lidera el proyecto y publica la primera release.

Scikit learn Muy bien estructurado. Otras librerías se basan en dicha estructura para que estas pueden usarse junto a sklearn. Muy bien documentado. Incluye referencias a artículos en las que se basa las implementaciones. Tiene un comunidad de desarrolladores muy activa. Posee un colección muy amplia de algoritmos. Nota: Para la lectura, escritura y manipulaciones genéricas de los conjuntos de datos usar pandas, numpy y scipy

Scikit learn - Estructura Agregación de Datos Procesado de Datos Ingeniería de Atributos Entrenamiento y evaluación Puesta en producción

Scikit learn - Estructura Algunos de los paquetes más importantes: linear model, ensemble, neighbors, neural networks: Algoritmos agrupados según su naturaleza. metrics. Con un conjunto de funciones para evaluar la calidad de nuestros modelos. Metricas en función del tipo de problema: clustering, clasificación, regresión,... model selection. Funciones orientadas a crear divisiones de los datos en entrenamiento y validación para controlar el sobreajuste.

Scikit learn - Estructura Hay dos tipos de clases principales: Las que derivan de TransformerMixin. Clases que manipulan los datos, para realizar una transformación o generar nuevos atributos. fit. Estas clases también se entrenan previamente. transform. Realizar la transformación. Recibe el conjunto de datos X y devuelve el conjunto X. fit transform. Método de ayuda que llama a los anteriores métodos secuencialmente.

Scikit learn - Ejemplo Por ejemplo, este dataset: tiene atributos codificados con texto (como el género, el status y el día de la semana) y también hay fechas. Todos los algoritmos en sklearn trabajan con datos numérico, por lo que tenemos que codificar esos tipos de datos a numérico.

Scikit learn - Ejemplo Para el caso de los atributos categoricos codificados como texto podemos usar, por ejemplo, la clase LabelEncoder: 1 from s k l e a r n. p r e p r o c e s s i n g \ 2 import L a b e l E n c o d e r 3 4 l c = L a b e l E n c o d e r ( ) 5 l c. f i t (X. Gender ) 6 7 # a cada c a t e g o r í a l e a s i g n a e l í n d i c e d e l a r r a y 8 p r i n t ( C l a s e s : %s % l c. c l a s s e s ) 9 p r i n t ( V a l o r e s o r i g i n a l e s : %s % X. Gender. v a l u e s ) 10 11 e n c o d i n g = l c. t r a n s f o r m (X. Gender ) 12 13 p r i n t ( V a l o r e s c o d i f i c a d o s : %s % e n c o d i n g ) 14 15 $ C l a s e s : [ F M ] 16 $ V a l o r e s o r i g i n a l e s : [ M F F..., F M M ] 17 $ V a l o r e s c o d i f i c a d o s : [ 1 0 0..., 0 1 1 ]

Scikit learn - Ejemplo 1... 2... 3... 4 # l c. f i t (X. Gender ) 5 # e n c o d i n g = l c. t r a n s f o r m (X. Gender ) 6 7 e n c o d i n g = l c. f i t t r a n s f o r m (X. Gender ) 8 9... 10... 11... 12 13 $ C l a s e s : [ F M ] 14 $ V a l o r e s o r i g i n a l e s : [ M F F..., F M M ] 15 $ V a l o r e s c o d i f i c a d o s : [ 1 0 0..., 0 1 1 ]

Scikit learn - Estructura Hay dos tipos de clases principales: Las que derivan de BaseEstimator. Todos los algoritmos de aprendizaje. Los métodos más importantes: fit. Para entrenar el modelo. Recibe dos parámetros X e y. X conjunto de datos en forma tabular (filas=muestras, columnas=atributos) e y es la variable respuesta (la que se quiere predecir) predict. Realiza la predicción de un modelo previamente entrenado. Solo recibe un conjunto X de muestras usados para recibir predict proba. Idem al anterior pero la respuesta se obtiene como probabilidades.

1 from s k l e a r n. l i n e a r m o d e l \ 2 import L o g i s t i c R e g r e s s i o n 3 Scikit learn - Ejemplo 4 # creamos e l modelo 5 e s t i m a t o r = L o g i s t i c R e g r e s s i o n ( ) 6 7 # a j u s t a m o s e l modelo 8 e s t i m a t o r. f i t ( X t r a i n, y ) 9 10 # obtenemos l a p r e d i c c i o n e s 11 pred = e s t i m a t o r. p r e d i c t ( X t e s t ) 12 13 p r i n t ( pred ) 14 p r i n t ( t y p e ( pred ) ) 15 16 [ 0 0 1..., 1 0 0 ] 17 <c l a s s numpy. n d a r r a y > Cuidado!, las predicciones obtenidas son un array de numpy no una lista de python.

Métricas

Métricas en scikit-learn Cuando estamos ajustando un modelo es necesario establecer una métrica para determina como de bueno es nuestro modelo. La métrica dependerá del problema: Naturaleza de este: clasificación, regresión, clustering, ranking,... Y del uso futuro que se le vaya a dar al modelo. En un modelo para determinar si un paciente debe ser operado de urgencia es muy imporante reducir el falsos positivos (sobre todo si dicha operación es de alto riesgo). En un modelo que determina que objetos hay dentro de un imagen será interesante tener una probabilidad para cada objeto. Diferentes métricas influyen en la importancia que el modelo da a los atributos. También nos ayuda a parametrizar el modelo de la manera más conveniente.

Métricas para clasificación Los problemas de clasificación son los más comunes y en lo que más métricas se han desarollado. Las más importantes: Matriz de confusión. Para determinar en que clases falla el modelo y con que clases las confunde. Precisión, recall, f1-score, soporte. Son ratios entre los grupos de (FP, FN, TP, TN) tomados por parejas. Accuracy (exactitud). Promedio de acierto. LogLoss. Evalua las probabilidades para cada categoría. Area bajo la curva (AUC). Mide la habilidad de un modelo para discriminar entre clases positivas y negativas.

Tipos de error en clasificación binaria Verdaderos positivos (TP): Aquellas muestras con clase positiva que han sido clasificadas como positivas (clasificadas correctamente) Verdaderos negativo (TN): Aquellas muestras con clase negativa que han sido clasificadas como negativas (clasificadas correctamente) Falsos positivos (FP): Aquellas muestras con clase negativa que han sido clasificadas como positiva (clasificadas incorrectamente) Falsos negativos (FN): Aquellas muestras con clase positiva que han sido clasificadas como positivas (clasificadas incorrectamente)

Tipos de error en clasificación binaria FALSO POSITIVO FALSO NEGATIVO

Accuracy Mide el porcentaje de acierto. Accuracy = Accuracy = #prediccionescorrectas #totaldemuestras TP + TN TP + TN + FP + FN = TP + TN N Es la metrica más usada para clasificación y la más usada incorrectamente. Solo útil cuando tenemos el mismo número de observaciones de ambas clases y todas las predicciones sobre las clases son igualmente de importantes. (1) (2)

Accuracy Ejemplo: Supongamos que tenemos 170504 muestras positivas y 129302 negativas. Nuestro modelo clasifica correcamente 126811 de las muestras positivas y 43693 de las muestras negativas. Accuracy = 126811 + 43693 = 0.5687 = 56.87% (3) 170504 + 129302

Accuracy 1 from s k l e a r n. m e t r i c s \ 2 import a c c u r a c y s c o r e 3 4 acc = a c c u r a c y s c o r e ( y, e s t i m a t o r. p r e d i c t (X) ) 5 p r i n t ( acc ) 6 7 $ 0. 56871443533484989 8 9 TP FP = a c c u r a c y s c o r e ( y, e s t i m a t o r. p r e d i c t (X), n o r m a l i z e=f a l s e ) 10 p r i n t ( TP FP ) 11 12 $ 170504

Accuracy Ejemplo: Supongamos que tenemos 9850 muestras negativas y 150 positivas. Nuestro modelo clasifica correcamente 9700 de las muestras negativas y 50 de las muestras positivas. Accuracy = 9700 + 50 = 0.98 = 98.0% (4) 9850 + 150

Accuracy Paradox Ejemplo: Supongamos ahora que nuestro modelo siempre da una respuesta negativa (modelo trivial): Accuracy = 9850 + 0 = 0.98.5 = 98.5% (5) 9850 + 150 Este modelo tiene una mejor medida de exactitud, sin embargo, es un modelo inútil. Por qué el accuracy general no es una buena métrica en casos de datos desbalanceados? Las clases con mayor número de muestras dominarán el resultado del cálculo de la métrica.

Matriz de confusión La matriz de confusión nos muestra más información de las clasificaciones correctas e incorrectas por clase. Con los datos del ejemplo anterior: Con la matriz de confusión podemos extraer más información del comportamiento del modelo por clase: En que clase se equivoca más? Dada una clase, en que grado se confunde con la otra clase? Que clase tiene mayor precisión?

Matriz de confusión 1 from s k l e a r n. m e t r i c s import c o n f u s i o n m a t r i x 2 m = c o n f u s i o n m a t r i x ( y, e s t i m a t o r. p r e d i c t (X) ) 3 4 p r i n t (m) 5 6 $ a r r a y ( [ [ 43693, 4 6 9 9 3 ], 7 [ 82309, 1 2 6 8 1 1 ] ] )

Matriz de confusión 1 from s k l e a r n. m e t r i c s import c o n f u s i o n m a t r i x 2 m = c o n f u s i o n m a t r i x ( y, e s t i m a t o r. p r e d i c t (X) ) 3 4 # creamos un dataframe con l a i n f o m a c i o n l a m a t r i z de 5 # c o n f u n s i ó n 6 m = pd. DataFrame ( data={ N : m.t [ 0 ], P : m.t [ 1 ], 7 i n d e x : [ N, P ] } ) 8 m = m. s e t i n d e x (m[ i n d e x ]. v a l u e s ) 9 10 d e l m[ i n d e x ] 11 12 p r i n t (m)

Log-Loss Se usa cuando la predicción obtenida es una probabilidad. Es válida tanto para clasificación binaria como multiclase (más de 2 clases). 1 N N M y ij log(p ij ) (6) i=1 i=1 donde N es el número de muestras, M el número de clases, y ij es un indicador binario de si la clase j es la clase real asociada a la muestra i y p ij es la probabilidad que asigna el modelo para la muestra i y la clase j. No solo se busca optimizar el número de aciertos, sino también la seguridad con que el modelo acierta y penalizando los fallos.

Log-Loss Para clasificación binaria se puede simplicar a: 1 N N y (i) log(p (i) ) + (1 y (i) ) log(1 p (i) ). (7) i=1 donde y i es la clase real asociada a la muestra i y p i es la probabilidad que asigna el modelo para la muestra i y la clase positiva. Cuando la predicción es perfecta esta métrica is 0 (cuanto menor mejor). Minimizar el log-loss implica maximizar el accuracy generalmente.

Log-Loss 1 from s k l e a r n. m e t r i c s import l o g l o s s 2 l l = l o g l o s s ( y, e s t i m a t o r. p r e d i c t p r o b a (X) ) 3 4 p r i n t ( l l ) 5 6 $ 1. 8222485483381812

Precision - Recall Estas métricas responden a las siguientes preguntas. De todas las muestras clasificadas como positivas, que porcentaje es correctamente clasificado? Precision = TP TP + FP (8) También llamada PPV (positive predictive value) De todas las muestras positivas, que porcentaje es correctamente clasificado? Recall = TP TP + FN (9) Muchos otros nombres: sensitivy, hit rate y TPR (true positive rate)

F-Measure Es la media armónica de precision y recall: F 1 = 2 precision recall precision + recall Se busca que esta métrica de un valor alto solo cuando la precision y el recall sean altos. (10)

Metricas de ranking Estas métricas son muy utlizadas en sitemas de ranking. Por ejemplo, el buscador de google. Un motor de búsqueda puede ser visto como un clasificador binario: dado un término de búsqueda el documento Dx es relevante para la búsqueda Las métricas anteriores pueden ser interpretadas como probabilidades en vez de como proporciones: Precision: probabilidad de que un documento devuelto en la búsqueda sea relevante. Recall: probabilidad de un documento relevante sea devuelto en la búsqueda.

Informe 1 from s k l e a r n. m e t r i c s import c l a s s i f i c a t i o n r e p o r t 2 r e p o r t = c l a s s i f i c a t i o n r e p o r t ( y, e s t i m a t o r. p r e d i c t (X) ) 3 4 p r i n t ( r e p o r t ) 5 6 $ p r e c i s i o n r e c a l l f1 s c o r e s u p p o r t 7 $ 8 $ 0 0. 3 5 0. 4 8 0. 4 0 90686 9 $ 1 0. 7 3 0. 6 1 0. 6 6 209120 10 $ 11 $ avg / t o t a l 0. 6 1 0. 5 7 0. 5 8 299806

Resumen Pred P Pred N Verd. P TP FP TPR = Verd. N FN TN FPR = TP PPV = TP + FP FP FDR = FP + TP FN FOR = FN + TN TN NPV = TN + FN TP TP + FN FP FP + TN LR+ = TPR FPR LR = FNR TNR FN FNR = TP + FN TN FNR = FP + TN DOR = LR+ LR P 0 : Positive N: Negative P 1 : Predictive R: Rate V: Value F: False T: True D: Discovery O: Odds L: Likelihood

Espacio ROC ROC (Receiver Operating Characteristic). Gráfico bidimensional en el cual representamos en el eje Y el TPR y en el eje X el FPR. Representa la relación entre beneficio (TPR) y coste (FPR). ESPACIO ROC PERFECTO MEJOR PEOR

MEJOR PEOR Espacio ROC Puntos importantes: (0,0): Representa un clasificador que nunca da como salida una respuesta positiva. Falla en todos los positivos y acierta en todos los negativos. (1,1): Representa el caso contrario. Siempre da una respuesta positiva. Acierta todos los casos positivos, pero falla en todos los negativos. (1,0): Representa a un clasificador perfecto. Acierta todos los casos positivos y los negativos. ESPACIO ROC PERFECTO

MEJOR PEOR Espacio ROC Un clasificador C1 es mejor que C2 si C1 está más cerca de (1,0) que C2. Los clasificadores cerca del eje Y pueden ser vistos como clasificadores conservativos. Solo dan una respuesta positiva cuando tienen una fuerte evidencia de ello. Los clasificadores localizados en la zona superior derecha pueden ser vistos como liberales. Necesitan una mínima evidencia para clasificar positivamente una muestra. ESPACIO ROC PERFECTO

MEJOR PEOR Espacio ROC La diagonal (x=y) representa una estrategia aleatoria. Por ejemplo: Un clasificador que clasifique como positiva la mitad de las muestras aleatoriamente se espera que clasifique correctamente el 50% de las muestras positivas por lo que estará en el punto (0.5, 0.5). Si clasifica aleatoriamente como positivas el 80% de las muestras deberá encontrarse en el punto (0.8, 0.8). ESPACIO ROC PERFECTO Un clasificador, para salir de la diagonal debe explotar algún tipo de información extraida de los datos.

MEJOR PEOR Espacio ROC Un clasificador localizado por debajo de la diagonal es peor que cualquier clasificador aleatorio ( o no?). Si negamos la respuesta del clasificador, tendremos un clasificador en la parte superior de la diagonal. ESPACIO ROC PERFECTO Un clasificador sobre la diagonal no tiene información sobre las clases. Sin embargo, un clasificador por debajo de la diagonal, si la tiene pero la está aplicando incorrectamente.

Curva ROC Algunos algoritmos dan como respuesta un valor numérico que indica el grado de seguridad de que una instancia pertenezca a una clase. Naive Bayes, Redes Neuronales, Random Forest, etc. Estos clasificadores probabilisticos pueden ser convertidos a discretos aplicando un umbral. Si aplicamos este umbral gradualemente podemos trazar un curva en el espacio ROC para un solo clasificador.

Area bajo la curva (AUC) El area bajo la curva ROC siempre va entre 0 y 1. Bajo la diagonal hay un area de 0.5, por tanto ningún clasificador debe dar un AUC inferior a 0.5. Propiedades: Es equivalente a la probibilidad de dar un mayor score a una muestra positiva que a una negativa tomadas aleatoriamente. P(score(x + ) > score(x )) (11) El coeficiente de Gini es dos veces el area entre la diagonal y la curva. Gini = (2 AUC) 1 (12)

Validación de modelos

Entrenamiento y validación En el enfoque clásico los datos se dividen en datos de entrenamiento y datos de validación y test en un ratio 7:3 aproximadamente. Entrenamos con un 70% de los datos. Validamos nuestro modelo con el 30% restante. 1 from s k l e a r n. m o d e l s e l e c t i o n i mport t r a i n t e s t s p l i t 2 3 X t r a i n, X t e s t, y t r a i n, y t e s t = \ 4 t r a i n t e s t s p l i t (X, y, t e s t s i z e =0.33) Como sabemos que el 30% de los datos que hemos reservado son representativos de la realidad? Podría existir otra subvidisión mejor? Hemos desaprovechado un 30% de los datos para entrenar.

Dilema sesgo-varianza El error que comete nuestro modelo se puede descomponer en dos tipos de errores: Error de sesgo: Es la media del error entre el valor predicho por nuestro modelo y el valor real. Para conseguir dicha media sería necesario entrenar el mismo modelo N veces con diferentes datos. Medimos la generalidad del modelo respecto a los datos. Error de varianza: La variabilidad en la predicción para una muestra concreta. Medimos la estabilidad del modelo.

Dilema sesgo-varianza Modelos muy simples: alto sesgo. Modelos muy complejos: alta varianza. Tenemos que buscar un equilibrio entre el sesgo y la varianza del modelo.

Validación cruzada Como podemos entrenar nuestro modelo con diferentes datos? Es lo que se conoce como validación cruzada: Conjunto de validación Conjunto de entrenamiento Modelo 1 Modelo 2 Modelo 3 Modelo 10 Accuracy: Acurracy final: Media(Modelo1, Modelo2,..., Modelo10) Desviación : Std(Modelo1, Modelo2,..., Modelo10) Si divido el conjunto de entranamiento en N partes. Cada una de esas partes (fold) se usará para validar y el resto para entrenar. Si creamos 10 folds, tendremos que entrenar 10 modelos. Cada modelo se entrerá con el 90% por de los datos y se validará con un 10%.

Validación cruzada La función cross val score entrenará un modelo por cada fold y calculará la validación de cada uno: 1 from s k l e a r n. m o d e l s e l e c t i o n i mport c r o s s v a l s c o r e 2 3 p r i n t ( c r o s s v a l s c o r e ( e s t i m a t o r, X, y, cv =5) ) 4 [ 0.33150734 0.08022311 0.03531764 0.05323443 0. 1 2 3 2 3 3 ] Para calcular el score cada modelo debe realizar las predicciones de su fold. A estas predicciones se les conoce como predicciones out of fold.

Validación cruzada En el ejemplo anterior pasamos el número de folds. Lo habitual es trabajar siempre con los mismo folds. Para ello scikit learn tiene varias clases, en función de la extrategia de validación cruzada para crear los folds: KFold. Crea los folds aleatoriamente. StratifiedKFold. Para casos con clases desbalanceadas (muchos más positivos que negativos). Los folds mantendrán la misma propoción de clases. LeaveOneOut. Solo se deja un muestra para validar. Creará tantos modelos como muestras haya en nuestro conjunto de datos. LeavePOut. Se dejan P muestras para validar.

Validación cruzada 1 from s k l e a r n. m o d e l s e l e c t i o n i mport c r o s s v a l s c o r e 2 from s k l e a r n. m o d e l s e l e c t i o n i mport KFold 3 4 k f = KFold ( n s p l i t s =5) 5 6 p r i n t ( c r o s s v a l s c o r e ( e s t i m a t o r, X, y, cv=k f ) ) 7 [ 0.33150734 0.08022311 0.03531764 0.05323443 0. 1 2 3 2 3 3 ]

Optimización de parámetros

Selección de modelos Los algoritmos suelen tener un conjunto de parámetros amplio. La selección de modelos consiste en determina que conjunto de parámetros es más aconsejable. En scikit learn tenemos dos clases para realizar la optimización de parámetros: RandomizedSearchCV. Entrena modelos seleccionando los parámetros de manera aleatoria. Se le especifica el rango de cada parámetro a estudiar. GridSearchCV. Se le especifica que valores de cada parámetro estudiar y genera todas las combinaciones entre parámetros posibles.

Selección de modelos 1 from s k l e a r n. m o d e l s e l e c t i o n i mport GridSearchCV 2 3 e s t i m a t o r = L o g i s t i c R e g r e s s i o n ( f i t i n t e r c e p t=true, C =10, t o l =0.001) 4 5 p a r a m e t e r s = { C : [ 1, 10, 2 0 ], t o l : [ 0. 1, 0. 0 1 ] } 6 7 c l f = GridSearchCV ( e s t i m a t o r, parameters, cv =5) 8 c l f. f i t (X, y ) 9 10 p r i n t ( c l f. g r i d s c o r e s ) 11 12 [ mean : 0. 6 9 7 5 2, s t d : 0. 0 0 0 0 0, params : { C : 1, t o l : 0. 1 }, 13 mean : 0. 6 9 7 5 2, s t d : 0. 0 0 0 0 0, params : { C : 1, t o l : 0. 0 1 }, 14 mean : 0. 6 9 7 5 2, s t d : 0. 0 0 0 0 0, params : { C : 1 0, t o l : 0. 1 }, 15 mean : 0. 6 9 7 5 2, s t d : 0. 0 0 0 0 0, params : { C : 1 0, t o l : 0. 0 1 }, 16 mean : 0. 6 9 7 5 2, s t d : 0. 0 0 0 0 0, params : { C : 2 0, t o l : 0. 1 }, 17 mean : 0. 6 9 7 5 2, s t d : 0. 0 0 0 0 0, params : { C : 2 0, t o l : 0. 0 1 } ]