Statistiques avec R 3/4 - Machine Learning/Data Mining · Avantages des arbres de décision (CART,...

Preview:

Citation preview

Statistiques avec R3/4 - Machine Learning/Data

MiningChristophe Lalanne

ch.lalanne@gmail.comwww.aliquote.org

Cours R (ESME), 2015 1

Synopsis

• Positionnement du problème

• Réduction de dimension

• Sélection de variables

• Quelques modèles prédictifs

Cours R (ESME), 2015 2

RStudio et R Markdown

Présentation

Cours R (ESME), 2015 3

Différentes questions, différentes approches

• approche supervisée vs. non-supervisée, voire semi-supervisée ; prédiction vs. classification

• modèle explicatif vs. modèle prédictif ; modèle génératif vs. discriminant

What’s the model for the data?— Leo Breiman, Statistical Modeling: The Two Cultures

Cours R (ESME), 2015 4

Rappels sur l'approche de régression

Soit la réponse mesurée pour la ème unité, et les valeurs observées sur prédicteurs. Le modèle de régression linéaire (au niveau de ses paramètres) s'écrit

avec ( ) les coefficients de régression qui reflètent le changement observé au niveau de lorsque varie de une unité, les autres prédicteurs étant maintenus constants.Cours R (ESME), 2015 5

L'erreur quadratique moyenne (RMSE), définie comme

permet de résumer l'écart entre les valeurs prédites et les valeurs observées, en d'autres termes la capacité prédictive du modèle.rmse <- function(obj) sqrt(mean(resid(obj)^2))

Cours R (ESME), 2015 6

Cas d'une variable réponse binaireRégression logistique

La régression logistique permet de traiter le cas où la variable réponse est de type binaire (oui/non, malade/pas malade, etc.), et non pas continu comme dans le modèle de régression linéaire. Tout en relaxant certaines des hypothèses du modèle de régression multiple, on maintient quand même l'idée d'une relation linéaire entre la réponse et les prédicteurs.

Cours R (ESME), 2015 7

Soit la probabilité d'observer l'événement (vs. 0), alors le log odds peut s'exprimer comme une fonction linéaire des paramètres du modèle à prédicteurs :

et la probabilité prédite s'écrit alors

Cours R (ESME), 2015 8

Deux utilisations différentes (à ne pas confondre) :

1. prédiction (probabilité, )

2. classification (e.g., si , sinon).

Comme dans le cas de la régression linéaire on utilise des mesures du pouvoir prédictif (e.g., score de Brier) ou discriminant (taux de classification correcte, courbe ROC optimisant un compromis sensibilité/spécificité défini a priori).

Voir les packages rms et ROCR.

Cours R (ESME), 2015 9

Exemples de problèmes de ML ou DM

• analyse de documents : mots/topics

• recherche médicale : expression de gènes et prédiction du type de tumeur cancéreuse

• commerce, banque : données clients et typologie (achat, crédit, etc.)

• système de recommendation

• etc.Cours R (ESME), 2015 10

Le zoo des modèles ML

Source : http://scikit-learn.org/stable/tutorial/machine_learning_map/

Cours R (ESME), 2015 11

Un problème de sur-ajustement

Exemple de modèle (génératif) :

f <- function(x) sin(sqrt(2*pi*x))n <- 1000 ## ou 30x <- runif(n, 0, 2*pi)y <- f(x) + rnorm(n, 0, 0.25)library(splines)lm(y ~ bs(x, df=3), data=dfrm)

Cours R (ESME), 2015 12

Qualité du modèle de régression par splines :

Quel modèle choisir : 3, 5 ou 10 paramètres ?Cours R (ESME), 2015 13

Cours R (ESME), 2015 14

BS-15 estimé sur N=100, 30 nouvelles observations.

Cours R (ESME), 2015 15

BS-15 estimé sur N=30, 30 nouvelles observations.

Cours R (ESME), 2015 16

Compromis biais/variance

Considérons un modèle polynomial d'ordre ,

.

Problématique de sélection de modèle :

• Large biais quand petit, large variance quand grand.

• Comment choisir ?

Cours R (ESME), 2015 17

Cours R (ESME), 2015 18

Cours R (ESME), 2015 19

Quel bon compromis pour éviter le sur-ajustement et contrôler la complexité du modèle ?

• Limiter le nombre de prédicteurs, , ou maximiser (critère AIC).

• Procédure de sélection automatique de variable

• Validation croisée : 2 sous-échantillons, k-fold (avec ou sans répétition), bootstrap

• Techniques de pénalisation, incluant la sélection automatique de variables.

Cours R (ESME), 2015 20

Régression régularisée

L'estimateur par MCO minimise la SSR. Lorsque , n'est pas de rang plein, et il n'y a plus unicité des

solutions MCO. Pour la prédiction on peut chercher à minimiser le risque .

Cours R (ESME), 2015 21

Remarque : Une pénalisation avec une norme , , revient aux méthodes AIC/BIC.

Packages R : glmnet (pas de data frame) ou penalized (inclut la possibilité de ne pénaliser qu'une partie des paramètres), parmi d'autres)

Cours R (ESME), 2015 22

Cours R (ESME), 2015 23

f <- function(x) sin(sqrt(2*pi*x))n <- 1000x <- runif(n, 0, 2*pi)sigma <- rnorm(n, 0, 0.25)y <- f(x) + sigmadfrm <- data.frame(x, y)library(penalized)lam <- c(seq(0, 2, by=.01), seq(2, 30, by=2))X <- poly(dfrm$x, k)for (l in lam) { m <- penalized(response=dfrm$y, penalized=X, lambda1=0, lambda2=l) dfrm$pp <- predict(m, X)[,"mu"] plot(...)}

Mais on pourrait très bien optimiser la valeur de . Comment ?Cours R (ESME), 2015 24

Application 1

Modèle : ,

1. Simuler des données avec , et comparer un modèle linéaire classique à un modèle pénalisé (package glmnet).

2. Comparer les résultats avec une approcge par sélection de variable (step()) et de régression sur composantes principales (pls::pcr())

Cours R (ESME), 2015 25

Exemple pour simuler les données :n <- 50X <- replicate(10, rnorm(n))colnames(X) <- paste("x", 1:10, sep="")y <- 1.1*X[,1] + 0.8*X[,2] - 0.7*X[,5] + 1.4*X[,6] + rnorm(n)dfrm <- data.frame(y=y, X)

## Modèle de basefm0 <- lm(y ~ 0+x1+x2+x3+x4, data=dfrm)

Cours R (ESME), 2015 26

Colinéarité, grande dimension, sélection de variable

Soit , réponse continue, et trois prédicteurs continus, , mesurés sur un échantillon de taille , avec

.

Considérons 40 prédicteurs additionnels tirés indépendemment dans , de sorte qu'une estimation par simple MCO est moins recommendée.

Cours R (ESME), 2015 27

Par ailleurs, on considère que n'est pas corrélé à mais sa corrélation partielle avec n'est pas nulle.library(MASS)n <- 80Sigma <- matrix(c(1,-.5,-.5,0, -.5,1,.5,-.5, -.5,.5,1,-.5, 0 ,-.5,-.5,1), nc=4)dat <- mvrnorm(n, rep(0, 4), Sigma)dat <- cbind(dat, replicate(40, rnorm(n, 0, 1)))colnames(dat) <- c("y", paste("x", 1:(ncol(dat)-1), sep=""))

Cours R (ESME), 2015 28

Application 2

Est-il possible de recouvrer les prédicteurs ?

1. Faire un filtrage univarié des prédicteurs à l'aide d'un simple test de corrélation, avec et sans correction pour les tests multiples (Bonferroni et FDR).

2. Comparer avec une approche par régularisation.

3. Comparer avec une approche par arbre de décision (package rpart).

Cours R (ESME), 2015 29

Sélection de variables

• Méthodes de filtrage : généralement univariées, sélection de variables indépendamment du classifieur

• Méthodes d'ensemble ("wrapper") : qualité de la classification, importance des prédicteurs, impossible d'enrichir la structure des classifieurs

• Méthodes intégrées ou enchâssées ("embedded") : processus de sélection de variables intégré à l'algorithme d'apprentissage, moins exigeantes en termes de calcul

Cours R (ESME), 2015 30

Source : Guyon, I., et al. (2006). Feature Extraction: Foundations And Applications Springer-Verlag.

Cours R (ESME), 2015 31

Méthodes d'ensemble

L'idée est de générer des ensembles de classifieurs variés et suffisamment précis. On peut introduire de la variabilité en variant différents paramètres :

• varier le poids des observations (boosting/bagging)

• varier les valeurs des observations (ajout de bruit)

• considérer des sous-ensembles de variables (random forests)

Cours R (ESME), 2015 32

• varier les paramètres du modèle

• varier le modèle utiliser (arbres, MARS, NNs, etc.)

Les estimations peuvent ensuite être combinées par pondération des estimations, par une méthode de vote (en classification), ou par partitionnement de l'espace de design.

Cours R (ESME), 2015 33

Approches non-paramétriques

Dans le cas des structures de données irrégulières ( ou ), les approches de filtrage univarié (tests t, régression)

ou de réduction de dimension (PCA, SVD) ne prennent pas en compte la nature multivariée du problème.

Une approche possible : Arbres de classification et de régression (CART).

Cours R (ESME), 2015 34

Cours R (ESME), 2015 35

Avantages des arbres de décision (CART, ID3, C4.5/J48, etc.) :• fonctionnent avec des variables numériques ou qualitatives,

avec ou sans valeurs manquantes, moins sensibles aux valeurs extrêmes

• capturent les interactions, ignorent les prédicteurs de faible poids.

En revanche, ils sont instables, ne capturent pas bien les combinaisons linéaires de variables, et sont impactés par la colinéarité (variables surrogates).

Cours R (ESME), 2015 36

Typiquement, il est nécessaire d'élaguer l'arbre de décision pour éviter le sur-ajustement : minimiser taille de l'arbre + minimiser fonction de coût.1) root 80 19.3875000 0.58750000 2) y< 0.2673223 24 0.9583333 0.04166667 4) x< 0.9072912 22 0.0000000 0.00000000 * 5) x>=0.9072912 2 0.5000000 0.50000000 * 3) y>=0.2673223 56 8.2142860 0.82142860 6) x< 0.2191463 10 1.6000000 0.20000000 12) y< 0.8277749 8 0.0000000 0.00000000 * 13) y>=0.8277749 2 0.0000000 1.00000000 * 7) x>=0.2191463 46 1.9130430 0.95652170 14) x< 0.4344256 9 1.5555560 0.77777780 28) y< 0.4891134 2 0.0000000 0.00000000 * 29) y>=0.4891134 7 0.0000000 1.00000000 * 15) x>=0.4344256 37 0.0000000 1.00000000 *

Cours R (ESME), 2015 37

Exemple :file <- "http://aliquote.org/cours/2015_esme/data/titanic.dat"titanic.raw <- read.table(url(file), header = TRUE)library(rpart)m <- rpart(Survived ~ ., data = titanic.raw)plotcp(m)printcp(m)

Cours R (ESME), 2015 38

Variables actually used in tree construction:[1] Age Class Sex

Root node error: 711/2201 = 0.32303

n= 2201

CP nsplit rel error xerror xstd1 0.306610 0 1.00000 1.00000 0.0308572 0.022504 1 0.69339 0.69339 0.0275103 0.011252 2 0.67089 0.69339 0.0275104 0.010000 4 0.64838 0.66385 0.027083

0.323 x 0.648 (rel error) = erreur de resubstitution

0.323 x 0.664 (xerror) = erreur 10-fold CV

Cours R (ESME), 2015 39

Forêts aléatoires

Extension des CART incluant une double étape de randomization (variables et individus). Il n'y a pas de modèle sous-jacent : il s'agit d'un algorithme :

• On spécifie le nombre de variables $p$ qui servira d'ensemble de prédicteurs parmi les variables de départ (généralement, ).

• Chaque arbre (de profondeur maximale) est construit à partir d'un échantillon bootstrap des individus de

Cours R (ESME), 2015 40

• À chaque noeud, variables sont sélectionnées aléatoirement parmi les variables, la division de l'arbre se faisant selon un critère de maximisation du gain d'information sur ces variables (Gini :

ou ).

• L'importance de chaque variable est évaluée par permutation.

Package : randomForest

Cours R (ESME), 2015 41

Source : https://www.biostars.org/p/86981/

Cours R (ESME), 2015 42

Source : https://www.biostars.org/p/86981/

Cours R (ESME), 2015 43

Source : https://www.biostars.org/p/86981/

Cours R (ESME), 2015 44

Source : Gene selection and classification of microarray data using random forest

Cours R (ESME), 2015 45

Application 3

1. Télécharger le jeu de données leukemia depuis le site du cours.

2. Vérifier la structure de données.

3. Comparer les prédictions d'un modèle de régression pénalisée avec celles d'un modèle RF.

Cours R (ESME), 2015 46

Lecture des données :x <- read.table("leukemia.data.txt")[,-1]x <- t(x)y <- scan("leukemia.class.txt", what = "character")y <- as.numeric(factor(y))-1

Cours R (ESME), 2015 47

Validation croisée

Source : http://genome.tugraz.at/proclassify/help/pages/XV.html

Cours R (ESME), 2015 48

On recommende généralement une procédure de type k-fold (k = 5 ou 10), répété (25 ou 100 fois), ou une approche par bootstrap pour de raisons de stabilité et de variance.

À retenir : la validation croisée doit englober l'intégralité des étapes de construction et d'évaluation du modèle (optimisation des (hyper-)paramètres, sélection de variables, etc.).

Cours R (ESME), 2015 49

Le package caret

http://topepo.github.io/caret/index.html

Cours R (ESME), 2015 50

partitionnement échantillon apprentissage/test : createDataPartition

rfFit <- train(x=trainDescr, y=trainClass, method="rf", tuneLength=10, importance=TRUE, proximity=TRUE, trControl=trainControl(method="repeatedcv", number=5, repeats=10, verboseIter=TRUE), metric = "Accuracy")rfFit

varUsed(rfFit$finalModel)plot(rfFit$finalModel)

Cours R (ESME), 2015 51

Autres modèles

Il existe de nombreux autres modèles multivariés : SVM, GBM, MARS, sparse PLS, etc.

Voir The Elements of Statistical Learning pour les détails téhoriques, pratiques et le code R. D'autres illustrations sont disponibles sur le site du package caret.

Cours R (ESME), 2015 52

Machines à vecteur de support

Source : http://docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

Cours R (ESME), 2015 53

Cours R (ESME), 2015 54

Exemple de SVM

library(kernlab)set.seed(101)x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))y <- matrix(c(rep(1,60),rep(-1,60)))svp <- ksvm(x,y,type="C-svc")plot(svp,data=x)

Voir aussi Support Vector Machines in R: a benchmark study (PDF).

Cours R (ESME), 2015 55

Cours R (ESME), 2015 56

Equation de décision

plot(scale(x), col=y+2, pch=y+2, xlab="", ylab="")w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])b <- b(svp)abline(b/w[1],-w[2]/w[1])abline((b+1)/w[1],-w[2]/w[1],lty=2)abline((b-1)/w[1],-w[2]/w[1],lty=2)

Source : http://cbio.ensmp.fr/~jvert/

Cours R (ESME), 2015 57

Recommended