Modelos Predictivos - La asociación de usuarios de R de España

Anuncio
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
Índice
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. Bootstrapping
Funciones preProcess(), nearZeroVar(), findCorrelation()
Función train()
Funciones predict(), varImp()
Otras funciones
Modelos Predictivos con caret
2
Bibliografía
•
Max Kuhn & Kjell Johnson. Applied Predictive Modeling. Springer, 2013
•
Max Kuhn. Building Predictive Models in R using the caret Package. Journal
of 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/
Modelos Predictivos con caret
3
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
Modelos Predictivos con caret
4
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
Modelos Predictivos con caret
5
Métodos implementados en caret
Model
method
Type
Argum. Value
Packages
Tuning
Parameteres
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
superpc
threshold,
n.components
k-Nearest Neighbors
kknn
Dual
kknn
kmax, distance,
kernel
Naive Bayes
nb
Class klaR
Modelos Predictivos con caret
fL, usekernel
6
Métodos implementados en caret
Model
method
Type
Argum. Value
Tuning
Parameteres
Packages
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
gbm, plyr
n.trees,
interaction.depth,
shrinkage
Stochastic Gradient Boosting
Modelos Predictivos con caret
gbm
Dual
7
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
 xλ −1

λ≠0
x* =  λ
log(x ) λ = 0
Modelos Predictivos con caret
8
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
Modelos Predictivos con caret
9
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
Modelos Predictivos con caret
10
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órica
– 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
Modelos Predictivos con caret
11
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”
Modelos Predictivos con caret
12
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
Predicho
Observ
Y=1
Y=2
…
Y=k
Y=1
F11
F12
…
F1k
Y=2
F21
F22
…
F2k
...
…
…
…
…
Y=k
Fk1
Fk2
…
Fkk
•
Las clasificaciones correctas son
las que están en la diagonal
•
Las clasificaciones incorrectas son
las que están fuera de la diagonal
•
Exactitud (Accuracy): proporción de clasificaciones correctas
•
Error de clasificación o tasa de error (Error rate): proporción de
clasificaciones incorrectas
k
k
Accuracy =
Modelos Predictivos con caret
∑F
i =1
N
ii
∑F
Error Rate =
ij
i =1, j=1,i ≠ j
N
13
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:
Predicho
Observado
Y=1
Y=0
Total
Y=1
VP
FN
VP + FN
Y=0
FP
VN
FP + VN
Total
VP + FP
FN + VN
N
VP = Verdaderos Positivos
VN = Verdaderos Negativos
FP = Falsos Positivos
FN = Falsos Negativos
•
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)
VP
Sensibilid ad =
VP + FN
Modelos Predictivos con caret
VN
Especificidad =
VN + FP
14
Medidas de la Capacidad Predictiva. Curvas ROC
•
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
•
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
Modelos Predictivos con caret
15
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
1 N
MSE = ∑ ( y i − ŷ i ) 2
N i =1
•
RMSE = MSE
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
R2 =
SSR
SST
2
(
)
ŷ
−
y
∑ i
=
2
∑ (y i − y )
= 1−
∑ ei
∑ (y
2
− y)
2
i
– 0 < R2 < 1. R2 = 1 significa un ajuste perfecto y R2 = 0 un ajuste nulo
Modelos Predictivos con caret
16
Métodos de Estimación. Training y Testing
•
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
Modelos Predictivos con caret
17
Técnicas de remuestreo. Validación Cruzada
•
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ón
como muestra de testing. Se suele usar en muestras pequeñas
Modelos Predictivos con caret
18
Técnicas de remuestreo. Validación Cruzada
Training
Modelo 1
5-fold CV
Testing
Evaluación
Muestra
…..
(K=5 particiones)
Partición
aleatoria
Training
Modelo 5
Testing
Modelos Predictivos con caret
Evaluación
19
Técnicas de remuestreo. LOOCV
Muestra
de Training
Construcción
Muestra
de testing
Muestra 1
N-1
Modelo 1
obs. 1
Ŷ1
Y1
Muestra 2
N-1
Modelo 2
obs. 2
Ŷ2
Y2
…..
Muestra N
Modelos Predictivos con caret
N-1
…
(N particiones)
Modelo N
Evaluación
obs. N
ŶN
YN
20
Técnicas de remuestreo. Bootstrapping
•
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
Modelos Predictivos con caret
21
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
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 etapas), 0 = Control
training
Muestra de training o testing
1 = training, 0 = testing
0 = mujer, 1 = hombre
•
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
22
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
Modelos Predictivos con caret
23
Ejemplo: Pre-procesamiento
> ## 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
•
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
Modelos Predictivos con caret
24
Ejemplo: Predictores con “varianza casi cero”
> ## 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
•
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
Modelos Predictivos con caret
25
Ejemplo: Predictores con alta correlación
> ## 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")
Modelos Predictivos con caret
26
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
Ejemplo: Predictores con alta correlación
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
Modelos Predictivos con caret
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
27
Ejemplo: Predictores con alta correlación
> ## 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) )
•
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
Modelos Predictivos con caret
28
Ejemplo: Estandarización
> ## Estadandarización de las Variables Predictoras
> w.trans = preProcess ( xx.train [ , -indY ] , method = c ("center", "scale") )
> w.trans
Created from 267 samples and 118 variables
Pre-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
•
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
Modelos Predictivos con caret
29
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
15
•
Vectores soporte
0
5
Vectores soporte
10
Margen
0
Modelos Predictivos con caret
5
10
15
20
30
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
– 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)
(
K ( x , z) = exp − γ ⋅ x − z
Modelos Predictivos con caret
2
)
γ>0
Cuánto mayor es gamma, más
flexible es el clasificador, en el
sentido de mayor curvatura
31
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”
15
– Permite obtener clasificadores más robustos al sobreajuste
Se incluye un término de penalización sobre
los errores, y un parámetro C>0 que controla
su importancia relativa
10
εj
Valores pequeños de C permiten mayor
número de errores y definen regiones de
decisión más suaves
0
5
εi
0
Modelos Predictivos con caret
5
10
15
20
32
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”)
Modelos Predictivos con caret
33
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”
Modelos Predictivos con caret
34
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
– ...
Modelos Predictivos con caret
: argumentos adicionales a las funciones del paquete de R
35
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)
Modelos Predictivos con caret
36
Ejemplo: Evaluación de Parámetros
>
>
>
>
>
>
+
+
>
>
>
+
## 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 ) )
•
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
Modelos Predictivos con caret
37
Ejemplo: Evaluación de Parámetros
> ## 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 samples
118 predictors
2 classes: 'Control', 'Impaired'
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 5 times)
. . . . . .
•
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= )
Modelos Predictivos con caret
38
Ejemplo: Evaluación de Parámetros
Resampling results across tuning parameters:
C
sigma ROC
Sens
Spec
Accuracy
1
0.001 0.881 0.886 0.753 0.85
1
0.005 0.877 0.926 0.687 0.861
1
0.01
0.876 0.928 0.657 0.854
1
0.05
0.808 0.961 0.277 0.773
5
0.001 0.887 0.923 0.705 0.864
5
0.005 0.878 0.929 0.663 0.856
5
0.01
0.877 0.926 0.64
0.848
5
0.05
0.807 0.963 0.227 0.761
10
0.001 0.885 0.943 0.687 0.873
10
0.005 0.873 0.92
0.625 0.839
10
0.01
0.877 0.927 0.654 0.853
10
0.05
0.807 0.962 0.242 0.765
50
0.001 0.857 0.922 0.601 0.834
50
0.005 0.873 0.926 0.622 0.843
50
0.01
0.877 0.934 0.638 0.853
50
0.05
0.807 0.964 0.274 0.775
100 0.001 0.851 0.919 0.572 0.824
100 0.005 0.873 0.921 0.616 0.838
100 0.01
0.877 0.925 0.648 0.85
100 0.05
0.807 0.963 0.228 0.761
Kappa
0.629
0.633
0.609
0.275
0.644
0.616
0.592
0.222
0.657
0.57
0.606
0.236
0.552
0.576
0.603
0.279
0.522
0.564
0.596
0.224
ROC SD
0.0942
0.0931
0.0898
0.112
0.0893
0.0908
0.0894
0.112
0.0917
0.0891
0.0894
0.112
0.0899
0.0891
0.0894
0.112
0.0889
0.0891
0.0894
0.112
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. Accuracy SD
. 0.0768
. 0.0717
. 0.0725
. 0.0521
. 0.0753
. 0.0754
. 0.0763
. 0.0505
. 0.0708
. 0.0754
. 0.0704
. 0.055
. 0.078
. 0.076
. 0.0757
. 0.0602
. 0.0745
. 0.0738
. 0.0755
. 0.0525
Kappa SD
0.186
0.194
0.201
0.212
0.199
0.206
0.212
0.208
0.198
0.205
0.192
0.227
0.213
0.208
0.21
0.23
0.202
0.201
0.21
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.
•
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
39
Ejemplo: Evaluación de Parámetros
> names(svm.fit)
[1] "method"
"modelInfo"
"modelType"
"results"
[6] "bestTune"
"call"
"dots"
"metric"
[11] "finalModel"
"preProcess"
"trainingData" "resample"
[16] "perfNames"
"maximize"
"yLimits"
"times"
>
> ## Parámetros óptimos
> svm.fit$bestTune
sigma C
5 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
1
1 0.001 0.8810273 0.8858421 0.7528571 0.8495706 0.6289897
5
5 0.001 0.8868346 0.9232632 0.7053571 0.8639011 0.6439127
9
10 0.001 0.8853139 0.9426842 0.6871429 0.8730138 0.6566747
13 50 0.001 0.8571203 0.9219474 0.6007143 0.8340883 0.5519905
17 100 0.001 0.8506269 0.9188947 0.5721429 0.8243142 0.5220607
SpecSD AccuracySD
KappaSD
1 0.1589578 0.07679743 0.1861817
5 0.1844601 0.07527970 0.1991360
9 0.1982010 0.07078200 0.1980073
13 0.1844781 0.07797558 0.2126890
17 0.1812467 0.07454970 0.2023394
Modelos Predictivos con caret
"pred"
"control"
"resampledCM"
ROCSD
0.09418768
0.08931012
0.09171076
0.08988780
0.08885459
SensSD
0.07947708
0.07031253
0.05647435
0.06792061
0.06761002
40
Ejemplo: Evaluación de Parámetros
>
>
>
>
>
## Gráfico del AUC respecto a los 2 parámetros
dev.new()
plot( svm.fit )
dev.new()
plot( svm.fit, metric= "Kappa" )
ROC
Kappa
Sigma
0.001
0.005
Sigma
0.01
0.05
0.001
0.005
0.01
0.05
Kappa (Repeated Cross-Validation)
ROC (Repeated Cross-Validation)
0.88
0.86
0.84
0.82
0
20
40
60
Cost
Modelos Predictivos con caret
80
100
0.6
0.5
0.4
0.3
0
20
40
60
80
100
Cost
41
Ejemplo: Evaluación de Parámetros
> ## Gráfico del AUC respecto a los 2 parámetros
> dev.new()
> plot( svm.fit, plotType="level" )
0.89
0.88
0.05
0.87
0.86
Sigma
0.01
0.85
0.84
0.005
0.83
0.82
0.001
0.81
1
5
10
50
100
Cost
ROC (Repeated Cross-Validation)
Modelos Predictivos con caret
42
Ejemplo: Modelo Predictivo Final
> ## 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"
•
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
43
Ejemplo: Predicciones del Modelo
> ## 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
•
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
44
Ejemplo: Validación externa
> confusionMatrix ( pred.test.class , xx.test$Class )
Confusion Matrix and Statistics
Reference
Prediction Control Impaired
Control
43
8
Impaired
5
10
Accuracy
95% CI
No Information Rate
Kappa
Sensitivity
Specificity
:
:
:
:
:
:
0.803
(0.6868, 0.8907)
0.7273
0.4762
0.8958
0.5556
. . .
> confusionMatrix ( pred.train.class , xx.train$Class )
Confusion Matrix and Statistics
Reference
Prediction Control Impaired
Control
192
16
Impaired
2
57
Accuracy : 0.9326
•
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
45
Ejemplo: Validación externa
La función roc() del paquete pROC
permite 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
0.6
0.4
0.2
0.0
Sensitivity
0.8
•
1.0
> ## Curva ROC
> dev.new()
> roc ( xx.test$Class, pred.test.prob [ , 2] , plot=T )
Area under the curve: 0.8704
1.0
0.8
0.6
0.4
0.2
0.0
Specificity
Modelos Predictivos con caret
46
Ejemplo: Importancia de las Variables
> ## Importancia de las Variables
> svm.imp = varImp ( svm.fit , scale = F )
> svm.imp
ROC curve variable importance
only 20 most important variables shown (out of 118)
Importance
Ab_42
0.7917
tau
0.7839
MMP10
0.6994
MIF
0.6710
Eotaxin_3
0.6685
GRO_alpha
0.6672
MMP7
0.6657
IGF_BP_2
0.6641
. . .
> head(svm.imp$importance)
Control
ACE_CD143_Angiotensin_Converti 0.5409900
AXL
0.4921268
Adiponectin
0.5396837
Alpha_1_Antichymotrypsin
0.5677870
Alpha_1_Antitrypsin
0.6040813
Alpha_1_Microglobulin
0.5808502
•
Impaired
0.5409900
0.4921268
0.5396837
0.5677870
0.6040813
0.5808500
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
47
Ejemplo: Importancia de las Variables
> ## Gráfico
> dev.new()
> plot(svm.imp, top=20)
Ab_42
tau
MMP10
MIF
Eotaxin_3
GRO_alpha
MMP7
IGF_BP_2
TRAIL_R3
PAI_1
FAS
VEGF
Pancreatic_polypeptide
age
NT_proBNP
Creatine_Kinase_MB
Cortisol
Fibrinogen
Gamma_Interferon_induced_Monokin
Thrombopoietin
0.65
0.70
0.75
Importance
Modelos Predictivos con caret
48
Ejemplo: Control del Remuestreo
> ## Control de la Técnica de Muestreo
> names(svm.fit$control$index)
[1] "Fold01.Rep1" "Fold02.Rep1" "Fold03.Rep1"
[6] "Fold06.Rep1" "Fold07.Rep1" "Fold08.Rep1"
[11] "Fold01.Rep2" "Fold02.Rep2" "Fold03.Rep2"
[16] "Fold06.Rep2" "Fold07.Rep2" "Fold08.Rep2"
[21] "Fold01.Rep3" "Fold02.Rep3" "Fold03.Rep3"
"Fold04.Rep1"
"Fold09.Rep1"
"Fold04.Rep2"
"Fold09.Rep2"
"Fold04.Rep3"
"Fold05.Rep1"
"Fold10.Rep1"
"Fold05.Rep2"
"Fold10.Rep2"
"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
[19] 190 198 222 225 227 234 261 266
71
98 116 141 147 156 158 179 188
•
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
49
Ejemplo: Control del Remuestreo
> ## Remuestreo del Modelo Final
> dim(svm.fit$resample)
[1] 50 6
> head(svm.fit$resample)
ROC Sens
Spec Accuracy
1 0.8223684 1.0 0.7500000 0.9259259
2 0.8928571 1.0 0.7142857 0.9259259
3 0.9868421 1.0 0.8750000 0.9629630
4 0.9013158 1.0 0.5000000 0.8518519
5 0.8881579 1.0 0.6250000 0.8888889
6 0.8285714 0.9 0.5714286 0.8148148
> mean(svm.fit$resample$ROC)
[1] 0.8868346
> sd(svm.fit$resample$ROC)
[1] 0.08931012
Kappa
0.8085106
0.7874016
0.9078498
0.5846154
0.7011070
0.4943820
Resample
Fold03.Rep4
Fold09.Rep4
Fold01.Rep5
Fold07.Rep3
Fold01.Rep3
Fold04.Rep4
•
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
50
Ejemplo: Control del Remuestreo
> ## Plots de densidad del remuestreo del Modelo Final
> dev.new()
> resampleHist( svm.fit )
Sens
Spec
2.0
0.5
0.0
0
Density
0
1
1
2
2
1.0
3
3
1.5
4
4
5
ROC
0.6
0.8
1.0
0.7
0.9
1.0
1.1
0.0
0.5
1.0
Kappa
0
0.0
1
0.5
2
1.0
3
1.5
4
Accuracy
0.8
0.6
Modelos Predictivos con caret
0.7
0.8
0.9
1.0
1.1
0.0
0.5
1.0
51
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
p


ˆβ = max logL(mod) - λ ⋅
βj 

∑
β
j=1


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
52
Ejemplo: LASSO
> ## 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.fit
glmnet
267 samples
118 predictors
2 classes: 'Control', 'Impaired'
No pre-processing
Resampling: Bootstrapped (100 reps)
. . .
•
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
53
Ejemplo: LASSO
Resampling results across tuning parameters:
lambda
0.001
0.00621
0.0114
0.0166
0.0218
0.0271
0.0323
0.0375
0.0427
0.0479
0.0531
0.0583
0.0635
0.0687
0.0739
0.0792
0.0844
0.0896
0.0948
0.1
Accuracy
0.828
0.848
0.86
0.865
0.867
0.868
0.867
0.864
0.859
0.855
0.847
0.84
0.829
0.816
0.806
0.796
0.785
0.775
0.767
0.76
Kappa
0.57
0.613
0.638
0.649
0.651
0.651
0.644
0.633
0.616
0.602
0.578
0.555
0.513
0.469
0.432
0.391
0.344
0.302
0.266
0.232
Accuracy SD
0.0295
0.0295
0.0269
0.0269
0.027
0.0276
0.0278
0.0297
0.0339
0.0356
0.0402
0.0449
0.0465
0.0505
0.0542
0.0526
0.0523
0.0524
0.0512
0.0504
Kappa SD
0.0753
0.0798
0.0749
0.0732
0.0696
0.0695
0.0707
0.0757
0.0851
0.0891
0.101
0.113
0.12
0.133
0.148
0.149
0.151
0.153
0.148
0.145
Tuning parameter 'alpha' was held constant at a value of 1
Accuracy 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.
Modelos Predictivos con caret
54
Ejemplo: LASSO
>
>
>
>
>
## Gráfico del Accuaracy y Kappa frente al Parámetro lambda
dev.new()
plot( lasso.fit )
dev.new()
plot( lasso.fit, metric= "Kappa" )
Accuracy
Kappa
0.6
0.84
Kappa (Bootstrap)
Accuracy (Bootstrap)
0.86
0.82
0.80
0.5
0.4
0.3
0.78
0.76
0.2
0.00
0.02
0.04
0.06
Regularization Parameter
Modelos Predictivos con caret
0.08
0.10
0.00
0.02
0.04
0.06
0.08
0.10
Regularization Parameter
55
Ejemplo: LASSO
> ## 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) )
1
tau
1.3283331
Ab_42 -0.2613127
male
0.1852370
E4
.
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
•
Se usa la función coef() del paquete glmnet para extraer los coeficientes de
regresión del modelo
Modelos Predictivos con caret
56
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
Modelos Predictivos con caret
57
Ejemplo: Random Forest
>
>
>
>
>
>
>
>
+
+
+
+
## 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
•
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
Modelos Predictivos con caret
58
Ejemplo: Random Forest
> rf.fit
Random Forest
267 samples
118 predictors
2 classes: 'Control', 'Impaired'
No pre-processing
Resampling: Cross-Validated (10 fold)
Resampling results across tuning parameters:
mtry
5
10
25
50
75
100
Accuracy
0.798
0.828
0.854
0.865
0.866
0.847
Kappa
0.355
0.477
0.584
0.631
0.638
0.597
Accuracy SD
0.0298
0.0357
0.0574
0.0429
0.0504
0.0478
Kappa SD
0.112
0.103
0.158
0.114
0.136
0.127
Accuracy was used to select the optimal model using
The final value used for the model was mtry = 75.
Modelos Predictivos con caret
the largest value.
59
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)
Modelos Predictivos con caret
60
Descargar