taller caret vi jornadas usuarios r santiago 2014_10 jesus herranz

60
Modelos Predictivos con el paquete caret VI Jornadas de Usuarios de R Santiago de Compostela Jesús Herranz Valera [email protected] Instituto IMDEA Alimentación 24 de octubre de 2014

Upload: trilce

Post on 31-Jan-2016

242 views

Category:

Documents


1 download

DESCRIPTION

Usuarios R

TRANSCRIPT

Page 1: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Modelos Predictivos

con el paquete caret

VI Jornadas de Usuarios de RSantiago de Compostela

Jesús Herranz [email protected]

Instituto IMDEA Alimentación

24 de octubre de 2014

Page 2: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

� Bibliografía

� Introducción al paquete caret

� Preprocesamiento de datos

� Modelos Predictivos. Clasificación y Regresión

� Capacidad predictiva de un modelo

� Técnicas de remuestreo. Validación cruzada. Bootstr apping

� Funciones preProcess(), nearZeroVar(), findCorrelation()

� Función train()

� Funciones predict(), varImp()

� Otras funciones

2

Índice

Modelos Predictivos con caret

Page 3: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Bibliografía

• Max Kuhn & Kjell Johnson. Applied Predictive Modeling. Springer, 2013

• Max Kuhn. Building Predictive Models in R using the caret Package. Journalof Statistical Software. Nov 2008 Vol. 28 – 5

• Max Kuhn. A Short Introduction to the caret Package.

http://cran.r-project.org/web/packages/caret/index.html

• La web del paquete caret: http://topepo.github.io/caret/

3Modelos Predictivos con caret

Page 4: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Paquete caret

• El nombre caret procede de “Classification And REgression Training”

– Entrenamiento (construcción) de Modelos de Clasificación y Regresión

• caret es un paquete que contiene numerosas herramientas para desarrollar y construir modelos predictivos usando otros paquetes de R

• Se puede interpretar como un interfaz común que llama a funciones de otros paquetes de R que en la mayoría de los casos son los que construyen los modelos predictivos

• caret permite estandarizar todas las entradas y salidas de estas funciones

– Datos de entrada (dataframe, fórmulas, matrices, ….)

– Parámetros de las funciones

– Objetos y salidas que devuelven las funciones

4Modelos Predictivos con caret

Page 5: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Paquete caret

• El paquete caret contiene funciones para:

– Pre-procesamiento de datos

– Construcción y evaluación de modelos con diferentes parámetros

– Predicción de nuevas observaciones

– Evaluación de la importancia de las variables

– Visualización de modelos

– Selección de variables (feature selection)

• Además, incorpora otras funciones de gran utilidad y completa algunas funciones que no estaban en los paquetes originales

5Modelos Predictivos con caret

Page 6: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Métodos implementados en caret

6

Modelmethod

Argum. ValueType Packages

TuningParameteres

Linear Regression lm Regr None

Generalized Linear Model glm Dual None

Linear Discriminant Analysis lda Class MASS None

Penalized Regression glmnet Dual glmnet alpha, lambda

Linear Regression with Stepwise Selection

leapSeq Regr leaps nvmax

Principal Component Analysis pcr Regr pls ncomp

Partial Least Squares pls Dual pls ncomp

Supervised Principal Component Analysis

superpc Regr superpcthreshold, n.components

k-Nearest Neighbors kknn Dual kknnkmax, distance, kernel

Naive Bayes nb Class klaR fL, usekernel

Modelos Predictivos con caret

Page 7: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Métodos implementados en caret

7

Modelmethod

Argum. ValueType Packages

TuningParameteres

Multi-Layer Perceptron mlp Dual RSNNS size

Neural Network nnet Dual nnet size, decay

CART rpart Dual rpart cp

Random Forest rf Dual randomForest mtry

Support Vector Machines with Linear Kernel

svmLinear Dual kernlab C

Support Vector Machines with Radial Basis Function Kernel

svmRadial Dual kernlab sigma, C

Multivariate Adaptive Regression Spline

earth Dual earth nprune, degree

Generalized Additive Model gam Dual mgcv select, method

Stochastic Gradient Boosting gbm Dual gbm, plyrn.trees, interaction.depth, shrinkage

Modelos Predictivos con caret

Page 8: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Pre-procesamiento

• Las técnicas de pre-procesamiento de datos se refieren al tratamiento previo de las observaciones y de las variables en el conjunto de datos antes de la elaboración de un modelo

• Estandarización o normalización de variables

– Centrado de la variable, restando la media

– Escalado de la variable, dividiendo por la desviación estándar

– Una variable estandarizada tendrá media 0 y desviación estándar 1

• Transformaciones para conseguir una distribución simétrica

– Familia de transformaciones de Box y Cox

8

≠λλ−

0)xlog(

01x

x*

Modelos Predictivos con caret

Page 9: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Reducción del conjunto de variables

• Eliminar variables donde todas o la gran mayoría de las observaciones tienen un único valor

– “zero variance predictors” o “near-zero variance predictors ”

– Se pueden detectar comparando las frecuencias de la 1º y 2º categorías más numerosas. También se debe comprobar que el número de valores distintos es pequeño

• Algunos conjuntos de datos contienen variables muy correlacionadas , algunas de las cuáles se podrían borrar:

– Se pretende borrar el mínimo número de predictores de tal forma que todas las correlaciones entre todas las variables restantes estén por debajo de un determinado valor prefijado (threshold)

– Se van borrando de forma iterativa mientras que queden variables con correlaciones por encima del threshold. Se van seleccionando las dos variables con mayor correlación y entre ellas se borra la más correlacionadas con el resto

9Modelos Predictivos con caret

Page 10: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Aprendizaje Supervisado y No Supervisado

• Las Técnicas de Aprendizaje se usan para analizar grandes cantidades de datos, extrayendo importantes patrones y tendencias

– Se pretende conocer qué es lo que los datos “dicen”, y se usa el término “aprendiendo de los datos ”

– Técnicas de Machine Learning y Statistical Learning

• En el Aprendizaje Supervisado el objetivo es predecir el valor de una variable respuesta basado en numerosas variables de entrada, llamadas variables predictoras

– La variable a predecir “supervisa” el aprendizaje

– Modelos Predictivos

• En el Aprendizaje No Supervisado el objetivo es describir las relaciones y patrones entre un conjunto de variables de entrada

– Modelos Descriptivos

10Modelos Predictivos con caret

Page 11: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Clasificación y Regresión

• La Clasificación es la técnica de Aprendizaje Supervisado en la que cada observación pertenece a una clase y el resto de variables son usadas para predecir la clase a la que pertenecerán nuevas observaciones

– Modelos Predictivos con variable respuesta categóri ca

– Normalmente, se generan dos tipos de predicciones: la clase predicha y la probabilidad de pertenecer a cada una de las clases

• La Regresión es la técnica de Aprendizaje Supervisado que consiste en aprender una función que asigna a cada observación una predicción en forma de valor numérico

– Modelos Predictivos con variable respuesta continua

11Modelos Predictivos con caret

Page 12: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Evaluación de Modelos

• El objetivo general es evaluar la calidad de un modelo mediante su capacidad predictiva

– Medidas objetivas basadas en la comparación de los valores observados para la variable respuesta y los valores predichos por el modelo

• Un modelo predictivo pretende predecir el valor de la variable respuesta para observaciones nuevas , a partir de los valores que presentan estas observaciones en las variables predictoras

• Si la evaluación del modelo se hace sobre el propio conjunto de datos con el que se ha construido el modelo, se produce un sobreajuste (overfitting)

– Es necesario evaluar el modelo en un conjunto de datos diferente al que se ha utilizado para construirlo

– Se dice que se obtienen medidas de error “honestas”

12Modelos Predictivos con caret

Page 13: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Medidas de la Capacidad Predictiva. Clasificación

• En el caso de una variable predictora categórica , se podría formar la matriz de confusión o tabla de clasificación

• Las clasificaciones correctas son las que están en la diagonal

• Las clasificaciones incorrectas son las que están fuera de la diagonal

ObservPredicho

Y=1 Y=2 … Y=k

Y=1 F11 F12 … F1k

Y=2 F21 F22 … F2k

... … … … …

Y=k Fk1 Fk2 … Fkk

13

N

FAccuracy

k

1iii∑

==N

F

RateError

k

ji,1j,1iij∑

≠===

• Exactitud (Accuracy): proporción de clasificaciones correctas

• Error de clasificación o tasa de error (Error rate) : proporción de clasificaciones incorrectas

Modelos Predictivos con caret

Page 14: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Medidas de la Capacidad Predictiva. Clasificación

• En el caso de una variable respuesta binaria con clases 0 y 1, y asumiendo que la categoría 1 es el “evento de interés”, la tabla de clasificación sería:

ObservadoPredicho

Y=1 Y=0 Total

Y=1 VP FN VP + FN

Y=0 FP VN FP + VN

Total VP + FP FN + VN N

14

• Sensibilidad: es la capacidad de un modelo para detectar los verdaderos positivos (VP)

• Especificidad: es la capacidad de un modelo para detectar los verdaderos negativos (VN)

FNVP

VPadSensibilid

+= FPVN

VNdadEspecifici

+=

VP = Verdaderos Positivos

VN = Verdaderos Negativos

FP = Falsos Positivos

FN = Falsos Negativos

Modelos Predictivos con caret

Page 15: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

• Las curvas ROC se utilizan para evaluar la capacidad predictiva de un predictor continuo en un problema de clasificación con dos clases

– Se consideran todos los valores del predictor continuo como puntos de corte para definir predictores binarios , para los cuáles se puede calcular la sensibilidad y especificidad

– Las probabilidades predichas por un modelo pueden ser consideradas como un predictor continuo

15

Medidas de la Capacidad Predictiva. Curvas ROC

Modelos Predictivos con caret

• La curva ROC se define con los puntos ( 1 – especificidad, sensibilidad )

• El área bajo la curva (AUC ) es considerado como una medida de la capacidad predictiva del predictor

– Un predictor ideal tendría AUC = 1

– Un predictor que predice de forma aleatoria tendría AUC = 0.5

Page 16: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Medidas de la Capacidad Predictiva. Regresión

• En Regresión, las medidas de capacidad predictiva de un modelo se basan en los residuos , diferencias entre los valores observados y predichos

• El error cuadrático medio (MSE, mean squared error) y su raíz cuadrada

16

∑=

−=N

1i

2ii )yy(

N1

MSE MSERMSE=

• El coeficiente de determinación es una medida del ajuste del modelo y es la proporción de variabilidad de la variable respuesta explicada por el modelo ajustado

( )( ) ( )2

i

2

i

2

i

2

i

T

R2

yy

e1

yy

yy

SS

SSR

∑∑

∑∑

−−=

−==

– 0 < R2 < 1. R2 = 1 significa un ajuste perfecto y R2 = 0 un ajuste nulo

Modelos Predictivos con caret

Page 17: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

• Un método para obtener una estimación honesta de la capacidad predictiva de un modelo es dividir la muestra original en dos submuestras:

1. Una muestra de entrenamiento (training set ) que se usa para la construcción del modelo

2. Una muestra de validación (testing set ) donde se realizan las predicciones y donde se evalúa la capacidad predictiva del modelo

• La partición se debe hacer de forma aleatoria

• Se usa con muestras suficientemente grandes

– Si la muestra es pequeña, todas las observaciones son necesarias para construir el modelo

– La muestra de testing no tiene precisión suficiente para evaluar el modelo

17

Métodos de Estimación. Training y Testing

Modelos Predictivos con caret

Page 18: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

• El método de Validación Cruzada (Cross-validation, CV) consiste en dividir de forma aleatoria la muestra en K subconjuntos de similar tamaño , y ajustar K modelos , dejando cada vez una partición como conjunto de testing, y construyendo el modelo con las K-1 restantes

– La estimación del error se calcula como promedio de los K errores evaluados en las muestras de testing de las K particiones

• El número K de particiones (folds) se elige dependiendo del tamaño de la muestra. Se suele elegir K=10 (10-fold CV ) o K=5

– Se puede repetir varias veces el proceso de validación cruzada. Por ejemplo, si se repite 10 veces: 10 times 10-fold CV

• Cuando el número de particiones en el proceso de validación cruzada es K=N, el método se llama leave-one-out (LOOCV) porque se construyen N modelos, y en cada uno de ellos se queda fuera una única observacióncomo muestra de testing. Se suele usar en muestras pequeñas

18

Técnicas de remuestreo. Validación Cruzada

Modelos Predictivos con caret

Page 19: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

19

Técnicas de remuestreo. Validación Cruzada

Modelo 1

Evaluación

Modelo 5

Evaluación

Training

Testing

Training

Testing

Muestra

5-fold CV

….. (K=5 particiones)

Partición aleatoria

Modelos Predictivos con caret

Page 20: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

20

Técnicas de remuestreo. LOOCV

Modelo 1Muestra 1

…..

N - 1

Muestra de Training

obs. 1

Muestra de testing

Modelo 2Muestra 2 N - 1 obs. 2

Modelo NMuestra N N - 1 obs. N

Construcción Evaluación

11 Y Y

22 Y Y

NN Y Y

(N particiones) …

Modelos Predictivos con caret

Page 21: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

• Es un método de remuestreo que se suele utilizar en muestras pequeñas

• Se elige una muestra aleatoria con reemplazamiento de tamaño N para la construcción del modelo (muestra bootstrap )

– Algunas observaciones estarán repetidas

• Las observaciones que no han sido elegidas se reservan como muestra de testing , llamada muestra out-of-bag. Son aproximadamente 0.368xN

• Se repite este proceso un número K prefijado de veces. Las K repeticiones del proceso son independientes a diferencia de la validación cruzada. Eso hace este proceso más robusto desde el punto de vista estadístico

21

Técnicas de remuestreo. Bootstrapping

Modelos Predictivos con caret

Page 22: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Fichero de datos: Alzheimer

• Objetivo del estudio: analizar un conjunto de 128 biomarcadores , medidas de expresión de proteínas , asociados a las primeras etapas de Alzheimer

Nombre Descripción Categorías / Observaciones

128 Variables Expresión de proteínas Biomarcadores exploratorios

age Edad

male Género 0 = mujer, 1 = hombre

tau, p_tau, Ab_42 3 proteínas conocidas que están asociadas a Alzheimer

E4, E3, E2 3 alelos (SNPs) asociados a Alzheimer

0 = no presenta el alelo, 1 = presenta el alelo

Class Presencia de Alzheimer 1 = Alzheimer (primeras e tapas), 0 = Control

training Muestra de training o testing 1 = training, 0 = testing

22

• Problema de Clasificación , usando la variable respuesta binaria “Class ”

• Los datos se separan en 2 muestras: una de training y otra de testing

• Ejemplo extraído de “Applied Predictive Modeling”. Max Kuhn

Modelos Predictivos con caret

Page 23: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Esquema del Análisis de datos

• Construcción de las muestras de training y testing

• Pre-Procesamiento de los datos

– Eliminar y estandarizar las variables predictoras

• Selección de los parámetros de Support Vector Machines (SVM) en la muestra de training

– Estimación “honesta” de la capacidad predictiva del modelo (validación interna)

• Construcción del modelo en la muestra de training con los parámetros óptimos

• Validación externa del modelo con la muestra de testing

23Modelos Predictivos con caret

Page 24: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Librerías> library(caret)> library(corrplot)> library(pROC) > ## Fichero Datos: Alzheimer> xx.all = read.csv("C://Taller Modelos Predictivos caret/Alzheimer.csv", sep=";")> dim(xx.all)[1] 333 134> ## Variable Respuesta, Class, como factor> xx.all$Class = as.factor(xx.all$Class)> ## Posición de Y en el dataframe (columna)> indY = which ( "Class" == names(xx.all) )> ## Muestras de Training y Testing (la variable “training” está en la col. 134)> xx.train = xx.all [ xx.all$training == 1 , - 134 ]> xx.test = xx.all [ xx.all$training == 0 , - 134 ]> dim(xx.train)[1] 267 133> dim(xx.test)[1] 66 133> ## Distribución de la Variable Respuesta> table(xx.train$Class)

Control Impaired 194 73

Ejemplo: Pre-procesamiento

• La variable respuesta “Class” se define como factor ya que es un problema de Clasificación , y en la variable “indY” se almacena la columna donde está la variable

• Se divide el conjunto de datos en una muestra de training y otra de testing

24Modelos Predictivos con caret

Page 25: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Pre-Procesamiento de datos > ## Near-Zero Variance Predictor> ind.zero.var = nearZeroVar ( xx.train, freqCut = 95/5, uniqueCut = 10 )> head(ind.zero.var)integer(0)> length(ind.zero.var)[1] 0> names(xx.train)[head(ind.zero.var)]character(0)> > ## Ejemplo más estricto> ind.zero.var = nearZeroVar ( xx.train, freqCut = 90/10, uniqueCut = 10 )> ind.zero.var[1] 131> table ( xx.train [ , 131 ] )

0 1 20 247

> prop.table ( table ( xx.train [ , 131 ] ) )0 1

0.07490637 0.92509363

Ejemplo: Predictores con “varianza casi cero”

• Se usa la función nearZeroVar() del paquete caret para buscar las variables que tengan “varianza casi cero” , aquellas que entre las dos categorías más numerosas tengan una relación de 95/5 y que tengan menos de 10 valores únicos

• No hay ninguna, y se prueba con 90/10, criterio que cumple la variable 131

25Modelos Predictivos con caret

Page 26: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Matriz de correlaciones de los Predictores> w.corr = cor ( xx.train[ , - indY ] )> dim(w.corr)[1] 132 132> ## Gráfico de la matriz de correlaciones> dev.new()> corrplot ( w.corr[1:50,1:50]) > rownames(w.corr) = 1:nrow(w.corr) ## Los nombres son muy largos> colnames(w.corr) = 1:nrow(w.corr) ## Los nombres son muy largos> dev.new()> corrplot ( w.corr[1:50,1:50], order="hclust")

Ejemplo: Predictores con alta correlación

26Modelos Predictivos con caret

Page 27: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Ejemplo: Predictores con alta correlación

27

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

39 49 8 31 40 41 17 20 32 47 5 6 14 4 26 16 12 13 15 7 11 19 46 28 42 34 48 2 10 29 1 3 37 18 30 9 22 25 36 44 27 45 21 43 33 50 24 38 23 35

3949

831404117203247

56

144

2616121315

711194628423448

21029

13

371830

92225364427452143335024382335

Modelos Predictivos con caret

Page 28: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Encontrar las correlaciones altas por parejas> ind.high.corr = findCorrelation ( w.corr, cutoff = 0.8 )> length(ind.high.corr)[1] 14> ind.high.corr

[1] 109 121 53 118 103 31 62 87 46 12 127 13 16 2> > ## Borrar las variables> xx.train = xx.train [ , - ind.high.corr ]> dim(xx.train)[1] 267 119> ## Borrar las variables> xx.test = xx.test [ , - ind.high.corr ]> dim(xx.test)[1] 66 119> > ## Posición de Y en el dataframe> indY = which ( "Class" == names(xx.train) )

Ejemplo: Predictores con alta correlación

• Se usa la función findCorrelation() del paquete caret para buscar variables que estén correlacionadas por encima de un valor ( cutoff= )

• Esta función devuelve las columnas de las variables que se pueden borrar, seleccionando una de cada pareja de variables correlacionadas por encima de 0.8

• Se borran 14 variables de las muestras de training y testing

28Modelos Predictivos con caret

Page 29: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Estadandarización de las Variables Predictoras> w.trans = preProcess ( xx.train [ , -indY ] , method = c ("center", "scale") )> w.transCreated from 267 samples and 118 variablesPre-processing: centered, scaled

> xx.train[ , -indY] = predict( w.trans , xx.train[ , -indY] )> xx.test [ , -indY] = predict( w.trans , xx.test[ , -indY] )> > ## Comprobando la estandarización> mean.st = apply ( xx.train[ , -indY] , 2 , mean, na.rm=T ) > range ( mean.st )[1] -2.338459e-15 1.271271e-14> sd.st = apply ( xx.train[ , -indY] , 2 , sd, na.rm=T )> range ( sd.st )[1] 1 1> mean.st = apply ( xx.test[ , -indY] , 2 , mean, na.rm=T ) > range ( mean.st )[1] -0.1897870 0.3187996

Ejemplo: Estandarización

• Se usa la función preProcess() del paquete caret para obtener las medias y las SDs (method=). La función predict() aplicada al objeto que crea preProcess() es la que realmente aplica la normalización

• La normalización sobre la muestra de testing se hace con las medias y SDs de la muestra de training, para obtener predicciones correctas

29Modelos Predictivos con caret

Page 30: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Support Vector Machines

• Support Vector Machines es una técnica de aprendizaje estadístico que pertenece a la familia de los clasificadores lineales

• Si las clases son linealmente separables, se selecciona el hiperplano que maximiza la distancia mínima entre las observaciones del conjunto de datos y el hiperplano, al que se le llama margen geométrico

30

Vectores soporte

0 5 10 15 20

05

1015

Vectores soporte

Margen

Modelos Predictivos con caret

Page 31: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Support Vector Machines

• Cuando los datos no se pueden separar linealmente, se hace una transformación no lineal a un espacio de dimensión mayor donde se puedan separar linealmente

31

– No es necesario definir explícitamente las transformaciones. Se usan funciones núcleo (kernel ), que calculan el productor escalar en el espacio de características

– Una de las funciones núcleo más usada es la función radial (gaussiano)

( ) 0 zxexp)z,x(K2 >γ−⋅γ−= Cuánto mayor es gamma , más

flexible es el clasificador, en el sentido de mayor curvatura

Modelos Predictivos con caret

Page 32: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Support Vector Machines

• Support Vector Machines también se puede usar con conjuntos de datos que no son linealmente separables ni siquiera en el espacio de transformaciones

– Se asumen malas clasificaciones , para encontrar un separador más generalizable , que “clasifique mejor a la mayoría de las observaciones”

– Permite obtener clasificadores más robustos al sobreajuste

32

0 5 10 15 20

05

1015

Se incluye un término de penalización sobre los errores, y un parámetro C>0 que controla su importancia relativa

Valores pequeños de C permiten mayor número de errores y definen regiones de decisión más suaves

Modelos Predictivos con caret

Page 33: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Función train()

• La función train() es la función más importante del paquete caret

• Esta función actúa en dos pasos:

– Se evalúa la capacidad predictiva del modelo (performance) para diferentes parámetros (tuning parameters), usando técnicas de remuestreo

– Se seleccionan los parámetros óptimos , los que tienen mayor capacidad predictiva, y con ellos se construye el modelo predictivo en la muestra de training (“modelo final”)

33Modelos Predictivos con caret

Page 34: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Función train()

• Parámetros

– x : matriz o dataframe que contiene las variables predictoras

– y : vector que contiene la variable respuesta

– form : fórmula para indicar las variables predictoras y la respuesta

– data : dataframe que contiene los datos

– method : método de construcción del modelo predictivo (ver tabla)

– preProcess: Pre-procesamiento de los datos

“center”, “scale”, “range”, “BoxCox”, “pca”

– metric : medida de capacidad predictiva para elegir el parámetro óptimo

“RMSE”, “Rsquared”, “Accuracy”, “Kappa”, “ROC”

34Modelos Predictivos con caret

Page 35: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Función train()

• Parámetros

– trControl: controla la construcción del modelo y el proceso de la técnica

de remuestreo usada (*)

– tuneGrid: dataframe con los valores de los parámetros a evaluar

Los nombres de las columnas deben coincidir con los nombres de los parámetros (ver tabla)

– tuneLength: número de niveles para cada parámetro de tuning, si no se

han especificado valores concretos con tuneGrid

– . . . : argumentos adicionales a las funciones del paquete de R

35Modelos Predictivos con caret

Page 36: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Parámetro trControl= de la función train()

• Parámetros

– method : método de remuestreo:

“boot” (bootstrapping), “none” (ajusta un único modelo)

“cv” (validación cruzada), “repeatedcv” (CV repetida), “LOOCV”

– number : número de particiones en la CV o número de iteraciones

– repeats : número de veces que se repite la CV (“repeatedcv”)

– summaryFunction : una función que evalúa la capacidad predictiva

“defaultSummary” (accuracy, Kappa, RMSE, R2) “twoClassSummary” calcula la sensibilidad, especificidad y el AUC de la curva ROC cuando hay 2 clases

– classProbs : Calcula las probabilidades predichas de las clases

Es necesario para calcular la curva ROC (def, FALSE)

– savePredictions : Salva las predicciones “hold-out” (def, FALSE)

36Modelos Predictivos con caret

Page 37: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Suppor Vector Machine. Construcción del Modelo Predictivo> > ## Control de la Técnica de Remuestreo> fiveStats = function(...) c (twoClassSummary(...), defaultSummary(...))> > cv.ctrl = trainControl ( method = "repeatedcv", number = 10 , repeats = 5, + classProbs = TRUE,+ summaryFunction = fiveStats )> > ## Parámetros a explorar en SVM > svmGrid = expand.grid ( .C = c ( 1, 5, 10, 50, 100 ) ,+ .sigma = c ( 0.001, 0.005, 0.01, 0.05 ) )

Ejemplo: Evaluación de Parámetros

• Antes de ejecutar la función train() se debe especificar la técnica de remuestreo con la que se va a evaluar el modelo: 5 times 10-fold CV

• Además se van a calcular las probabilidades de pertenecer a cada clase, necesarias para usar el AUC como medida de capacidad predictiva

• A las funciones “resumen” por defecto, se añade “twoClassSummary” lo que permite calcular las medidas asociadas a las curvas ROC

• Se especifican los valores de los 2 parámetros de SVM que se van a explorar ( .C y .sigma ) . La función expand.grid() crea un dataframe con todas las combinaciones

37Modelos Predictivos con caret

Page 38: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Construcción del Modelo Predictivo> svm.fit = train ( xx.train [ , -indY ] , xx.train$Class , + method = "svmRadial", + tuneGrid = svmGrid,+ trControl = cv.ctrl,+ metric = "ROC", + prob.model = TRUE )Loading required package: kernlab> svm.fit

Support Vector Machines with Radial Basis Function Kernel 267 samples118 predictors

2 classes : 'Control', 'Impaired' No pre-processingResampling: Cross-Validated ( 10 fold, repeated 5 times )

. . . . . .

Ejemplo: Evaluación de Parámetros

• En la función train() se especifican las variables predictoras y la variable respuesta

• Se van a construir varios modelos con SVM con la función radial (method=“svmRadial”, que usa el paquete kernlab que es cargado por caret ), para todos los parámetros especificados (tuneGrid=)

• Se considera el mejor modelo como el que tiene mayor AUC de la curva ROC (metric=“ROC” ) evaluado con la técnica de remuestreo especificada ( trControl= )

38Modelos Predictivos con caret

Page 39: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Resampling results across tuning parameters:C sigma ROC Sens Spec Accuracy Kappa ROC SD . . . Accuracy SD Kappa SD1 0.001 0.881 0.886 0.753 0.85 0.629 0.0942 . . . 0.0768 0.186 1 0.005 0.877 0.926 0.687 0.861 0.633 0.0931 . . . 0.0717 0.194 1 0.01 0.876 0.928 0.657 0.854 0.609 0.0898 . . . 0.0725 0.201 1 0.05 0.808 0.961 0.277 0.773 0.275 0.112 . . . 0.0521 0.212 5 0.001 0.887 0.923 0.705 0.864 0.644 0.0893 . . . 0.0753 0.199 5 0.005 0.878 0.929 0.663 0.856 0.616 0.0908 . . . 0.0754 0.206 5 0.01 0.877 0.926 0.64 0.848 0.592 0.0894 . . . 0.0763 0.212 5 0.05 0.807 0.963 0.227 0.761 0.222 0.112 . . . 0.0505 0.208 10 0.001 0.885 0.943 0.687 0.873 0.657 0.0917 . . . 0.0708 0.198 10 0.005 0.873 0.92 0.625 0.839 0.57 0.0891 . . . 0.0754 0.205 10 0.01 0.877 0.927 0.654 0.853 0.606 0.0894 . . . 0.0704 0.192 10 0.05 0.807 0.962 0.242 0.765 0.236 0.112 . . . 0.055 0.227 50 0.001 0.857 0.922 0.601 0.834 0.552 0.0899 . . . 0.078 0.213 50 0.005 0.873 0.926 0.622 0.843 0.576 0.0891 . . . 0.076 0.208 50 0.01 0.877 0.934 0.638 0.853 0.603 0.0894 . . . 0.0757 0.21 50 0.05 0.807 0.964 0.274 0.775 0.279 0.112 . . . 0.0602 0.23 100 0.001 0.851 0.919 0.572 0.824 0.522 0.0889 . . . 0.0745 0.202 100 0.005 0.873 0.921 0.616 0.838 0.564 0.0891 . . . 0.0738 0.201 100 0.01 0.877 0.925 0.648 0.85 0.596 0.0894 . . . 0.0755 0.21 100 0.05 0.807 0.963 0.228 0.761 0.224 0.112 . . . 0.0525 0.211

ROC was used to select the optimal model using the largest value.The final values used for the model were sigma = 0.001 and C = 5.

Ejemplo: Evaluación de Parámetros

39

• El modelo de SVM con sigma=0.001 y C=5 es el modelo con mayor AUC, 0.887 que es el promedio de las 50 AUCs de los modelos del remuestreo para esos parámetros

Modelos Predictivos con caret

Page 40: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> names(svm.fit)[1] "method" "modelInfo" "modelType" "results" "pred" [6] "bestTune" "call" "dots" "metric" "control"

[11] "finalModel" "preProcess" "trainingData" "resample" "resampledCM" [16] "perfNames" "maximize" "yLimits" "times" > > ## Parámetros óptimos> svm.fit$bestTune

sigma C5 0.001 5> svm.fit$bestTune$sigma[1] 0.001> svm.fit$bestTune$C[1] 5> ## Resultados> head(svm.fit$results)

C sigma ROC Sens Spec Accuracy Kappa ROCSD SensSD1 1 0.001 0.8810273 0.8858421 0.7528571 0.8495706 0.6289897 0.09418768 0.079477085 5 0.001 0.8868346 0.9232632 0.7053571 0.8639011 0.6439127 0.08931012 0.070312539 10 0.001 0.8853139 0.9426842 0.6871429 0.8730138 0.6566747 0.09171076 0.0564743513 50 0.001 0.8571203 0.9219474 0.6007143 0.8340883 0.5519905 0.08988780 0.0679206117 100 0.001 0.8506269 0.9188947 0.5721429 0.8243142 0.5220607 0.08885459 0.06761002

SpecSD AccuracySD KappaSD1 0.1589578 0.07679743 0.18618175 0.1844601 0.07527970 0.19913609 0.1982010 0.07078200 0.198007313 0.1844781 0.07797558 0.212689017 0.1812467 0.07454970 0.2023394

Ejemplo: Evaluación de Parámetros

40Modelos Predictivos con caret

Page 41: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Ejemplo: Evaluación de Parámetros

41

Cost

RO

C (R

epea

ted

Cro

ss-V

alid

atio

n)

0.82

0.84

0.86

0.88

0 20 40 60 80 100

Sigma0.001 0.005 0.01 0.05

Cost

Kap

pa (R

epea

ted

Cro

ss-V

alid

atio

n)

0.3

0.4

0.5

0.6

0 20 40 60 80 100

Sigma0.001 0.005 0.01 0.05

> ## Gráfico del AUC respecto a los 2 parámetros> dev.new()> plot( svm.fit )> dev.new()> plot( svm.fit, metric= "Kappa" )

ROC Kappa

Modelos Predictivos con caret

Page 42: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Ejemplo: Evaluación de Parámetros

42

ROC (Repeated Cross-Validation)Cost

Sig

ma

0.001

0.005

0.01

0.05

1 5 10 50 100

0.81

0.82

0.83

0.84

0.85

0.86

0.87

0.88

0.89

> ## Gráfico del AUC respecto a los 2 parámetros > dev.new()> plot( svm.fit, plotType="level" )

Modelos Predictivos con caret

Page 43: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Modelo Final, construido con los parámetros óptimos> svm.fit$finalModel Support Vector Machine object of class "ksvm" SV type: C-svc (classification)

parameter : cost C = 5

Gaussian Radial Basis kernel function. Hyperparameter : sigma = 0.001

Number of Support Vectors : 138 Objective Function Value : -419.6113 Training error : 0.067416 Probability model included.

> class(svm.fit)[1] "train"> class(svm.fit$finalModel) [1] "ksvm"attr(,"package")[1] "kernlab"

Ejemplo: Modelo Predictivo Final

43

• El objeto $finalModel contiene el modelo predictivo construido con el paquete kernlab en la muestra de training con los parámetros óptimos

• El objeto $finalModel es de la clase que le asigna el paquete con el que ha sido construido. Se podrían usar las funciones de ese paquete con este objeto

Modelos Predictivos con caret

Page 44: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Clases predichas> pred.train.class = predict ( svm.fit$finalModel, newdata = xx.train [ , -indY] )> pred.test.class = predict ( svm.fit$finalModel, newdata = xx.test [ , -indY] )> head(pred.test.class)[1] Control Impaired Control Impaired Control Control Levels: Control Impaired> ## Probabilidades predichas> pred.test.prob = predict( svm.fit$finalModel , newdata = xx.test [ , -indY] , + type = "prob" )> head(pred.test.prob)

Control Impaired[1,] 0.8896693 0.11033070[2,] 0.2375410 0.76245899[3,] 0.9113037 0.08869630[4,] 0.1690830 0.83091703[5,] 0.9128701 0.08712992[6,] 0.6858061 0.31419388

Ejemplo: Predicciones del Modelo

44

• La función predict() permite obtener las clases predichas por el “modelo final” construido con la muestra de training, para cada observación del dataframe especificado en newdata=

• Se guardan las clases predichas en las muestras de training y testing

• La función predict() también permite calcular las probabilidades predichas (type=“prob”) y devuelve una columna por cada clase

Modelos Predictivos con caret

Page 45: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> confusionMatrix ( pred.test.class , xx.test$Class )Confusion Matrix and Statistics

ReferencePrediction Control Impaired

Control 43 8Impaired 5 10

Accuracy : 0.803 95% CI : (0.6868, 0.8907)

No Information Rate : 0.7273 Kappa : 0.4762

Sensitivity : 0.8958 Specificity : 0.5556

. . . > confusionMatrix ( pred.train.class , xx.train$Class )Confusion Matrix and Statistics

ReferencePrediction Control Impaired

Control 192 16Impaired 2 57

Accuracy : 0.9326

Ejemplo: Validación externa

45

• La función confusionMatrix() del paquete caret permite mostrar la tabla de confusión del modelo con diferentes estadísticos asociados

• Se observa el sobreajuste si se evalúa el modelo en la muestra de training

Modelos Predictivos con caret

Page 46: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Curva ROC> dev.new()> roc ( xx.test$Class, pred.test.prob [ , 2] , plot=T )Area under the curve: 0.8704

Ejemplo: Validación externa

46

• La función roc() del paquete pROCpermite mostrar la curva ROC

• Se introducen las probabilidades predichas como predictor continuo

• El AUC en la muestra de testing, 0.870 es muy parecido al obtenido por validación cruzada, 0.887

Specificity

Sen

sitiv

ity

0.0

0.2

0.4

0.6

0.8

1.0

1.0 0.8 0.6 0.4 0.2 0.0

Modelos Predictivos con caret

Page 47: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Importancia de las Variables> svm.imp = varImp ( svm.fit , scale = F )> svm.impROC curve variable importance

only 20 most important variables shown (out of 118)Importance

Ab_42 0.7917tau 0.7839MMP10 0.6994MIF 0.6710Eotaxin_3 0.6685GRO_alpha 0.6672MMP7 0.6657IGF_BP_2 0.6641

. . . > head(svm.imp$importance)

Control ImpairedACE_CD143_Angiotensin_Converti 0.5409900 0.5409900AXL 0.4921268 0.4921268Adiponectin 0.5396837 0.5396837Alpha_1_Antichymotrypsin 0.5677870 0.5677870Alpha_1_Antitrypsin 0.6040813 0.6040813Alpha_1_Microglobulin 0.5808502 0.5808500

Ejemplo: Importancia de las Variables

47

• La función varImp() contiene un score de la importancia de la variable en el modelo construido, que es almacenado en el objeto $importance

Modelos Predictivos con caret

Page 48: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Gráfico> dev.new()> plot(svm.imp, top=20)

Ejemplo: Importancia de las Variables

48

Importance

Thrombopoietin

Gamma_Interferon_induced_Monokin

Fibrinogen

Cortisol

Creatine_Kinase_MB

NT_proBNP

age

Pancreatic_polypeptide

VEGF

FAS

PAI_1

TRAIL_R3

IGF_BP_2

MMP7

GRO_alpha

Eotaxin_3

MIF

MMP10

tau

Ab_42

0.65 0.70 0.75

Modelos Predictivos con caret

Page 49: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Control de la Técnica de Muestreo > names(svm.fit$control$index)

[1] "Fold01.Rep1" "Fold02.Rep1" "Fold03.Rep1" "Fold04.Rep1" "Fold05.Rep1"[6] "Fold06.Rep1" "Fold07.Rep1" "Fold08.Rep1" "Fold09.Rep1" "Fold10.Rep1"

[11] "Fold01.Rep2" "Fold02.Rep2" "Fold03.Rep2" "Fold04.Rep2" "Fold05.Rep2"[16] "Fold06.Rep2" "Fold07.Rep2" "Fold08.Rep2" "Fold09.Rep2" "Fold10.Rep2"[21] "Fold01.Rep3" "Fold02.Rep3" "Fold03.Rep3" "Fold04.Rep3" "Fold05.Rep3"

. . . > svm.fit$control$index$Fold01.Rep1

[1] 1 2 3 4 6 7 8 9 10 11 12 14 15 16 17 18 19[18] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36[35] 37 38 42 43 44 45 46 47 48 49 50 51 52 53 55 56 57[52] 58 59 62 63 64 65 67 68 69 70 72 73 74 75 76 77 78[69] 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95[86] 96 97 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113

. . . > svm.fit$control$indexOut$Fold01.Rep1

[1] 5 13 39 40 41 54 60 61 66 71 98 116 141 147 156 158 179 188[19] 190 198 222 225 227 234 261 266

Ejemplo: Control del Remuestreo

49

• El objeto $control tiene información del proceso de remuestreo

• Permite conocer qué observaciones fueron elegidas en cada partición del proceso de validación cruzada para construir el modelo ( $index ) y las que quedaron fuera para evaluar el modelo ( $indexOut )

Modelos Predictivos con caret

Page 50: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Remuestreo del Modelo Final> dim(svm.fit$resample)[1] 50 6> head(svm.fit$resample)

ROC Sens Spec Accuracy Kappa Resample1 0.8223684 1.0 0.7500000 0.9259259 0.8085106 Fold03.Rep42 0.8928571 1.0 0.7142857 0.9259259 0.7874016 Fold09.Rep43 0.9868421 1.0 0.8750000 0.9629630 0.9078498 Fold01.Rep54 0.9013158 1.0 0.5000000 0.8518519 0.5846154 Fold07.Rep35 0.8881579 1.0 0.6250000 0.8888889 0.7011070 Fold01.Rep36 0.8285714 0.9 0.5714286 0.8148148 0.4943820 Fold04.Rep4> mean(svm.fit$resample$ROC)[1] 0.8868346> sd(svm.fit$resample$ROC)[1] 0.08931012

Ejemplo: Control del Remuestreo

50

• El objeto $resample tiene información del proceso de remuestreo en el modelo final, construido con los parámetros óptimos

• Tiene información sobre las medidas de capacidad predictiva de los 5x10 modelos construidos en el proceso de validación cruzada con los parámetros óptimos

Modelos Predictivos con caret

Page 51: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Plots de densidad del remuestreo del Modelo Final> dev.new()> resampleHist( svm.fit )

Ejemplo: Control del Remuestreo

51

Den

sity

01

23

4

0.6 0.8 1.0

ROC

01

23

45

0.7 0.8 0.9 1.0 1.1

Sens

0.0

0.5

1.0

1.5

2.0

0.0 0.5 1.0

Spec

01

23

4

0.6 0.7 0.8 0.9 1.0 1.1

Accuracy

0.0

0.5

1.0

1.5

0.0 0.5 1.0

Kappa

Modelos Predictivos con caret

Page 52: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Métodos de regresión penalizados. LASSO

• Los métodos de regresión penalizados introducen una penalización en la función de pérdida a ser optimizada (loss function)

– Los estimadores “cásicos” en regresión lineal y regresión logística producen estimadores muy inestables (valores muy altos y con mucha varianza) en problemas de alta dimensionalidad ( p>>n ) y con variables correlacionadas

• LASSO usa la restricción L1-penalty : la suma de los valores absolutos de los coeficientes de regresión debe ser menor que una constante C

• En un problema de regresión logística, LASSO maximiza la función

52

β⋅λ=β ∑

p

1jj - logL(mod)maxˆ L(mod) es la función de

verosimilitud

– Muchos de los coeficientes estimados por LASSO son 0

– Lambda es un parámetro del modelo que se debe optimizar

Modelos Predictivos con caret

Page 53: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Control de la Técnica de Remuestreo: 100 muestras bootstrap> boot.ctrl = trainControl ( method = "boot" , number = 100, classProbs = T ) > ## Parámetros a explorar. Con el paquete glmnet alpha = 1 para LASSO > glmnetGrid = expand.grid ( .alpha = 1 , + .lambda = seq ( .001 , .1 , length=20 ) ) > ## Construcción del Modelo Predictivo> lasso.fit = train ( xx.train [ , -indY ] , xx.train$Class , + method = "glmnet", + tuneGrid = glmnetGrid,+ trControl = boot.ctrl )Loading required package: glmnet> lasso.fitglmnet

267 samples118 predictors

2 classes: 'Control', 'Impaired'

No pre-processingResampling: Bootstrapped (100 reps)

. . .

Ejemplo: LASSO

53

• Para construir un modelo penalizado con LASSO usamos method=“glmnet” que usa el paquete glmnet y es necesario usar el parámetro .alpha=1

• Se usa boostrapping como técnica de remuestreo

Modelos Predictivos con caret

Page 54: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Resampling results across tuning parameters:

lambda Accuracy Kappa Accuracy SD Kappa SD0.001 0.828 0.57 0.0295 0.0753 0.00621 0.848 0.613 0.0295 0.0798 0.0114 0.86 0.638 0.0269 0.0749 0.0166 0.865 0.649 0.0269 0.0732 0.0218 0.867 0.651 0.027 0.0696 0.0271 0.868 0.651 0.0276 0.0695 0.0323 0.867 0.644 0.0278 0.0707 0.0375 0.864 0.633 0.0297 0.0757 0.0427 0.859 0.616 0.0339 0.0851 0.0479 0.855 0.602 0.0356 0.0891 0.0531 0.847 0.578 0.0402 0.101 0.0583 0.84 0.555 0.0449 0.113 0.0635 0.829 0.513 0.0465 0.12 0.0687 0.816 0.469 0.0505 0.133 0.0739 0.806 0.432 0.0542 0.148 0.0792 0.796 0.391 0.0526 0.149 0.0844 0.785 0.344 0.0523 0.151 0.0896 0.775 0.302 0.0524 0.153 0.0948 0.767 0.266 0.0512 0.148 0.1 0.76 0.232 0.0504 0.145

Tuning parameter 'alpha' was held constant at a value of 1Accuracy was used to select the optimal model using the largest value.The final values used for the model were alpha = 1 and lambda = 0.0271.

Ejemplo: LASSO

54Modelos Predictivos con caret

Page 55: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Gráfico del Accuaracy y Kappa frente al Parámetro lambda> dev.new()> plot( lasso.fit )> dev.new()> plot( lasso.fit, metric= "Kappa" )

Ejemplo: LASSO

55Modelos Predictivos con caret

Regularization Parameter

Kap

pa (B

oots

trap)

0.2

0.3

0.4

0.5

0.6

0.00 0.02 0.04 0.06 0.08 0.10

Regularization Parameter

Acc

urac

y (B

oots

trap)

0.76

0.78

0.80

0.82

0.84

0.86

0.00 0.02 0.04 0.06 0.08 0.10

Accuracy Kappa

Page 56: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Coeficientes de los Predictores de los modelos para todos los lambdas> dim( coef(lasso.fit$finalModel) ) [1] 119 99> ## Coeficientes de los Predictores del mejor modelo> tail ( coef(lasso.fit$finalModel, lasso.fit$bestTune$lambda) )1tau 1.3283331Ab_42 -0.2613127male 0.1852370E4 . E3 . > lass.coef = as.matrix ( coef(lasso.fit$finalModel, lasso.fit$bestTune$lambda) ) > row.names( lass.coef )[ lass.coef != 0 ] ## Se convierte a matriz

[1] "(Intercept)" "Cortisol" "Cystatin_C" [4] "ENA_78" "Eotaxin_3" "FAS" [7] "FSH_Follicle_Stimulation_Hormon" "Fibrinogen" "GRO_alpha"

[10] "IL_7" "MCP_2" "MMP10" [13] "MMP7" "NT_proBNP" "PAI_1" [16] "PAPP_A" "Pancreatic_polypeptide" "SGOT" [19] "TRAIL_R3" "Thymus_Expressed_Chemokine_TECK" "VEGF" [22] "tau" "Ab_42" "male" > round ( lass.coef [ lass.coef != 0 ] , 3 )

[1] -1.412 0.038 -0.673 -0.123 0.039 0.234 -0.025 0.006 0.085 -0.090 0.009 0.050 0.003 0.238[15] 0.116 0.080 0.094 0.043 0.033 0.062 -0.694 1.328 -0.261 0.185

Ejemplo: LASSO

56Modelos Predictivos con caret

• Se usa la función coef() del paquete glmnet para extraer los coeficientes de regresión del modelo

Page 57: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Random Forest

• Random Forest es una técnica de machine learning que consiste en la construcción de una gran número de árboles con las siguientes características:

– Está basado en muestras bootstrap . Cada árbol está basado en una muestra aleatoria con reemplazamiento de las observaciones

– Cada división del árbol está basada en una muestra aleatoria de los predictores

– Los árboles no se cortan , son tan largos como sea posible. No hay prunning

• Random Forest se puede usar en problemas de clasificación y regresión

• Random Forest analiza eficientemente un gran número de variables , sin tener que hacer selección previa

• Random Forest tiene dos parámetros de tuning : el número de árboles y el número de predictores que son evaluados en cada división

57Modelos Predictivos con caret

Page 58: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> ## Control de la Técnica de Remuestreo: 10-fold CV> boot.ctrl = trainControl ( method = "cv" , number = 10, classProbs = T ) > > ## Parámetros a explorar> rfGrid = expand.grid ( .mtry = c ( 5, 10, 25, 50, 75, 100 ) )> > ## Construcción del Modelo Predictivo> rf.fit = train ( xx.train [ , -indY ] , xx.train$Class , + method = "rf", + tuneGrid = rfGrid ,+ ntree = 1000 ,+ trControl = boot.ctrl )

Loading required package: randomForest

Ejemplo: Random Forest

58Modelos Predictivos con caret

• Para construir un modelo con Random Forest usamos method=“rf” que usa el paquete randomForest

• El parámetro ntree=1000 nos indica que se va a construir RF con 1000 árboles. No es un parámetro de la función train(), es un parámetro de la función randomForest()

• El único parámetro a optimizar en RF en la función train() es el número de variables predictoras que son evaluados de forma aleatoria en cada división del árbol ( .mtry )

• Se usa 10-fold CV, validación cruzada con 10 particiones, como técnica de remuestreo

Page 59: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

> rf.fitRandom Forest

267 samples118 predictors

2 classes: 'Control', 'Impaired'

No pre-processingResampling: Cross-Validated (10 fold)

Resampling results across tuning parameters:

mtry Accuracy Kappa Accuracy SD Kappa SD5 0.798 0.355 0.0298 0.112 10 0.828 0.477 0.0357 0.103 25 0.854 0.584 0.0574 0.158 50 0.865 0.631 0.0429 0.114 75 0.866 0.638 0.0504 0.136 100 0.847 0.597 0.0478 0.127

Accuracy was used to select the optimal model using the largest value.The final value used for the model was mtry = 75 .

Ejemplo: Random Forest

59Modelos Predictivos con caret

Page 60: Taller Caret VI Jornadas Usuarios R Santiago 2014_10 JESUS HERRANZ

Otras funciones del paquete caret

• createDataPartition() : crea particiones en una muestra (CV)

• dummyVars() : crea un set completo de variables dummy en las variables categóricas definidas como factores

• calibration() : crea un gráfico de calibración para comparar probabilidades observadas y predichas

• sensitibity() : calcula la sensibilidad, especificidad, …

• rfe() : Recursive Feature Elimination . Es un algoritmo de selección de variables, basado en la eliminación de las variables menos importantes

– Es una función con parámetros muy parecidos a train()

• caret también incorpora funciones para construir modelos predictivos con técnicas que no tienen paquetes específicos en R (modalidades de bagging)

60Modelos Predictivos con caret