Top Banner
Introducci´ on etricas Validaci´on de modelos Optimizaci´on de par´ ametros Introducci´ on a Scikit Learn David Sol´ ıs Mart´ ın Dpto. Ciencias de la Computaci´on e Inteligencia Artificial Ampliaci´ on de Inteligencia Artificial, 2017-2018
53

Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Sep 06, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Introduccion a Scikit Learn

David Solıs Martın

Dpto. Ciencias de la Computacion e Inteligencia Artificial

Ampliacion de Inteligencia Artificial, 2017-2018

Page 2: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Indice

Introduccion

Metricas

Validacion de modelos

Optimizacion de parametros

Page 3: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Introduccion

Page 4: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn

• Es una librerıa / framework desarrollada en Python y C++orientada al aprendizaje automatico (machine learning).

• Un poco de historia

• Inicialmente desarrollada por David Cournapeau durante elGoogle summer code en 2007

• Later Matthieu Brucher se une al proyecto y la usa como partede su tesis.

• En 2010 INRIA (Institut national de recherche en informatiqueet en automatique) lidera el proyecto y publica la primerarelease.

Page 5: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

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 lasque se basa las implementaciones.

• Tiene un comunidad de desarrolladores muy activa.

• Posee un coleccion muy amplia de algoritmos.

Nota: Para la lectura, escritura y manipulaciones genericasde los conjuntos de datos usar pandas, numpy y scipy

Page 6: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - Estructura

Puesta enproducción

Entrenamiento y evaluación

Ingeniería de Atributos

Procesado de Datos

Agregación de Datos

Page 7: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - Estructura

• Algunos de los paquetes mas importantes:• linear model, ensemble, neighbors, neural networks:

Algoritmos agrupados segun su naturaleza.• metrics. Con un conjunto de funciones para evaluar la calidad

de nuestros modelos. Metricas en funcion del tipo deproblema: clustering, clasificacion, regresion, ...

• model selection. Funciones orientadas a crear divisiones delos datos en entrenamiento y validacion para controlar elsobreajuste.

Page 8: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - Estructura

• Hay dos tipos de clases principales:• Las que derivan de TransformerMixin. Clases que manipulan

los datos, para realizar una transformacion o generar nuevosatributos.• fit. Estas clases tambien se entrenan previamente.• transform. Realizar la transformacion. Recibe el conjunto de

datos X y devuelve el conjunto X’.• fit transform. Metodo de ayuda que llama a los anteriores

metodos secuencialmente.

Page 9: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - Ejemplo

• Por ejemplo, este dataset:

• tiene atributos codificados con texto (como el genero, elstatus y el dıa de la semana) y tambien hay fechas.

• Todos los algoritmos en sklearn trabajan con datos numerico,por lo que tenemos que codificar esos tipos de datos anumerico.

Page 10: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - EjemploPara el caso de los atributos categoricos codificados como textopodemos 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 i m p o r t L a b e l E n c o d e r3

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 y8 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 ]

Page 11: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

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 ]

Page 12: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - Estructura

• Hay dos tipos de clases principales:• Las que derivan de BaseEstimator. Todos los algoritmos de

aprendizaje. Los metodos mas importantes:• fit. Para entrenar el modelo. Recibe dos parametros X e y. X

conjunto de datos en forma tabular (filas=muestras,columnas=atributos) e y es la variable respuesta (la que sequiere predecir)

• predict. Realiza la prediccion de un modelo previamenteentrenado. Solo recibe un conjunto X de muestras usadospara recibir

• predict proba. Idem al anterior pero la respuesta se obtienecomo probabilidades.

Page 13: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Scikit learn - Ejemplo

1 from s k l e a r n . l i n e a r m o d e l \2 i m p o r t L o g i s t i c R e g r e s s i o n3

4 # creamos e l modelo5 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 modelo8 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 s11 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 nouna lista de python.

Page 14: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Metricas

Page 15: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Metricas en scikit-learn

• Cuando estamos ajustando un modelo es necesario estableceruna metrica para determina como de ”bueno es nuestromodelo”.

• La metrica dependera del problema:• Naturaleza de este: clasificacion, regresion, clustering, ranking,

...• Y del uso futuro que se le vaya a dar al modelo.

• En un modelo para determinar si un paciente debe ser operadode urgencia es muy imporante reducir el falsos positivos (sobretodo si dicha operacion es de alto riesgo).

• En un modelo que determina que objetos hay dentro de unimagen sera interesante tener una probabilidad para cadaobjeto.

• Diferentes metricas influyen en la importancia que el modeloda a los atributos.

• Tambien nos ayuda a parametrizar el modelo de la maneramas conveniente.

Page 16: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Metricas para clasificacion

• Los problemas de clasificacion son los mas comunes y en loque mas metricas se han desarollado. Las mas importantes:• Matriz de confusion. Para determinar en que clases falla el

modelo y con que clases las confunde.• Precision, 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.

Page 17: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Tipos de error en clasificacion binaria

• Verdaderos positivos (TP): Aquellas muestras con clasepositiva que han sido clasificadas como positivas (clasificadascorrectamente)

• Verdaderos negativo (TN): Aquellas muestras con clasenegativa que han sido clasificadas como negativas(clasificadas correctamente)

• Falsos positivos (FP): Aquellas muestras con clase positivaque han sido clasificadas como negativas (clasificadasincorrectamente)

• Falsos negativos (FN): Aquellas muestras con clase negativaque han sido clasificadas como positivas (clasificadasincorrectamente)

Page 18: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Tipos de error en clasificacion binaria

FALSO POSITIVO FALSO NEGATIVO

Page 19: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Accuracy

• Mide el porcentaje de acierto.

Accuracy =#prediccionescorrectas

#totaldemuestras(1)

Accuracy =TP + TN

TP + TN + FP + FN=

TP + TN

N(2)

• Es la metrica mas usada para clasificacion y la mas usadaincorrectamente.• Solo util cuando tenemos el mismo numero de observaciones

de ambas clases• y todas las predicciones sobre las clases son igualmente de

importantes.

Page 20: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Accuracy

• Ejemplo: Supongamos que tenemos 170504 muestraspositivas y 129302 negativas. Nuestro modelo clasificacorrecamente 126811 de las muestras positivas y 82309 de lasmuestras negativas.

Accuracy =126811 + 43693

170504 + 129302= 0.5687 = 56.87% (3)

Page 21: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Accuracy

1 from s k l e a r n . m e t r i c s \2 i m p o r t a c c u r a c y s c o r e3

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.568714435334849898

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

Page 22: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Accuracy

• Ejemplo: Supongamos que tenemos 9850 muestras negativasy 150 positivas. Nuestro modelo clasifica correcamente 9700de las muestras negativas y 50 de las muestras positivas.

Accuracy =9700 + 50

9850 + 150= 0.98 = 98.0% (4)

Page 23: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Accuracy Paradox

• Ejemplo: Supongamos ahora que nuestro modelo siempredada una respuesta negativa (modelo trivial):

Accuracy =9850 + 0

9850 + 150= 0.98.5 = 98.5% (5)

• Este modelo tiene una mejor medida de exactitud, sinembargo, es un modelo inutil.

• ¿Por que el accuracy general no es una buena metrica encasos de datos desbalanceados?• Las clases con mayor numero de muestras dominaran el

resultado del calculo de la metrica.

Page 24: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Matriz de confusion

• La matriz de confusion nos muestra mas informacion de lasclasificaciones correctas e incorrectas por clase.

• Con los datos del ejemplo anterior:

• Con la matriz de confusion podemos extraer mas informaciondel comportamiento del modelo por clase:• ¿En que clase se equivoca mas?• Dada un clase, ¿en que grado se confunde con la otra clase?• ¿Que clase tiene mayor precision?

Page 25: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Matriz de confusion

1 from s k l e a r n . m e t r i c s i m p o r t c o n f u s i o n m a t r i x2 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 ] ] )

Page 26: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Matriz de confusion

1 from s k l e a r n . m e t r i c s i m p o r t c o n f u s i o n m a t r i x2 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 d a t a f ra m e con l a i n f o m a c i o n l a m a t r i z de5 # c o n f u n s i o n6 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)

Page 27: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Log-Loss

• Se usa cuando la prediccion obtenida es una probabilidad.

• Es valida tanto para clasificacion binaria como multiclase(mas de 2 clases).

1

N

N∑i=1

−y log(p) − (1 − y) log(1 − p). (6)

• No solo se busca optimizar el numero de aciertos, sinotambien la seguridad con que el modelo acierta.

• Cuando la prediccion es perfecta esta metrica is 0 (cuantomenor mejor).

• Minimizar el log-loss implica maximizar el accuracygeneralmente.

Page 28: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Log-Loss

1 from s k l e a r n . m e t r i c s i m p o r t l o g l o s s2 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

Page 29: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Precision - Recall

• Estas metricas responden a las siguientes preguntas.• De todas las muestras clasificadas como positivas, ¿que

porcentaje es correctamente clasificado?

Precision =TP

TP + FP(7)

• Tambien llamada PPV (positive predictive value)

• De todas las muestras positivas, ¿que porcentaje escorrectamente clasificado?

Recall =TP

TP + FN(8)

• Muchos otros nombres: sensitivy, hit rate y TPR (true positiverate)

Page 30: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

F-Measure

• Es la media armonica de precision y recall:

F1 = 2 ∗ precision ∗ recall

precision + recall(9)

• Se busca que esta metrica de un valor alto solo cuando laprecision y el recall sean altos.

Page 31: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Metricas de ranking

• Estas metricas son muy utlizadas en sitemas de ranking. Porejemplo, el buscador de google.• Un motor de busqueda puede ser visto como un clasificador

binario: dado un termino de busqueda el documento Dxes relevante para la busqueda

• Las metricas anteriores pueden ser interpretadas comoprobabilidades en vez de como proporciones:• Precision: probabilidad de que un documento devuelto en la

busqueda sea relevante.• Recall: probabilidad de un documento relevante sea devuelto

en la busqueda.

Page 32: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Informe

1 from s k l e a r n . m e t r i c s i m p o r t c l a s s i f i c a t i o n r e p o r t2 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 t7 $8 $ 0 0 . 3 5 0 . 4 8 0 . 4 0 906869 $ 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

Page 33: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Resumen

Pred P Pred N

Verd. P TP FP TPR =TP

TP + FNFNR =

FN

TP + FN

Verd. N FN TN FPR =FP

FP + TNFNR =

TN

FP + TN

PPV =TP

TP + FPFOR =

FN

FN + TNLR+ =

TPR

FPR DOR =LR+

LR−FDR =

FP

FP + TPNPV =

TN

TN + FNLR− =

FNR

TNR

• P0: Positive

• N: Negative

• P1: Predictive

• R: Rate• V: Value• F: False• T: True

• D: Discovery

• O: Odds

• L: Likelihood

Page 34: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Espacio ROC• ROC (Receiver Operating Characteristic). Grafico

bidimensional en el cual representamos en el eje Y el TPR yen el eje X el FPR.• Representa la relacion entre beneficio (TPR) y coste (FPR).

PERFECTO

ESPACIO ROC

MEJOR

PEOR

Page 35: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Espacio ROC• Puntos importantes:

• (0,0): Representa un clasificador que nunca da como salidauna respuesta positiva. Falla en todos los positivos y acierta entodos los negativos.

• (1,1): Representa el caso contrario. Siempre da una respuestapositiva. Acierta todos los casos positivos, pero falla en todoslos negativos.

• (1,0): Representa a un clasificador perfecto. Acierta todos loscasos positivos y los negativos.

PERFECTO

ESPACIO ROC

MEJOR

PEOR

Page 36: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Espacio ROC• Un clasificador C1 es mejor que C2 si C1 esta mas cerca de

(1,0) que C2.• Los clasificadores cerca del eje Y pueden ser vistos como

clasificadores conservativos. Solo dan una respuesta positivacuando tienen una fuerte evidencia de ello.

• Los clasificadores localizados en la zona superior derechapueden ser vistos como liberales. Necesitan una mınimaevidencia para clasificar positivamente una muestra.

PERFECTO

ESPACIO ROC

MEJOR

PEOR

Page 37: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Espacio ROC

• La diagonal (x=y) representa una estrategia aleatoria. Porejemplo:• Un clasificador que clasifique como positiva la mitad de las

muestras aleatoriamente se espera que clasifique correctamenteel 50% de las muestras positivas por lo que estara en el punto(0.5, 0.5).

• Si clasifica aleatoriamente como positivas el 80% de lasmuestras debera encontrarse en el punto (0.8, 0.8).

PERFECTO

ESPACIO ROC

MEJOR

PEOR

• Un clasificador, para salir de la diagonal debe explotaralgun tipo de informacion extraida de los datos.

Page 38: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Espacio ROC

• Un clasificador localizado por debajo de la diagonal es peorque cualquier clasificador aleatorio (¿o no?).• Si negamos la respuesta del clasificador, tendremos un

clasificador en la parte superior de la diagonal.

PERFECTO

ESPACIO ROC

MEJOR

PEOR

• Un clasificador sobre la diagonal no tiene informacion sobrelas clases. Sin embargo, un clasificador por debajo de ladiagonal, si la tiene pero la esta aplicando incorrectamente.

Page 39: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Curva ROC

• Algunos algoritmos dan como respuesta un valor numericoque indica el grado de seguridad de que una instanciapertenezca a una clase.• Naive Bayes, Redes Neuronales, Random Forest, etc.

• Estos clasificadores probabilisticos pueden ser convertidos adiscretos aplicando un umbral.

• Si aplicamos este umbral gradualemente podemos trazar uncurva en el espacio ROC para ”un solo clasificador”.

Page 40: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

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 ningun

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−)) (10)

• El coeficiente de Gini es dos veces el area entre la diagonal y lacurva.

Gini = (2 ∗ AUC ) − 1 (11)

Page 41: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Validacion de modelos

Page 42: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Entrenamiento y validacion

• En el enfoque clasico los datos se dividen en datos deentrenamiento y datos de validacion y test en un ratio 7:3aproximadamente.• 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 m p o r tt 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 reservadoson representativos de la realidad? ¿Podrıa existir otrasubvidision mejor?

• Hemos desaprovechado un 30% de los datos para entrenar.

Page 43: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Dilema sesgo-varianza

• El error que comete nuestro modelo se puede descomponer endos 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 mediaserıa necesario entrenar el mismo modelo N veces condiferentes datos. Medimos la generalidad del modelo respectoa los datos.

• Error de varianza: La variabilidad en la prediccion para unamuestra concreta. Medimos la estabilidad del modelo.

Page 44: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Dilema sesgo-varianza

• Modelos muy simples: alto sesgo.

• Modelos muy complejos: alta varianza.

• Tenemos que buscar un equilibrio entre el sesgo y la varianzadel modelo.

Page 45: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Validacion cruzada

• ¿Como podemos entrenar nuestro modelo con diferentesdatos? Es lo que se conoce como validacion cruzada:

Acurracy final: Media(Modelo1, Modelo2, ..., Modelo10)Desviación : Std(Modelo1, Modelo2, ..., Modelo10)

Accuracy:

Modelo 1 Modelo 10Modelo 3Modelo 2

Conjunto de validación

Conjunto de entrenamiento

• Si divido el conjunto de entranamiento en N partes. Cada unade esas partes (fold) se usara para validar y el resto paraentrenar.

• Si creamos 10 folds, tendremos que entrenar 10 modelos.Cada modelo se entrera con el 90% por de los datos y sevalidara con un 10%.

Page 46: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Validacion cruzada

• La funcion cross val score entrenara un modelo por cadafold y calculara la validacion 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 m p o r t c r o s s v a l s c o r e2

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 laspredicciones de su fold. A estas predicciones se les conocecomo predicciones out of fold.

Page 47: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Validacion cruzada

• En el ejemplo anterior pasamos el numero de folds. Lohabitual es trabajar siempre con los mismo folds.

• Para ello scikit learn tiene varias clases, en funcion de laextrategia de validacion cruzada para crear los folds:• KFold. Crea los folds aleatoriamente.• StratifiedKFold. Para casos con clases desbalanceadas

(muchos mas positivos que negativos). Los folds mantendranla misma propocion de clases.

• LeaveOneOut. Solo se deja un muestra para validar. Crearatantos modelos como muestras haya en nuestro conjunto dedatos.

• LeavePOut. Se dejan P muestras para validar.

Page 48: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Validacion 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 m p o r t c r o s s v a l s c o r e2 from s k l e a r n . m o d e l s e l e c t i o n i m p o r t KFold3

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 ]

Page 49: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Optimizacion de parametros

Page 50: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Seleccion de modelos

• Los algoritmos suelen tener un conjunto de parametros amplio.

• La seleccion de modelos consiste en determina que conjuntode parametros es mas aconsejable.

• En scikit learn tenemos dos clases para realizar la optimizacionde parametros:• RandomizedSearchCV. Entrena modelos seleccionando los

parametros de manera aleatoria. Se le especifica el rango decada parametro a estudiar.

• GridSearchCV. Se le especifica que valores de cada parametroestudiar y genera todas las combinaciones entre parametrosposibles.

Page 51: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Seleccion 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 m p o r t Gr idSearchCV2

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 , parameter s , 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 } ]

Page 52: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Pipelines

Page 53: Introducción a Scikit Learn - cs.us.es · Introducci onM etricasValidaci on de modelosOptimizaci on de par ametros Scikit learn Es una librer a / framework desarrollada en Python

Introduccion Metricas Validacion de modelos Optimizacion de parametros

Pipelines

• Un pipeline es una secuencia de transformadores seguidas deun unico estimador.

• La clase Pipeline extiende de BaseEstimator por lo quetendra los mismo metodos que cualquier modelo (fit, predict,predict proba).

• El resulado de entrenar un pipeline es un modelo queposteriormente podremos aplicar a nuevos datos:

• Los transformadores habran aprendido como realizar lastransformaciones con nuevos datos.

• El estimador estara entrenado para predecir con los datos deentrada previamente transformados.