Upload
phungminh
View
214
Download
0
Embed Size (px)
Citation preview
Statistiques avec R3/4 - Machine Learning/Data
MiningChristophe Lalanne
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