Construction de modèles de prévision sous R avec le package caret
Groupe FLtauR - Vendredi 7 Mars 2014

Conseil en Managem...
Sommaire

Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit )





Trait...
Introduction
Comment créer un modèle de prévision performant ?
 La création d’un modèle de prévision performant est
un pr...
Introduction
Dans quel contexte utiliser caret ?
 Le package R caret (classification and regression training) est une boî...
Introduction
| Le choix d’un paramètre de complexité est une étape clé de la création d’un modèle

 Exemple de modèle: k-...
Sommaire

Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit )





Trait...
Que fait caret?
| Fonctionnalité principale (fonction train) : estimation par ré-échantillonnage et validation croisée
 L...
Que fait caret?
| Autre fonctionnalité importante: découpage apprentissage/test équilibré
 Lors du découpage apprentissag...
Sommaire

Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit )





Trait...
Exemple « pratique »:

 Description du jeu de données:


Code

Jeu de donnée GermanCredit présent dans le
package:
 1 0...
Exemples
library(caret)

| 1- k plus proches voisins

Code

knnGrid <- data.frame( .k = 1:150)

 Description brève du mod...
Exemples

library(caret)

| 2- Régression pls

plsGrid = data.frame( .ncomp = 1:30)

 Description brève du modèle:



C...
Exemples
Code

| 3- Forêt aléatoire

rfFit <- train( Class ~ .,
data = training,
method = "rf",
tuneLength = 20,
trControl...
Sommaire

Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit )





Trait...
Fonctionnalités supplémentaires
| Pré-traitement

library(caret)

 Un pré-traitement est parfois nécessaire
pour:

# 1- P...
Fonctionnalités supplémentaires
| Importance des variables

Code

 caret permet également de mesurer après
estimation du ...
Fonctionnalités supplémentaires
| Calcul parallèle, séries temporelles
 caret permet d’accélérer les procédures
de ré-éch...
Sommaire

Introduction
1. Que fait caret?
2. Exemple « pratique »: scoring bancaire (données GermanCredit )





Trait...
Conclusion
| Avantages et inconvénients du package caret

 Inconvénients:

 Avantages:





Applicable à presque tout...
Prochain SlideShare
Chargement dans…5
×

FLTauR - Construction de modèles de prévision sous r avec le package caret

3 992 vues

Publié le

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
3 992
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 097
Actions
Partages
0
Téléchargements
49
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

FLTauR - Construction de modèles de prévision sous r avec le package caret

  1. 1. Construction de modèles de prévision sous R avec le package caret Groupe FLtauR - Vendredi 7 Mars 2014 Conseil en Management de l’Information Goulven Salic www.bluestone.fr 55 rue du Faubourg Montmartre – 75009 Paris +33 (0)1 53 25 02 10 contact@bluestone.fr
  2. 2. 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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 2
  3. 3. Introduction 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   Erreur de prévision Fort biais, Faible variance Faible biais, Forte variance Echantillon à scorer 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 surapprentissage Echantillon d’apprentissage Complexité « optimale » au sens de la prévision Complexité du modèle (exemple: nombre de variables)  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…  Avertissement: ce package n’a d’intérêt que pour des modèles avancés FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 3
  4. 4. Introduction Dans quel contexte utiliser caret ?  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 En entrée  Variable à prédire Y (ou à « scorer »): numérique (régression) : ex. consommation, revenu…  Catégorielle (classification): ex. solvabilité, survie à un naufrage…   Variables explicatives X   En sortie    Prévision de Y  Mesure de la performance du modèle retenu  Bonus: Choix du modèle (arbres, régression pls, SVM, LASSO, réseau de neurones,…) Choix des paramètres de ce modèle Potentiellement nombreuses De qualité variable (valeurs manquantes)   Importance des différentes variables …  En termes de données:  Base d’estimation: connaissance de X et Y  Base à « scorer »: connaissance de X uniquement Apprentissage Validation Test Base à scorer FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET Base enrichie 07/03/2014 4
  5. 5. Introduction | Le choix d’un paramètre de complexité est une étape clé de la création d’un modèle  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 ? 3 plus proches voisins  Autre exemple (par analogie) : régression linéaire  k = nombre de variables de la régression FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 5
  6. 6. 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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 6
  7. 7. Que fait caret? | Fonctionnalité principale (fonction train) : estimation par ré-échantillonnage et validation croisée  L’intérêt principal de caret est d’automatiser le choix de modèle par validation croisée Algorithme de sélection de la version optimale d’un modèle   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    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 choix parmi plusieurs modèles    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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 7
  8. 8. Que fait caret? | Autre fonctionnalité importante: découpage apprentissage/test équilibré  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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 8
  9. 9. 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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 9
  10. 10. Exemple « pratique »:  Description du jeu de données:  Code 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  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) FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 10
  11. 11. Exemples library(caret) | 1- k plus proches voisins Code knnGrid <- data.frame( .k = 1:150)  Description brève du modèle: knnFit <- train( Class ~ ., data = training, method = "knn", tuneGrid = knnGrid, trControl = cvCtrl) plot( knnFit) Prévision de Y = moyenne des k voisins dans l’espace des X  Paramètre de complexité: nombre de voisins k  # 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 ) 3 plus proches voisins # tauxBienClasses = 0.71 ? Paramètres de complexité (ou versions du modèle) testés Console Accuracy (Repeated Cross-Validation) 0.70 700 samples 61 predictors 2 classes: 'Bad', 'Good‘ k 1 2 3 No pre-processing 4 Resampling: Cross-Validation (10 fold, repeated 5 10 times) 6 0.68 0.66 0.64 0.62 Summary of sample sizes: 630, 630, 630, 630, 630, 630, ... 0.60 Resampling results across tuning parameters: 0 50 100 150 Accuracy Kappa 0.618 0.0866 0.603 0.0599 0.633 0.0792 0.637 0.0936 0.658 0.102 0.652 0.083 Accuracy SD Kappa SD 0.0502 0.107 0.0587 0.126 0.051 0.109 0.0506 0.108 0.0458 0.0987 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. #Neighbors FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 11
  12. 12. Exemples library(caret) | 2- Régression pls plsGrid = data.frame( .ncomp = 1:30)  Description brève du modèle:   Code plsFit <- train( Class ~ ., data = training, method = "pls", tuneGrid = plsGrid, trControl = cvCtrl) plot( plsFit) plsFit 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) # 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 Accuracy (Repeated Cross-Validation) Paramètres de complexité (ou versions du modèle) testés Console 700 samples 61 predictors 2 classes: 'Bad', 'Good' 0.76 2 3 4 5 6 No pre-processing 7 Resampling: Cross-Validation (10 fold, repeated 8 10 times) 9 10 0.74 0.72 Summary of sample sizes: 630, 630, 630, 630, 630, 630, ... 0.70 0 5 10 15 #Components 20 25 30 0.701 0.707 0.77 0.761 0.756 0.76 0.763 0.761 0.762 0.0748 0.0245 0.0783 0.105 0.0305 0.0968 0.402 0.0461 0.127 0.391 0.0423 0.114 0.381 0.0425 0.115 0.396 0.0446 0.116 0.401 0.0422 0.112 0.395 0.0401 0.104 0.397 0.0394 0.102 … ncomp Accuracy Kappa Accuracy SD Kappa Accuracy was used to select the optimal model using the largest value. SD The final value used for the model was ncomp = 4. 1 0.707 0.0693 0.0202 0.0672 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 12
  13. 13. Exemples Code | 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)  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 # 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 Paramètres de complexité (ou versions du modèle) testés Console Accuracy (Repeated Cross-Validation) 0.75 61 predictors 2 classes: 'Bad', 'Good' 0.74 0.73 0.72 0 10 20 30 40 #Randomly Selected Predictors 50 60 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 No pre-processing 14 0.743 0.316 0.0311 0.0899 Resampling: Cross-Validation (5 fold, repeated 5 17 0.75 0.337 0.0311 0.0888 times) 20 0.747 0.329 0.031 0.092 … Summary of sample sizes: 560, 560, 560, 560, 560, 560, ... Accuracy was used to select the optimal model using the largest value. Resampling results across tuning parameters: The final value used for the model was mtry = 17. mtry Accuracy Kappa Accuracy SD Kappa SD 2 0.717 0.0782 0.0122 0.0539 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 13
  14. 14. 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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 14
  15. 15. Fonctionnalités supplémentaires | Pré-traitement library(caret)  Un pré-traitement est parfois nécessaire pour: # 1- Pré-traitement en amont preProcValues <- preProcess( training[,!( colnames( training) == "Class")], method = c( "center", "scale")) 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: Code # 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) En amont du modèle (modification des données d’apprentissage)  Au moment de l’estimation du modèle  FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 15
  16. 16. Fonctionnalités supplémentaires | Importance des variables Code  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. # Importance des variables du modèle pls varImp(plsFit) # Importance des variables du modèle knn varImp(knnFit) Console Console  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) FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 16
  17. 17. Fonctionnalités supplémentaires | Calcul parallèle, séries temporelles  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, …) Code library(doParallel) nbCores <- 2 cl <- makeCluster( nbCores) registerDoParallel(cl) plsFit <- train( Class ~ ., data = training, allowParallel = T, method = "pls", tuneLength = 25) stopCluster(cl) Code 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 ) FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 17
  18. 18. 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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 18
  19. 19. Conclusion | Avantages et inconvénients du package caret  Inconvénients:  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)   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 FLTAUR – MODÈLES DE PRÉVISION SOUS R AVEC LE PACKAGE CARET 07/03/2014 19

×