Upload
jfeudeline
View
1.571
Download
1
Tags:
Embed Size (px)
Citation preview
Conseil en Management de
l’Information
www.bluestone.fr 55 rue du Faubourg Montmartre – 75009 Paris
+33 (0)1 53 25 02 10 [email protected]
Construction de modèles de prévision sous R avec le package caret
Groupe FL\tauR - Vendredi 7 Mars 2014
Goulven Salic
Sommaire
Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit ) Traitements préliminaires
Modèle 1: k-plus proches voisins
Modèle 2: régression pls
Modèle 3: forêt aléatoire
3. Fonctionnalités supplémentaires de caret
Conclusion
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 2
07/03/2014
Introduction
3
Comment créer un modèle de prévision performant ?
La création d’un modèle de prévision performant est
un processus complexe De très nombreux de modèles de prévision sont disponibles dans R,
avec chacun leurs spécificités d’utilisation
Beaucoup de modèles de prévision présentent un risque de sur-
apprentissage
Complexité du modèle (exemple: nombre de variables)
Erreur de prévision
Echantillon à scorer
Echantillon d’apprentissage
Complexité « optimale » au
sens de la prévision
Fort biais,Faible variance
Faible biais,Forte variance
Avertissement: ce package n’a d’intérêt que pour des modèles avancés
caret propose un cadre commun pour évaluer et
comparer une centaine de modèles Séparation apprentissage/test équilibrée
Choix du modèle optimal par ré-échantillonnage
Sélection de variables, pré-traitement, mesure de l’importance des
variables a posteriori…
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Test
Introduction
Variable à prédire Y (ou à « scorer »):
numérique (régression) : ex. consommation, revenu…
Catégorielle (classification): ex. solvabilité, survie à un naufrage…
Variables explicatives X Potentiellement nombreuses De qualité variable (valeurs manquantes)
4
Dans quel contexte utiliser caret ?
En entrée
Le package R caret (classification and regression training) est une boîte à outil qui uniformise et rationalise les différentes étapes du processus de création de modèle
Apprentissage Validation
Base à scorer
En termes de données:
Base d’estimation: connaissance de X et Y
Base à « scorer »: connaissance de X uniquement
Choix du modèle (arbres, régression pls, SVM, LASSO, réseau de neurones,…)
Choix des paramètres de ce modèle
Base enrichie
Prévision de Y
Mesure de la performance du modèle retenu
Bonus: Importance des différentes variables
…
En sortie
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Introduction
Exemple de modèle: k-plus proches voisins Principe: Prévision de Y = Moyenne des k plus proches voisins dans
l’espace des X
Paramètre de complexité: k
Impact de l’évolution de ce paramètre:
Si k est petit (exemple k=1): le modèle est spécifique aux données d’apprentissage, il y’a un risque que le modèle soit mauvais sur un nouvel échantillon
Si k est grand (exemple k=10): le modèle renverra souvent la même valeur (faible variance) mais présentera un fort biais
Tout l’art est de trouver le bon compromis
Autre exemple (par analogie) : régression linéaire k = nombre de variables de la régression
5
| Le choix d’un paramètre de complexité est une étape clé de la création d’un modèle
?
3 plus proches voisins
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Sommaire
Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit ) Traitements préliminaires
Modèle 1: k-plus proches voisins
Modèle 2: régression pls
Modèle 3: forêt aléatoire
3. Fonctionnalités supplémentaires de caret
Conclusion
6
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Que fait caret?
L’intérêt principal de caret est d’automatiser le choix de modèle par validation croisée Plusieurs variantes de validation croisée existent (bootstrap,
validation croisée simple…)
Ici: présentation de la validation croisée (dite k-fold) répétée
Dans la pratique, il s’agit aussi de choisir parmi plusieurs types de modèles Une approche consiste à appliquer cette procédure sur
plusieurs modèles candidats puis à retenir le meilleur
7
| Fonctionnalité principale (fonction train) : estimation par ré-échantillonnage et validation croisée
Définition par l’utilisateurs d’un ensemble de versions du modèle à tester Pour chacune de ces versions:
Pour chaque répétition de l’échantillonnage Découpage de l’apprentissage en k morceaux de taille
égale k fois: sélection d’un des k morceaux, estimation du
modèle sur les k-1 morceaux restants et prévision sur le morceau sélectionné
Fin des itérations Calcul d’une erreur moyenne sur les k prévisions
Fin du test de chaque version Choix de la version optimale en termes de prévision Estimation du modèle final sur l’ensemble des données pour application
Algorithme de sélection de la version optimale d’un modèle
Définir une liste de modèles (pls, réseaux de neurones, knn…)
Pour chaque modèle:
Découpage apprentissage/test (70%/30%)
Choix de la meilleure version sur l’échantillon d’apprentissage
Mesure de l’erreur sur l’échantillon de test
Sélection du meilleur modèle
Algorithme de choix parmi plusieurs modèles
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Que fait caret?
Lors du découpage apprentissage/test, il est préférable d’avoir un échantillon d’apprentissage représentatif: caret reproduit dans l’échantillon d’apprentissage la
même répartition des Y que dans l’ensemble de la population
caret permet également de reproduire une structure proche sur les variables explicatives X (différent d’un tirage stratifié, approche dite de dissimilarité maximale)
Autres fonctionnalités intéressantes: Pré-traitement: centrage et réduction, complétion de
valeurs manquantes, transformation de Box-Cox
Sélection de variables a priori
Mesure de l’importance des variables d’un modèle a
posteriori
Calcul parallèle
Découpage apprentissage/test pour des séries temporelles
Ajout de modèles et méthodes d’apprentissages personnalisés
Mesure de performance a posteriori sur l’échantillon de test
En résumé: caret est une boîte à outil qui centralise les méthodes utiles du machine learning et donne un cadre commun pour le test de beaucoup de modèles
8
| Autre fonctionnalité importante: découpage apprentissage/test équilibré
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Sommaire
Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit ) Traitements préliminaires
Modèle 1: k-plus proches voisins
Modèle 2: régression PLS
Modèle 3: forêts aléatoires
3. Fonctionnalités supplémentaires de caret
Conclusion
9
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Exemple « pratique »:
Description du jeu de données: Jeu de donnée GermanCredit présent dans le
package:
1 000 observations
61 variables explicatives (variables catégorielles recodées en plusieurs variables binaires)
Variable cible: « Bon » ou « Mauvais » payeur
Découpage et choix de l’approche de validation croisée: Découpage: 70% d’apprentissage équilibré sur le
classe de payeur
Méthode d’apprentissage: 10 répétitions de validation croisée sur 1/10 des données
10
library( caret)
# Donnees
data( GermanCredit)
# Découpage apprentissage test
inTrain <- createDataPartition( y = GermanCredit$Class,
p = 0.70,
list = F)
# Echantillons d'apprentissage et de test
training <- GermanCredit[ inTrain, ]
test <- GermanCredit[ -inTrain, ]
# Creation de l’objet de controle de la method de validation
# croisée
cvCtrl <- trainControl( method = "repeatedcv",
number = 10,
repeats = 10)
Code
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Exemples
Description brève du modèle: Prévision de Y = moyenne des k voisins dans
l’espace des X
Paramètre de complexité: nombre de voisins k
11
| 1- k plus proches voisins
Console
library(caret)
knnGrid <- data.frame( .k = 1:150)
knnFit <- train( Class ~ .,
data = training,
method = "knn",
tuneGrid = knnGrid,
trControl = cvCtrl)
plot( knnFit)
# Mesure finale du taux de bien classés sur l'échantillon de test
prevKnn <- predict( knnFit, newdata = test)
tauxBienClasses <- sum( prevKnn == test$Class)/length( prevKnn )
# tauxBienClasses = 0.71
Code
Paramètres de complexité (ou versions du modèle) testés
?
3 plus proches voisins
#Neighbors
Accu
racy (
Re
pe
ate
d C
ross-V
alid
atio
n)
0.60
0.62
0.64
0.66
0.68
0.70
0 50 100 150
700 samples 61 predictors 2 classes: 'Bad', 'Good‘ No pre-processing Resampling: Cross-Validation (10 fold, repeated 10 times) Summary of sample sizes: 630, 630, 630, 630, 630, 630, ... Resampling results across tuning parameters:
k Accuracy Kappa Accuracy SD Kappa SD 1 0.618 0.0866 0.0502 0.107 2 0.603 0.0599 0.0587 0.126 3 0.633 0.0792 0.051 0.109 4 0.637 0.0936 0.0506 0.108 5 0.658 0.102 0.0458 0.0987 6 0.652 0.083 0.0433 0.105 ... Accuracy was used to select the optimal model using the largest value. The final value used for the model was k = 70.
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Exemples
Description brève du modèle: Régression sur les composante principales de X
avec prise en compte de la corrélation avec Y Paramètre de complexité: nombre de
composantes pls (au maximum égal nombre de variables)
12
| 2- Régression pls
Console
#Components
Accu
racy (
Re
pe
ate
d C
ross-V
alid
atio
n)
0.70
0.72
0.74
0.76
0 5 10 15 20 25 30
library(caret)
plsGrid = data.frame( .ncomp = 1:30)
plsFit <- train( Class ~ .,
data = training,
method = "pls",
tuneGrid = plsGrid,
trControl = cvCtrl)
plot( plsFit)
plsFit
# Mesure finale du taux de bien classés sur l'échantillon de test
prevPls <- predict( plsFit, newdata = test)
tauxBienClasses <- sum( prevPls == test$Class)/length( prevPls)
# tauxBienClasses = 0.7366667
Code
Paramètres de complexité (ou versions du modèle) testés
700 samples 61 predictors 2 classes: 'Bad', 'Good' No pre-processing Resampling: Cross-Validation (10 fold, repeated 10 times) Summary of sample sizes: 630, 630, 630, 630, 630, 630, ... ncomp Accuracy Kappa Accuracy SD Kappa SD 1 0.707 0.0693 0.0202 0.0672
2 0.701 0.0748 0.0245 0.0783 3 0.707 0.105 0.0305 0.0968 4 0.77 0.402 0.0461 0.127 5 0.761 0.391 0.0423 0.114 6 0.756 0.381 0.0425 0.115 7 0.76 0.396 0.0446 0.116 8 0.763 0.401 0.0422 0.112 9 0.761 0.395 0.0401 0.104 10 0.762 0.397 0.0394 0.102 … Accuracy was used to select the optimal model using the largest value. The final value used for the model was ncomp = 4.
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Exemples
Description brève du modèle: Construction de plusieurs arbres de décision qui
à chaque nœuds utilisent un nombre aléatoire de variables explicatives puis moyenne des arbres obtenus pour la prévision
Paramètre de complexité: nombre de variables explicatives tirées aléatoirement à chaque étape
13
| 3- Forêt aléatoire
rfFit <- train( Class ~ .,
data = training,
method = "rf",
tuneLength = 20,
trControl=trainControl( method = "repeatedcv",
number = 5,
repeats = 5))
rfFit
plot( rfFit)
# Mesure finale du taux de bien classés sur l'échantillon de test
prevRf = predict( rfFit, newdata = test)
tauxBienClasses = sum( prevRf == test$Class)/length( prevRf)
tauxBienClasses
# tauxBienClasses = 0.77
Code
Paramètres de complexité (ou versions du modèle) testés Console
61 predictors 2 classes: 'Bad', 'Good' No pre-processing Resampling: Cross-Validation (5 fold, repeated 5 times) Summary of sample sizes: 560, 560, 560, 560, 560, 560, ... Resampling results across tuning parameters: mtry Accuracy Kappa Accuracy SD Kappa SD 2 0.717 0.0782 0.0122 0.0539
5 0.746 0.284 0.0267 0.0833 8 0.745 0.302 0.0262 0.0758 11 0.746 0.315 0.0317 0.0924 14 0.743 0.316 0.0311 0.0899 17 0.75 0.337 0.0311 0.0888 20 0.747 0.329 0.031 0.092 … Accuracy was used to select the optimal model using the largest value. The final value used for the model was mtry = 17.
#Randomly Selected Predictors
Accu
racy (
Re
pe
ate
d C
ross-V
alid
atio
n)
0.72
0.73
0.74
0.75
0 10 20 30 40 50 60
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Sommaire
Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit ) Traitements préliminaires
Modèle 1: k-plus proches voisins
Modèle 2: régression pls
Modèle 3: forêt aléatoire
3. Fonctionnalités supplémentaires de caret
Conclusion
14
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Fonctionnalités supplémentaires
Un pré-traitement est parfois nécessaire pour: Enrichir les données (présence de valeurs
manquantes)
Transformer les données pour les besoins d’un type particulier de modèles (données centrées-réduites pour les réseaux de neurones, transformation de Box-Cox pour « normaliser » les variables explicatives
caret permet ce genre de traitements selon deux modes: En amont du modèle (modification des données
d’apprentissage)
Au moment de l’estimation du modèle
15
| Pré-traitement library(caret)
# 1- Pré-traitement en amont
preProcValues <- preProcess( training[,!( colnames( training) == "Class")],
method = c( "center", "scale"))
# Autres méthodes: "knnImpute", "bagImpute",
# "BoxCox", "YeoJohnson" ...
trainTransformedDesc <- predict(preProcValues,training)
# 2- Pré-traitement pendant l'estimation du modèle
plsFit2 <- train( Class ~ .,
data = training,
preProcess = c("center", "scale"),
method = "pls",
tuneLength = 10,
trControl = cvCtrl)
# Autres pré-traitements possibles en amont: recodage # des
variables catégorilles en variables binaires #(recodage de plein
rang)
Code
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Fonctionnalités supplémentaires
caret permet également de mesurer après estimation du modèle les variables les plus influentes: Les métriques spécifiques à chaque modèles sont mises
en œuvre
Le résultat est normalisé sur une échelle de 1 à 100 comparable d’un modèle à l ’autre.
Le package permet également d’effectuer une sélection de variable a priori Basé sur des tirages aléatoires de groupes de variables
N’est applicable qu’à certains modèles (par exemple, le modèle LASSO consiste en tant que tel en une sélection de variables)
16
| Importance des variables
Console
# Importance des variables du modèle pls
varImp(plsFit)
# Importance des variables du modèle knn
varImp(knnFit)
Code
Console
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Fonctionnalités supplémentaires
caret permet d’accélérer les procédures de ré-échantillonnage en parallélisant les tâches Les différents échantillons tirés étant indépendants,
la parallélisation ne pose pas de problème théorique
Utilisation du package doParallel (marche également avec doMC ou doMPI selon la plateforme)
Possibilité de faire du ré-échantilonnage sur des données temporelles Un re-échantillonnage classique n’est pas adapté à
des données temporelles
Possibilité d’effectuer différents découpages où l’échantillon d’apprentissage est situé chronologiquement avant l’échantillon de test
Remarque : pour l’instant, pas de prise en charge des modèles de séries temporelles univariés classiques (ARIMA, ARCH, …)
17
| Calcul parallèle, séries temporelles
library(doParallel)
nbCores <- 2
cl <- makeCluster( nbCores)
registerDoParallel(cl)
plsFit <- train( Class ~ .,
data = training,
allowParallel = T,
method = "pls",
tuneLength = 25)
stopCluster(cl)
Code
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
data(economics)
myTimeControl <- trainControl(method="timeslice",
initialWindow=36,
horizon=12,
fixedWindow=TRUE
)
plsFitTime <- train( unemploy~pce+pop+psavert ,
data=economics,
method="pls",
preProc= c("center", "scale"),
trControl=myTimeControl
)
Code
Sommaire
Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit ) Traitements préliminaires
Modèle 1: k-plus proches voisins
Modèle 2: régression pls
Modèle 3: forêt aléatoire
3. Fonctionnalités supplémentaires de caret
Conclusion
18
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014
Conclusion
Avantages: Applicable à presque toutes les méthodes existant en
machine learning Ecriture simple des différents processus de sélection de
modèles Package régulièrement maintenu et faisant l’objet d’une
attention croissante dans la communauté R (useR! 2013)
19
| Avantages et inconvénients du package caret
Inconvénients: Débuggage : dépend du package du modèle que l’on
cherche à estimer (qualité variable selon les modèles, les méthodes principales sont néanmoins fiables)
Temps de calcul (cela est propre à toute approche de ré-échantillonnage)
Pour aller plus loin: http://caret.r-forge.r-project.org/
http://cran.r-project.org/web/packages/caret/vignettes/caret.pdf
www.jstatsoft.org/v28/i05/paper
http://appliedpredictivemodeling.com/
http://www.stanford.edu/~hastie/local.ftp/Springer/OLD//ESLII_print4.pdf
FL\TAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014