19
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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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