Cours de Machine Learning: Théorie et Pratique
Cours de Machine Learning: Théorie et Pratique
L. Rouvière
[Link]@[Link]
Novembre 2019
Présentation
— Objectifs : comprendre les aspects théoriques et pratiques des quelques algorithmes machine learning.
— Pré-requis : théorie des probabilités, modélisation statistique, régression (linéaire et logistique). R, niveau
avancé.
Programme
— 5 parties :
1. Contexte mathématique pour l’apprentissage (rappels ?) 2h00.
2. Support vector machine : 4h.
3. Agrégation : forêts aléatoires et boosting+arbres (rappels ?) : 4h.
4. Réseau de neurones et introduction au deep learning : 2h.
1 Motivations 4
4 Estimation du risque 10
5 Le sur-apprentissage 12
6 Le package caret 14
1
7 Annexe : compléments sur les scores 17
8 Bibliographie 19
III Arbres 35
1 Arbres binaires 35
3 Elagage 40
7 Bibliographie 56
IV Agrégation 57
2 Boosting 65
2.1 Algorithmes de gradient boosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.2 Choix des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3 Bibliographie 71
2
V Réseaux de neurones 73
1 Introduction 73
2 Le perceptron simple 74
3 Perceptron multicouches 77
4 Estimation 79
6 Bibliographie 83
3
Première partie
Plusieurs "définitions"
1. "... explores way of estimating functional dependency from a given collection of data" [Vapnik, 2000].
2. "...vast set of tools for modelling and understanding complex data" [James et al., 2015]
3. Comprendre et apprendre un comportement à partir d’exemples.
Constat
— Le développement des moyens informatiques fait que l’on est confronté à des données de plus en plus complexes.
— Les méthodes traditionnelles se révèlent souvent peu efficaces face à ce type de données.
— Nécessité de proposer des algorithmes/modèles statistiques qui apprennent directement à partir des données.
Conclusion
Moyens informatiques =⇒ Data Mining =⇒ Apprentissage statistique =⇒ Intelligence artificielle...
Reconnaissance de l’écriture
Apprentissage statistique
Comprendre et apprendre un comportement à partir d’exemples.
4
Reconnaissance de la parole
0.5 0.5
YES NO
−0.5 −0.5
0 1 0 1
1 1
BOAT GOAT
−1 −1
0 1 0 1
0.2 1
SH AO
−0.2 −1
0 1 0 1
Question
Peut-on prédire la concentration maximale en ozone du lendemain à partir des prévisions météorologiques ?
5
Détection de spam
Question
Peut-on construire à partir de ces données une méthode de détection automatique de spam ?
Nombreuses applications
finance, économie, marketing, biologie, médecine...
Approche mathématique
— Ouvrage fondateur : [Vapnik, 2000]
— voir aussi [Bousquet et al., 2003].
The Elements of Statistical Learning [Hastie et al., 2009, James et al., 2015]
[Link] [Link]
6
2 Cadre mathématique pour l’apprentissage supervisé
Régression vs Discrimination
Objectifs
1. Expliquer le(s) méchanisme(s) liant les entrée xi aux sorties yi ;
2. Prédire « au mieux » la sortie y associée à une nouvelle entrée x ∈ X .
Vocabulaire
— Lorsque la variable à expliquer est quantitative (Y ⊆ R), on parle de régression.
— Lorsqu’elle est qualitative (Card(Y) fini), on parle de discrimination ou de classification supervisée.
Exemples
— La plupart des problèmes présentés précédemment peuvent être appréhendés dans un contexte d’apprentissage
supervisé : on cherche à expliquer une sortie y par des entrées x :
yi xi
Chiffre image Discri.
Mot courbe Discri.
Spam présence/absence de mots Discri.
C. en O3 données météo. Régression
Remarque 2.1. — La nature des variables associées aux entrées xi est variée (quanti, quali, fonctionnelle...).
— Etant données des observations dn = {(x1 , y1 ), . . . , (xn , yn )} on cherche à expliquer/prédire les sortie yi ∈ Y
à partir des entrées xi ∈ X .
— Il s’agit donc de trouver une fonction de prévision f : X → Y telle que
f (xi ) ≈ yi , i = 1, . . . , n.
— Nécessité de se donner un critère qui permette de mesurer la qualité des fonctions de prévision f .
— Le plus souvent, on utilise une fonction de perte ` : Y × Y → R+ telle que
`(y, y 0 ) = 0 si y = y 0
`(y, y 0 ) > 0 si y 6= y 0 .
7
Approche statistique
— On suppose que les données dn = {(x1 , y1 ), . . . , (xn , yn )} sont des réalisations d’un n-échantillon Dn =
{(X1 , Y1 ), . . . , (Xn , Yn )} de loi inconnue.
— Les Xi sont des variables aléatoires à valeurs dans X , les Yi dans Y.
— Le plus souvent on supposera que les couples (Xi , Yi ), i = 1, . . . , n sont i.i.d de loi P .
Aspect théorique
— Pour une fonction de perte ` : Y × Y → R+ donnée, le problème théorique consiste à trouver
f ? ∈ argmin R(f ).
f
?
— Une telle fonction f (si elle existe) est appelée fonction de prévision optimale pour la perte `.
Aspect pratique
— La fonction de prévision optimale f ? dépend le plus souvent de la loi P des (X, Y ) qui est en pratique
inconnue.
— Le job du statisticien est de trouver un estimateur fn = fn (., Dn ) tel que R(fn ) ≈ R(f ? ).
Définition 2.1. — Un algorithme de prévision est représenté par une suite (fn )n d’applications (mesurables)
telles que pour n ≥ 1, fn : (X × (X × Y)n ) → Y.
— On dit que la suite (fn )n est universellement consistante si ∀P
lim R(fn ) = R(f ? ).
n→∞
— Le cadre mathématique développé précédemment sous-entend qu’une fonction est performante (voire opti-
male) vis-à-vis d’un critère (représenté par la fonction de perte `)).
— Un algorithme de prévision performant pour un critère ne sera pas forcément performant pour un autre.
Conséquence pratique
Avant de s’attacher à construire un algorithme de prévision, il est capital de savoir mesurer la performance d’un
algorithme de prévision.
— Dans un contexte de régression (Y = R), la perte quadratique est la plus souvent utilisée. Elle est définie par :
` : R × R → R+
(y, y 0 ) 7→ (y − y 0 )2
— Le risque pour une fonction de prévision ou régresseur m : X → R est alors donné par
R(m) = E((Y − m(X))2 .
8
Classification binaire
— Dans un contexte de discrimination binaire (Y = {−1, 1}), la perte indicatrice est la plus souvent utilisée.
Elle est définie par :
` : {−1, 1} × {−1, 1} → R+
(y, y 0 ) 7→ 1y6=y0
— Le risque pour une fonction de prévision ou règle de prévision g : X → {−1, 1} est alors donné par
R(g) = E(1g(X)6=Y ) = P(g(X) 6= Y ).
Fonction de score
S(x)
— Une telle fonction est appelée fonction de score : plutôt que de prédire directement le groupe d’un nouvel
individu x ∈ X , on lui donne une note S(x)
— élevée si il a des "chances" d’être dans le groupe 1 ;
— faible si il a des "chances" d’être dans le groupe -1 ;
Propriété
— 0.5 ≤ AUC(S) ≤ 1.
— Plus l’AUC est grand, meilleur est le score.
1.00
0.75
true_positive_fraction
Scores
Perfect
0.50 random
S1
S2
0.25
0.00
> library(pROC)
> df1 %>% group_by(Scores) %>% summarize(auc(D,M))
## # A tibble: 4 x 2
## Scores ‘auc(D, M)‘
## <chr> <dbl>
## 1 Perfect 1
## 2 random 0.5
## 3 S1 0.896
## 4 S2 0.699
9
Perte `(y, f (x)) Risque E[`(Y, f (X))] Champion f ?
Résumé
4 Estimation du risque
Rappels
Objectif
Etant donnée une fonction de perte ` : Y × Y → R+ , on cherche un algorithme de prévision fn (x) = fn (x, Dn ) qui
soit "proche" de l’oracle f ? défini par
f ? ∈ argmin R(f )
f
Question
Etant donné un algorithme fn , que vaut son risque R(fn ) ?
Risque empirique
— La loi de (X, Y ) étant inconnue en pratique, il est impossible de calculer R(fn ) = E[`(Y, fn (X))].
— Première approche : R(fn ) étant une espérance, on peut l’estimer (LGN) par sa version empirique
n
1X
Rn (fn ) = `(Yi , fn (Xi )).
n i=1
Problème
— L’échantillon Dn a déjà été utilisé pour construire l’algorithme de prévision fn =⇒ La LGN ne peut donc
s’appliquer !
— Conséquence : Rn (fn ) conduit souvent à une sous-estimation de R(fn ).
Une solution
Utiliser des méthodes de type validation croisée ou bootstrap.
10
Apprentissage - Validation ou Validation hold out
Algorithme
Entrées. Dn : données, {A, V} : partition de {1, . . . , n}.
1. Construire l’algorithme de prédiction sur Dn,app = {(Xi , Yi ) : i ∈ A}, on le note fn,app ;
b n (fn ) = 1 P
2. Calculer R |V| i∈V `(Yi , fn,app (Xi )).
Commentaires
Nécessite d’avoir un nombre suffisant d’observations dans
1. Dn,app pour bien ajuster l’algorithme de prévision ;
2. Dn,test pour bien estimer l’erreur de l’algorithme.
Algorithme - CV
Entrées. Dn : données, K un entier qui divise n ;
1. Construire une partition {I1 , . . . , IK } de {1, . . . , n} ;
2. Pour k = 1, . . . , K
(a) Iapp = {1, . . . , n}\Ik et Itest = Ik ;
(b) Construire l’algorithme de prédiction sur Dn,app = {(Xi , Yi ) : i ∈ Iapp }, on le note fn,k ;
(c) En déduire fn (Xi ) = fn,k (Xi ) pour i ∈ Itest ;
3. Retourner
n
b n (fn ) = 1
X
R `(Yi , fn (Xi )).
n i=1
Commentaires
11
5 Le sur-apprentissage
— La plupart des modèles statistiques renvoient des estimateurs qui dépendent de paramètres λ à calibrer.
Exemples
— nombres de variables dans un modèle linéaire ou logistique.
— paramètre de pénalités pour les régressions pénalisées.
— profondeur des arbres.
— nombre de plus proches voisins.
— nombre d’itérations en boosting.
— ...
Remarque importante
Le choix de ces paramètres est le plus souvent crucial pour la performance de l’estimateur sélectionné.
Overfitting
Sur-ajuster signifie que le modèle va (trop) bien ajuster sur les données d’apprentissage, il aura du mal à s’adapter
à de nouveaux individus.
Train error
Test error
OVERFITTING
Complexity (λ)
Overfitting en regression
12
●
●
●
● ● ●
●
●
● ● ●
● ●
1.0 ● ●
●●
●
●
●●
● ● ● ● ●● ● ●
● ●
● ● ●
● ● ●
● ● ●
●
● ● ● ●
● ● ●
● ●
●● ●
● ●
● ● ●
●
● ● ●
● ●
●
●
0.5 ● ● ●
● ● ●
●
● ●● ●
● ● ●
● ● ● ●
●
● ●
● ●
● ● ●
● ●
●
●
●● ● ●
●
0.0 ● ● ● ●
● ●
Y
● ●
● ●
● ● ●
● ● ● ●
●
● ● ● ● ●
●● ● ●
●
●
● ●
● ● ●
●
−0.5 ● ● ●
● ●
● ● ● ●
●
●
●● ● ●
●
● ●
●●
● ● ●●● ●
●●
●●● ●
●●
● ● ●●
● ●●
●● ●
●● ● ●
●
●
−1.0 ●
● ●
● ●
● ●●
● ●
● ●
●
−1.5
−4 0 4
X
1.0
0.5
Estimate
0.0 Over
y
Good
Under
−0.5
−1.0
−1.5
−4 0 4
x
1.00 ● ● ● ●●● ● ●● ● ● ● ● ●
● ● ● ● ● ●●● ● ● ● ● ●
●
● ●● ● ● ● ●
● ● ● ●●
●●
● ●
● ● ●● ● ● ● ● ●●
● ● ● ● ●● ● ● ● ● ● ●
●● ● ● ● ● ●● ● ● ● ● ● ●
● ● ●● ● ●●●● ●
●
●● ● ● ●● ● ● ●● ●●● ● ● ● ● ●●
● ● ● ●●
● ●
● ● ● ● ● ● ●
●●
● ●● ● ● ● ●
● ●● ● ●●
● ● ●●● ● ●● ● ● ●● ● ● ● ●●
● ● ●
●●
● ●●●
● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●●
● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ●
● ● ●● ● ● ●● ● ● ●● ● ●● ●
● ●● ● ● ● ●
● ●● ●
● ● ● ● ● ●
● ● ● ● ● ●
● ● ● ● ● ● ● ●● ● ●
●
●
●
● ● ● ● ● ●
● ●
● ● ● ●
● ● ●●●
● ● ● ● ● ● ● ● ● ●● ● ● ●●● ●●
● ● ● ●
●● ●●
● ● ● ● ● ● ●
● ● ●
●● ● ● ● ● ● ● ●● ●
● ● ●
●
● ● ●●
●
● ● ● ● ● ● ● ● ● ● ● ●
● ●● ●● ● ● ● ● ●●
●● ● ●● ●● ● ● ● ●●
●● ● ● ● ● ●● ● ● ● ● ●
●
● ● ●
● ● ● ●● ● ● ● ●
● ●● ● ● ● ● ● ●● ● ● ● ●●
●
● ● ●● ●● ●● ● ● ● ●
● ● ● ● ● ●● ● ● ● ● ● ● ●●●
●● ●
●
● ● ●● ● ●
● ● ● ●
● ● ● ●● ● ●
●
●●● ●
● ●● ● ● ● ● ●● ●
●● ● ● ●●● ●
●● ● ●● ● ●
0.75 ● ● ● ● ●●
● ● ● ●●
● ●
● ● ●
●
●● ●● ● ●
● ●● ● ● ●● ●
● ● ● ●
●● ● ●●●
● ●●●● ● ● ● ●
● ● ● ●● ●
●
●● ● ● ● ● ●● ● ● ● ● ● ●
● ●● ● ●●●
●
● ●●● ● ● ● ● ● ●● ● ●●
● ● ● ● ●● ●
● ● ● ● ●
● ● ● ●● ● ● ● ● ● ● ● ●
● ● ● ●
● ● ●● ●● ● ● ● ● ●● ●
● ● ● ● ●●
●
●
●● ● ● ● ● ● ● ● ● ● ●
● ●● ● ●
● ● ●●● ● ● ●● ● ● ● ●
● ●●● ● ● ● ● ●●
● ●
●● ● ● ●●
●● ● ● ● ●
●
● ●● ●● ● ● ● ● ● ● ● ● ● ●
●●
●● ● ● ● ●
●
●● ● ● ● ● ● ●● ● ●● ●
●
● ●● ● ● ● ●
● ● ●● ● ●
●
●
●
● ● ● ● ● ● ● ●● ●
● ● ● ● ●●
● ● ● ● ● ●
●
● ●● ●
● ● ● ● ●
● ● ● ● ●● ● ●● ●
●
●
● ● ● ● ● ●
● ● ● ●● ● ● ● ●
● ● ●●
●● ● ● ●
●●
● ● ● ●
●
● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●
●
● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●
●
●● ●● ●● ●
●
● ●
● ●●
●
●●
●
●● ●
● ● ●●
●
●●●
● ●● ●
● ●
● ●
● ●● ● Y
● ● ● ● ●● ● ●
● ● ● ●● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●
● ● ● ● ● ●
X2
● ● ●
0.50 ●● ● ●● ● ● ● ● ● ● ●
● ● ● ●● ● ●
● ●
● ● ● 0
● ● ●●
● ● ●
● ● ●
● ●● ● ● ● ● ● ●● ● ●
● ● ● ● ● ●● ● ●
●●
● ●
● ● ●● ● ● ● ●●
● ● ● ● ●●●
● ●
● ● ● ●●● ● ● ● ● ● ●● ● ● ●●
● ●
●●
● ●
●● ● ● ●
● ● ●● ● ● ● ● ● 1
● ● ●● ●● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ●
●● ● ●
● ●● ● ● ● ● ●●●● ● ●
●
● ●
● ●
●● ●
● ●
● ●
●
● ●
●
● ● ● ●● ● ●● ●● ●●● ● ●●
● ●●●
● ● ● ●●
● ● ● ● ●
● ● ● ● ● ●● ● ● ● ● ●
●
●
●● ● ●
● ●
● ● ●
●● ● ● ● ● ● ●● ●● ●●
●● ● ● ● ●● ●●●● ●
● ●
● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ●● ●● ● ● ●
● ●● ●● ● ●●● ● ●
●● ●
●
●●●● ● ● ● ● ● ● ●● ● ●● ●
● ● ● ●
● ●● ● ● ●● ●● ● ● ●
● ●
●
● ● ● ●●● ●● ● ● ● ●
● ●●
● ● ●● ●
●● ● ●● ● ●● ● ● ●●● ● ●● ● ●
● ● ● ●
●● ● ●●● ● ● ●
●
● ●● ●
●
● ●
●
● ● ● ●● ● ● ● ●● ● ●●● ●
●●●● ●
● ● ● ●● ●
● ● ●
● ● ● ●● ● ● ● ● ●● ● ●●
● ● ● ●
●
● ● ●
●
● ●● ●
● ● ● ● ● ● ● ● ●
●
● ● ●● ● ● ● ● ● ● ● ● ●● ●● ●● ● ●
●● ● ● ● ● ●
● ● ● ● ●● ● ● ● ●
● ● ●
● ● ● ●● ●● ●●● ● ● ●
● ● ●● ●
0.25
● ● ● ● ●● ● ● ● ● ● ●
● ●●
● ●● ● ● ● ● ●● ●
● ● ● ● ● ●● ●
●● ● ●
● ●●
●●
●
● ● ● ● ●
●
●● ●● ● ●● ●
● ● ● ● ● ●● ● ●●
● ●
●
● ●
●● ●● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ●
●
● ● ●
● ●● ●
●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●
● ●● ● ● ● ●
●
●
● ● ● ● ● ●
● ● ● ● ●● ●●
● ● ● ● ● ●●
● ● ● ●● ● ●● ● ●
● ● ● ●
●
●● ● ● ●
●● ●
● ● ●● ● ● ●● ● ● ● ● ● ●
● ● ● ● ●● ● ● ● ●●
● ●● ● ● ●● ● ● ● ●● ● ● ●
●● ● ● ● ●
● ● ● ● ● ● ●●
● ● ●● ●
● ● ● ● ● ● ●● ● ● ● ● ● ● ●
● ● ● ●● ● ● ●● ● ●● ●● ● ● ●
●● ● ● ●● ● ●● ● ● ● ● ●● ● ●
● ●● ● ● ●● ● ●
● ● ● ●● ●● ● ●●
●● ●●● ● ● ● ● ●
●
●
●●● ●
●● ● ● ● ●
● ●● ● ● ● ● ● ● ● ● ● ● ●
● ● ●● ● ● ● ● ● ● ●
● ●● ● ● ● ● ●
● ● ● ●● ● ● ● ●●
●● ● ● ● ● ●●● ●● ● ● ●
● ●● ●●● ●● ●● ● ●
● ● ● ● ● ● ● ● ● ● ●●
●
● ● ●● ● ●● ●● ●● ●● ●● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ●●
●● ● ● ● ● ● ● ● ●● ● ●
● ● ● ●● ●●
● ● ● ●●●
● ●● ● ● ● ●
● ● ● ● ●● ● ● ●● ●●● ● ● ● ●
● ●● ●
● ●●
●
● ● ● ●●●
●
● ●● ● ● ●
● ●
●● ● ● ● ● ●●
● ●● ●● ● ●
● ● ● ● ● ● ● ● ● ● ●
0.00 ● ● ●
13
1.00 1.00
0.75 0.75
label label
X2
X2
0.50 0 0.50 0
1 1
0.25 0.25
0.00 0.00
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00
X1 X1
1.00 1.00
0.75 0.75
label
label
X2
X2
0.50 0 0.50
1
1
0.25 0.25
0.00 0.00
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00
X1 X1
6 Le package caret
Le package caret
— Il suffit d’indiquer :
— la méthode (logistique, ppv, arbre, randomForest...)
— Une grille pour les paramètres (nombre de ppv...)
— Le critère de performance (erreur de classification, AUC, risque quadratique...)
— La méthode d’estimation du critère (apprentissage validation, validation croisée, bootstrap...)
Apprentissage-validation
> library(caret)
> K_cand <- [Link](k=seq(1,500,by=20))
> library(caret)
> ctrl1 <- trainControl(method="LGOCV",number=1,index=list(1:1500))
> e1 <- train(Y~.,data=donnees,method="knn",trControl=ctrl1,tuneGrid=K_cand)
> e1
## k-Nearest Neighbors
##
## 2000 samples
## 2 predictor
## 2 classes: ’0’, ’1’
##
## No pre-processing
## Resampling: Repeated Train/Test Splits Estimated (1 reps, 75%)
## Summary of sample sizes: 1500
## Resampling results across tuning parameters:
##
## k Accuracy Kappa
## 1 0.620 0.2382571
## 21 0.718 0.4342076
## 41 0.722 0.4418388
## 61 0.718 0.4344073
## 81 0.720 0.4383195
## 101 0.714 0.4263847
## 121 0.716 0.4304965
## 141 0.718 0.4348063
## 161 0.718 0.4348063
## 181 0.718 0.4348063
## 201 0.720 0.4387158
14
## 221 0.718 0.4350056
## 241 0.718 0.4350056
## 261 0.722 0.4428232
## 281 0.714 0.4267894
## 301 0.714 0.4269915
## 321 0.710 0.4183621
## 341 0.696 0.3893130
## 361 0.696 0.3893130
## 381 0.688 0.3727988
## 401 0.684 0.3645329
## 421 0.686 0.3686666
## 441 0.686 0.3679956
## 461 0.684 0.3638574
## 481 0.680 0.3558050
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was k = 261.
> plot(e1)
● ●
0.72 ● ●
● ● ● ● ● ● ●
●
● ● ●
0.70
Accuracy (Repeated Train/Test Splits)
● ●
● ●
● ●
0.68 ●
0.66
0.64
0.62 ●
#Neighbors
Validation croisée
> library(doMC)
> registerDoMC(cores = 3)
> ctrl2 <- trainControl(method="cv",number=10)
> e2 <- train(Y~.,data=dapp,method="knn",trControl=ctrl2,tuneGrid=K_cand)
> e2
## k-Nearest Neighbors
##
## 1500 samples
## 2 predictor
## 2 classes: ’0’, ’1’
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 1350, 1350, 1350, 1350, 1350, 1350, ...
## Resampling results across tuning parameters:
##
## k Accuracy Kappa
## 1 0.6240000 0.2446251
## 21 0.7393333 0.4745290
## 41 0.7306667 0.4570024
## 61 0.7340000 0.4636743
## 81 0.7333333 0.4632875
## 101 0.7313333 0.4593480
## 121 0.7326667 0.4624249
## 141 0.7333333 0.4640787
## 161 0.7366667 0.4708178
## 181 0.7313333 0.4602309
## 201 0.7326667 0.4626618
15
## 221 0.7293333 0.4559741
## 241 0.7306667 0.4585960
## 261 0.7353333 0.4676751
## 281 0.7286667 0.4537842
## 301 0.7253333 0.4463516
## 321 0.7173333 0.4294524
## 341 0.7113333 0.4168003
## 361 0.7080000 0.4099303
## 381 0.7140000 0.4213569
## 401 0.7073333 0.4073761
## 421 0.7100000 0.4126434
## 441 0.7066667 0.4054984
## 461 0.6966667 0.3844183
## 481 0.6860000 0.3612515
##
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was k = 21.
Critère AUC
16
> donnees1 <- donnees
> names(donnees1)[3] <- c("Class")
> levels(donnees1$Class) <- c("G0","G1")
> ctrl11 <- trainControl(method="LGOCV",number=1,index=list(1:1500),
+ classProbs=TRUE,summary=twoClassSummary)
> e4 <- train(Class~.,data=donnees1,method="knn",trControl=ctrl11,
+ metric="ROC",tuneGrid=K_cand)
> e4
## k-Nearest Neighbors
##
## 2000 samples
## 2 predictor
## 2 classes: ’G0’, ’G1’
##
## No pre-processing
## Resampling: Repeated Train/Test Splits Estimated (1 reps, 75%)
## Summary of sample sizes: 1500
## Resampling results across tuning parameters:
##
S ●● ●●
● ● ● ● ●●● ●
●
● ● ● ● ● ●
●● ● ● ●
● ●
● ●●● ● ●● ●● ● ●● ●
●
● ●●●●●
●
●
Y
random ●● ●
● ●● ●●● ●
● ●
●●
● ● ●
● ●
● ●
● ●● ● ● ●● ●
● ● ●●
●●●● ●●
●●
● ●● ● ● ● ● ● ● 0
● 1
Perfect ●●●●●
●● ● ● ● ●●● ●
●
● ● ● ● ● ●● ● ● ●
● ●
● ●●● ●
● ●● ●● ● ●● ●
●
● ● ●●
●
●
Définition 7.1. — Score parfait : il est tel qu’il existe un seuil s? tel que
P(Y = 1|S(X) ≥ s? ) = 1 et P(Y = −1|S(X) < s? ) = 1.
— Score aléatoire : il est tel que S(X) et Y sont indépendantes.
17
Lien score/règle de prévision
— Etant donné un score S, on peut déduire une règle de prévision en fixant un seuil s (la réciproque n’est pas
vraie) :
1 si S(x) ≥ s
gs (x) =
−1 sinon.
— Cette règle définit la table de confusion
gs (X) = −1 gs (X) = 1
Y = −1 OK E1
Y =1 E2 OK
— Pour chaque seuil s, on distingue deux types d’erreur
α(s) = P(gs (X) = 1|Y = −1) = P(S(X) ≥ s|Y = −1)
et
β(s) = P(gs (X) = −1|Y = 1) = P(S(X) < s|Y = 1).
On définit également
— Spécificité : sp(s) = P(S(X) < s|Y = −1) = 1 − α(s)
— Sensibilité : se(s) = P(S(X) ≥ s|Y = 1) = 1 − β(s)
Courbe ROC
— Idée : représenter sur un graphe 2d les deux types d’erreur pour tous les seuils s.
Définition 7.2. C’est une courbe paramétrée par le seuil :
x(s) = α(s) = 1 − sp(s) = P(S(X) > s|Y = −1)
y(s) = 1 − β(s) = se(s) = P(S(X) ≥ s|Y = 1)
Remarque
— La courbe ROC d’un score parfait passe par le point (0,1).
— La courbe ROC d’un score aléatoire correspond à la première bissectrice.
1.00
0.75
true_positive_fraction
Scores
Perfect
0.50 random
S1
S2
0.25
0.00
Interprétation
On mesurera la performance d’un score par sa capacité à se rapprocher de la droite d’équation y = 1 le plus vite
possible.
18
AUC
Définition 7.3. — L’aire sous la courbe ROC d’un score S, notée AU C(S) est souvent utilisée pour mesurer
sa performance.
— Pour un score parfait on a AU C(S) = 1, pour un score aléatoire AU C(S) = 1/2.
Proposition 7.1. — Etant données deux observations (X1 , Y1 ) et (X2 , Y2 ) indépendantes et de même loi que
(X, Y ), on a
AU C(S) = P(S(X1 ) ≥ S(X2 )|(Y1 , Y2 ) = (1, −1)).
AUC
> library(pROC)
> df1 %>% group_by(Scores) %>% summarize(auc(D,M))
## # A tibble: 4 x 2
## Scores ‘auc(D, M)‘
## <chr> <dbl>
## 1 Perfect 1
## 2 random 0.5
## 3 S1 0.896
## 4 S2 0.699
Score optimal
— Le critère AU C(S) peut être interprété comme une fonction de perte pour un score S ;
— Se pose donc la question d’existence d’un score optimal S ? vis-à-vis de ce critère.
Théorème 7.1 ([Clémençon et al., 2008]). Soit S ? (x) = P(Y = 1|X = x), on a alors pour toutes fonctions de
score S
AU C(S ? ) ≥ AU C(S).
Conséquence
Le problème pratique consistera à trouver un "bon" estimateur Sn (x) = Sn (x, Dn ) de
8 Bibliographie
Références
Biblio1
[Besse and Laurent, ] Besse, P. and Laurent, B. Apprentissage Statistique modeélisation, preévision, data mining.
INSA - Toulouse. [Link]
[Bousquet et al., 2003] Bousquet, O., Boucheron, S., and Lugosi, G. (2003). Introduction to Statistical Learning
Theory, chapter Advanced Lectures on Machine Learning. Springer.
[Clémençon et al., 2008] Clémençon, S., Lugosi, G., and Vayatis, N. (2008). Ranking and empirical minimization
of u-statistics. The Annals of Statistics, 36(2) :844–874.
[Hastie et al., 2009] Hastie, T., Tibshirani, R., and Friedman, J. (2009). The Elements of Statistical Learning :
Data Mining, Inference, and Prediction. Springer, second edition.
[James et al., 2015] James, G., Witten, D., Hastie, T., and Tibshirani, R. (2015). The Elements of Statistical
Learning : Data Mining, Inference, and Prediction. Springer.
[Vapnik, 2000] Vapnik, V. (2000). The Nature of Statistical Learning Theory. Springer, second edition.
19
Deuxième partie
Objectif
— Estimer la fonction de score S(x) = P(Y = 1|X = x) ;
— En déduire une règle de classification g : Rp → {−1, 1}.
Règles linéaires
Mathématiquement
— On cherche une combinaison linéaire des variables w1 X1 + . . . + wp Xp .
— Règle associée :
1 si w1 X1 + . . . + wp Xp ≥ 0
g(x) =
−1 sinon.
— Modèle :
p(x)
logit = β0 + β1 x 1 + . . . + βp x p
1 − p(x)
où p(x) = P(Y = 1|X = x).
— Règle de classification :
1 si p(x) ≥ 0.5
g(x) =
−1 sinon.
— équivalent à
1 si β0 + β1 x1 + . . . + βp xp ≥ 0
g(x) =
−1 sinon.
Exemple 2 : LDA
Illustration avec p = 2
— L’approche SVM repose sur le calcul direct du "meilleur" hyperplan séparateur qui sera déterminé à partir
d’algorithmes d’optimisation.
20
1.00 ● 1.00 ●
● ●
● ●
0.75 ● 0.75 ●
● ●
● ● ● ● ● ●
● ●
● ● ● ●
● ●
● label ● label
X2
X2
● ● ● 0 ● ● ● 0
0.50 ● 0.50 ●
● ● ● ●
● 1 ● 1
● ● ● ●
● ● ● ●
● ●
● ● ● ●
● ●
● ● ● ●
0.25 ● 0.25 ●
● ●
● ●
● ●
● ● ● ● ● ● ● ●
● ● ● ● ● ●
● ●
● ●
● ● ● ●
● ● ● ●
● ●
0.00 0.00
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00
X1 X1
En plus des documents cités précédemment, cette partie s’appuie sur les diapos de cours de
— Magalie Fromont, Apprentissage statistique, Université Rennes 2 ([Fromont, 2015]).
— Jean-Philippe Vert, Support vector machines and applications in computational biology, disponible à l’url
[Link]
Remarque
Les aspects techniques ne seront pas présentés ici, on pourra les trouver à l’url [Link]
p5awah6ij8ykiil/slides_apprentissage.pdf?dl=0
Présentation
— L’approche SVM [Vapnik, 2000] peut être vue comme une généralisation de "recherche d’hyperplan optimal".
Cas simple
Les données (x1 , y1 ), . . . , (xn , yn ) sont dites linéairement séparables si il existe (w, b) ∈ Rp × R tel que pour tout i :
— yi = 1 si hw, xi i + b = wt xi + b > 0 ;
— yi = −1 si hw, xi i + b = wt xi + b < 0.
21
hw, xi + b = 0
Vocabulaire
— L’équation hw, xi + b définit un hyperplan séparateur de vecteur normal w.
— La fonction signe(hw, xi + b) est une règle de discrimination potentielle.
Problème
Il existe une infinité d’hyperplans séparateurs donc une infinité de règles de discrimination potentielles.
Solution
[Vapnik, 2000] propose de choisir l’hyperplan ayant la marge maximale.
hw, xi + b = 0
1
M = kwk
marge
1
M = kwk
Le problème d’optimisation
22
Hyperplan séparateur optimal
Solution du problème d’optimisation sous contrainte :
— Version 1 :
max M
w,b,kwk=1
Solutions
— On obtient
n
X
w? = αi? yi xi .
i=1
où les αi? sont des constantes positives qui s’obtiennent en résolvant le dual du problème précédent.
— De plus, b? s’obtient en résolvant
αi? [yi (xti w + b) − 1] = 0
pour un αi? non nul.
Remarque
w? s’écrit omme une combinaison linéaire des xi .
Vecteurs supports
Conséquence (importante)
— Si αi? = 0 alors yi (xti w? + b) = 1 et xi est sur la marge.
— w? se calcule uniquement à partir de ces points là.
— Ces points sont appelés les vecteurs supports de la SVM.
Représentation
hw? , xi + b? = 0
M = kw1? k
α?
i > 0
marge
M = kw1? k
23
Le coin R
1.00
● ●
●
●
●
●
0.75
●
●
●
Y
X1
0.50 ● 0
● ●
● 1
0.25 ●
● ●
0.00
0.00 0.25 0.50 0.75
X2
> library(e1071)
> [Link] <- svm(Y~.,data=df,kernel="linear",cost=10000000000)
La fonction svm
— Les vecteurs supports :
> [Link]$index
## [1] 6 14 12
1.00
● ●
●
●
●
●
0.75
●
●
●
Y
X1
0.50 ● 0
● ●
● 1
0.25 ●
● ●
0.00
0.00 0.25 0.50 0.75
X2
24
— La fonction plot donne aussi une représentation de l’hyperplan séparateur.
> plot([Link],data=df,fill=TRUE,grid=500)
0.8 o
1
o
0.6
x
o
o
X1
x o
0.4 o
o
o
0
o
0.2
o
x o
0.2 0.4 0.6 0.8
X2
Problème
Dans la vraie vie, les données ne sont (quasiment) jamais linéairement séparables...
25
hw, xi + b = 0
1
M = kwk
marge
Idée
M = 1 Autoriser certains points
kwk
1. à être bien classés mais à l’intérieur de la
hw, xi + b = 0
marge ;
2. et/ou à être mal classés.
1
M = kwk
marge
1
M = kwk
Slack variables
— Les contraintes yi (wt xi + b) ≥ 1 signifient que tous les points se trouvent en dehors de la frontière définie par
la marge ;
— Cas non séparable : le problème ci-dessus n’admet pas de solution !
Variables ressorts
On introduit des variables ressorts (slack variables) positives ξ1 , . . . , ξn telles que yi (wt xi + b) ≥ 1 − ξi . 2 cas sont
à distinguer :
1. ξi ∈ [0, 1] =⇒ bien classé mais dans la région définie par la marge ;
2. ξi > 1 =⇒ mal classé.
26
— Il s’agit de minimiser en (w, b, ξ)
n
1 X
kwk2 +C ξi
2 i=1
yi (wt xi + b) ≥ 1−ξi
sous les contraintes
ξi ≥ 0, i = 1, . . . , n.
— C > 0 est un paramètre à calibrer (paramètre de coût).
— Le cas séparable correspond à C → ∞.
— Les solutions de ce nouveau problème d’optimisation s’obtiennent de la même façon que dans le cas séparable
(Lagrangien, problème dual...).
— L’hyperplan optimal est défini par
Xn
w? = αi? yi xi
i=1
et b? est solution de yi (hw? , xi i + b? ) = 1 pour tout i tel que 0 < αi? < C.
Vecteurs supports
— Les xi tels que αi? > 0 sont les vecteurs supports ;
— On en distingue 2 types :
1. ceux sur la frontière définie par la marge : ξi? = 0 ;
2. ceux en dehors : ξi? > 0 et αi? = C.
— Les vecteurs non supports vérifient αi? = 0 et ξi? = 0.
hw? , xi + b? = 0
ξ1?
ξ3? 1
M =
ξ2? kw? k
ξ5?
marge
1
M = kw? k
Le coin R
— On utilise la même fonction que dans le cas séparable (svm du package e1071) ;
— L’argument cost correspond à la constante de régularisation C.
1.00
●
0.75
●
● Y
X1
0.50 ● 0
1
●
0.25 ●
● ●
0.00
0.00 0.25 0.50 0.75
X2
27
> mod.svm1 <- svm(Y~.,data=df1,kernel="linear",cost=1000)
> mod.svm1$index
## [1] 6 13 14 10 12 15
> plot(mod.svm1,data=df1,fill=TRUE,grid=500)
0.8 o
1
x
0.6
x
o
o
X1
x x
0.4 o
o
o
0
o
0.2
x
x o
0.2 0.4 0.6 0.8
X2
Choix de C
Conclusion
Il est donc très important de bien choisir ce paramètre.
— La fonction [Link] permet de choisir C en estimant le taux de mal classés par validation croisée. On peut
aussi (bien entendu) utiliser la fonction train du package caret.
Un exemple
28
1.00 ●
● ● ● ● ●
●
● ●
● ●
● ● ●●
●● ● ● ● ●● ● ● ●
●● ●●● ● ● ● ● ● ● ●● ● ● ● ●
●
● ● ● ● ●
● ●
● ● ● ●
●● ● ● ●● ●
● ●● ● ● ● ●
●● ● ● ●
● ● ●● ●
● ●
●● ● ●
● ●● ● ●
● ● ● ●●
●
● ●● ● ● ● ●● ●●
● ● ● ● ● ● ● ●●
● ● ●
● ●
● ● ● ●
● ● ●
● ● ● ●● ● ●● ●
● ● ●
● ● ●● ● ● ●
● ● ● ● ● ● ●● ●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ●● ● ●
●
● ● ● ● ● ● ●●●
● ● ● ● ● ● ●
●
● ● ● ●● ● ●●
●
● ● ● ●
● ● ● ●● ● ● ● ● ●
● ●
●
● ● ● ●● ●
● ● ● ●
● ● ● ●● ● ●
●● ● ● ● ●● ● ●
● ●● ● ● ● ● ● ● ●
●
● ●
0.75 ●
●
● ●●●● ●
● ● ●
●
● ● ● ●● ● ● ●
●
● ● ● ● ● ●●
● ●
●
● ● ● ●● ●
● ● ● ●
● ● ● ● ●
● ● ●
●
● ●● ● ●
● ● ● ● ● ●
● ●
● ● ● ●● ● ●● ●
●● ● ● ● ● ● ●
● ●
● ●● ●
●● ● ●● ●● ●
● ● ● ● ●
● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ●
● ● ● ● ●● ● ● ●● ● ● ●
●● ● ● ●
● ● ●● ● ● ●
●
●
● ● ● ●● ● ● ● ● ●● ● ●●
● ● ● ● ●
● ● ● ● ● ●
● ●
● ● ● ● ●● ●
●●● ● ● ● ● ● ●● ● ● ● ●
● ●● ●
● ● ● ●
●● ●
● ●
● ● ●
● ● ●●
● ●● ● ● ●●
●
● ● ●
●
Y
● ● ● ●
● ● ● ● ● ● ● ●
● ●● ● ● ● ● ●●
V1
● ● ● ●● ● ● ● ● ●
● ●● ● ● 0
0.50 ●● ● ● ●
● ● ● ●
●
●
●
● ● ● ● ●● ●
●● ● ● ●●
●●● ● ● ●
●● ● ● ● ● ● ●
●
● ● 1
● ● ●
● ● ●● ● ● ● ●
● ●
●● ● ● ●
● ● ● ● ●
● ●● ● ●
● ● ● ● ● ●● ●
● ●
● ●
● ● ●● ● ●
● ● ● ● ● ●●
● ● ● ● ● ● ● ● ● ●
● ● ●
● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ●
● ● ● ●
●●
● ●
● ● ● ● ● ●● ●
● ● ●● ● ● ●
● ● ● ● ●
● ●● ● ●●
● ● ● ● ● ●●
● ●
● ●●● ● ● ● ● ● ● ●● ●●●
● ●
● ● ●
● ● ● ● ●
● ●
●● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ●
● ●
● ●● ●
● ●● ● ●● ●
● ●
●
●
●
● ● ●● ● ●
● ●● ●
0.25 ●● ●●
● ●
●
● ●
●
●● ● ● ● ● ●
● ● ● ● ● ● ●
●● ● ●● ● ● ● ●
● ● ●
● ● ● ● ● ● ●
● ● ● ●
● ● ● ●● ● ●●● ● ● ●●
● ● ● ● ● ●● ● ● ● ● ● ● ●
● ● ● ● ● ●
● ● ● ● ●
● ● ● ●
● ● ● ● ●
● ● ●
● ● ● ● ● ●
●
●● ●● ● ● ● ●● ● ●
● ● ● ● ● ● ● ●
● ●● ● ● ●● ●● ● ● ● ● ●
●● ● ● ●● ● ●
● ●●● ● ● ●● ● ●
● ● ● ●
●
● ● ● ● ● ●●
● ●●● ● ● ● ● ● ●
●
● ●● ● ● ●
● ●● ● ● ● ● ●
● ●
●● ● ● ● ● ● ● ● ●
●
● ●● ● ●●
● ● ● ●● ● ● ● ●
●
● ● ● ● ● ●● ● ● ●
● ● ● ● ● ●●
0.00 ● ●
1
o x x xxx xx x x xx o o x xxx xx x x oo o o x xxx xx x x oo
x x x x xx x xxx xx x o o o o oo o ooo xx o o o o o oo o ooo xx o
x x x xx x xxx x x x xxx x xx x xx x x o o o ox x xxx x x x xxx x xx x oo o o o o o ox o xxx x x x xxx x xx x oo o o
xxxx xxx x xx x xx xx x x x x ooxo xoo o oo x xx xx x x x o ooxo xoo o oo x xx xx x x x o
x xx xx o oo ox o oo ox
x xx xxx x x xx x x xxx xxxx xxxx x xx x x x xx x x x o oo oooo o oo o o ooox oooo xxxx x xx x x x xx x o o o oo oooo o oo o o ooox oooo ooxx x xx x x x xx o o o
x
x x x x x x x xx x x o
o o o x x x x xx o o o
o o o x x x x oo o o
0.6 x x x x xxxx x xx x x x x xx x x xx 0.6 o oo o oooo oo o ooo oox xx x x x x xxx x xx x oo oo 0.6 o oo o oooo oo o ooo ooooo x x x x xxx xox o oo oo
xx x x xx x x x x xxx x x x x xxx x x x xxx xxx oo x o o x
x x x x x oo o o oo x o o x
x x x x x oo o o
xx x x x xxxx x x oo o x x x oooo o o oo o x x o oooo o o
x x x xxx xxx x x x x x x xx o o o oox oxo x x x o x o oo o o o oox oxo x x x o x o oo
x xxx xx x x x x xx xx x x x xx xxx x x xxxxx x o ooo ox o x x x xx xx x x x oo ooo o ooooxo o o ooo ox o o o x xx xx x x o oo ooo o ooooxo o
V1
V1
V1
xx xxx xxx x x x x x xxx x x xxx xx x xx x x oo oxo ooo o o o x x xxx x x xxx xx x oo o o oo oxo ooo o o o x x xxx x x xxx xx o oo o o
xx x xx x x x x xx xx x xx oo o oo o x x x xx oo o oo oo o oo o o x x ox oo o oo
x x xxxxxxx xx x x x o o ooooooo oo x o o o o ooooooo oo x o o
x xx x xxx xx xx xx x x x x x
xxxx xxx xxx o oo o xxx xx xx xx x x x x o
oooo oxx ooo o oo o oxx xx xx xx x x x x o
oooo oxx ooo
0.4 xxx x xx x x 0.4 ooo x xx o o 0.4 ooo x xo o o
x x xx xx x x x x xxxx xx xx x x x o o oo xx x x x x xxxx xx xo o o x o o oo oo x x x x xxxx xx xo o o x
x x x x xxx x x x xx x x o o o x xxx o o o ooo o o o o x xxx o o o ooo o
x x x xx xx x xxx x x x x xx xxx x x xx x x o o ooo xx x xxx x x x o oo ooo o o oo o o o o ooo xx x xxx x x o o oo ooo o o oo o o
xxxx xx x xx x xx x x x xx x x xx x x x x oooo ox x xx x xx x o o oo o o oo o o o o oooo ox x xx x xx x o o oo o o oo o o o o
x x x x xxxx xxx x x x x xxxxx x x x x x xxx x x x o ox x x xxxx xxx x x x x xooxo o o o o o ooo o o o o ox o o xxxx xxx x x xooooooo o o o o o ooo o o o
x xx xx x x xxx x xxxx x x x oo oo o o ooo o xooo o o o oo oo o o ooo o xooo o o
xxx xx x x xx xx xx x o oo xo xx x o oo xo
0
ooo
0
ooo
0
x x x o x o
xxxxxx x x x xx xx x x x x x x
x xx x x
xx
x oooooo x x x xx xx x x o o o o
o oo o o o oooooo o x x xx xx x x o o o o
o oo o o o
0.2 x xxx xxx xx x x xxx x x xxx xx x xx x xx xx xxxx 0.2 o xxx xxx xx x x xxx x o ooo ooo oo o oo oxoooo o ooo 0.2 o xxx xxx xx x x xxx x o ooo ooo oo o oo oxoooo o ooo
x x x xx xx x x x x x x x x x xx oo o o o o x x x xx oo o o o o
x x xx x x x x o o oo o o o o o o oo o o o o
x xx x xx xx x xxxxx x xx x xx x xx x xx x xx xx x ooooo o oo x oo o oo x xx x xx xx x ooooo o oo x oo o oo
x xx x xxx xx xxxx xx x xx xxx xx x x xx xxx x xx x xxx xx xooo oo o oo xooo oo x o oo ooo x xx x xxx oo xooo oo o oo xooo oo x o oo ooo
x xxxx x xx xx xx xx x x x xx x x xx x xxxx x oo oo oo oo o o o oo o o oo x xxxx o oo oo oo oo o o o oo o o oo
x x x x x x x x x x x x x o x o o o o o o oo x o o x o o o o o o oo
xxx x xxx xxxx x x x xxx xx x
x
xx x x xxxx xxx x xxx oooo o o o ooo xo o oo o o oooo xxx x xxx oooo o o o ooo xo o oo o o oooo
x x x x x xx x x x x x o o o oo o o o x x o o o oo o o o
xx xx xx x x xo oo oo o o xo oo oo o o
0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8
V2 V2 V2
> mod.svm1$nSV
## [1] 480 480
> mod.svm2$nSV
## [1] 190 190
> mod.svm3$nSV
## [1] 166 165
Un autre exemple
— n = 1000 observations.
1.00 ● ●●
●● ● ● ●
●●
●● ● ● ● ● ●
●
●
● ●●● ● ● ●● ●
●● ● ● ●
● ● ● ●
●● ● ● ●
●
● ● ● ●
● ● ● ●
● ●
●●● ● ● ● ●●
● ● ● ● ● ● ● ● ●
● ● ● ● ●● ● ● ● ● ● ● ● ●●
● ●
● ● ●
● ● ● ● ●●
● ●
●● ● ● ●●
● ● ● ●●
● ● ●
● ● ● ●
● ●
●
● ●
● ●
● ● ● ● ●
● ● ●
● ●
● ●
● ● ●
●
0.75 ●
● ● ●
●
● ●
● ●
●
● ● ●
● ● ●
● ● ● ● ●
● ●
● ● ● ●
● ●
● ● ●
●
● ● ● ●
●● ● ●
● ●
● ● ●
● ● ● ●
● ● ●
● ●
● ● ● ●
●
● ●
● ● ●
● ●
● Y
● ● ●
●
● ●
X2
0.50 ● ● ● ● ● ● 0
● ● ● ●
● ●
● ●
● ● ● 1
● ● ● ● ● ● ●
● ●● ●
● ●
● ●
● ● ● ● ● ●
● ● ●
● ● ●
● ● ●● ● ●
● ●
●
● ●● ● ●
● ●
● ●
● ● ● ● ●
● ● ● ●
●
● ●
● ● ●
● ● ● ● ●●
● ●
● ●
0.25 ● ● ● ●
● ●
●
● ● ● ●
● ● ●
● ●
● ● ●
● ●
● ●● ● ●
● ● ●
● ● ●
● ● ● ● ●
● ●
●●
● ● ● ●
● ● ● ●
● ●
● ● ● ● ●
●
●● ● ●●
● ● ●
● ● ●
● ● ● ● ●
● ● ●
● ● ● ●
● ● ● ●
● ● ●●
● ●
0.00
29
> model1 <- svm(Y~.,data=donnees,cost=0.001,kernel="radial",gamma=5)
> model2 <- svm(Y~.,data=donnees,cost=1,kernel="radial",gamma=5)
> model3 <- svm(Y~.,data=donnees,cost=100000,kernel="radial",gamma=5)
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00
> library(caret)
> gr <- [Link](C=c(0.001,0.01,1,10,100,1000))
> ctrl <- trainControl(method="repeatedcv",number=10,repeats=5)
> train(Y~.,data=df3,method="svmLinear",trControl=ctrl,tuneGrid=gr)
30
## Support Vector Machines with Linear Kernel
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 5 times)
## Summary of sample sizes: 900, 900, 900, 900, 900, 900, ...
## Resampling results across tuning parameters:
## C Accuracy Kappa
## 1e-03 0.8700 0.7377051
## 1e-02 0.9188 0.8369121
## 1e+00 0.9304 0.8604317
## 1e+01 0.9292 0.8580356
## 1e+02 0.9294 0.8584333
## 1e+03 0.9294 0.8584333
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was C = 1.
0.75
X1^2
0.50
1.0
0.25
●
● ●●
0.5
●
● ●
● 0.00 ●● ● ●● ●●
0.0 ●● ● ●
●
1.00
● ● ●
●
−0.5
0.75
−1.0
0.50
0.25
●
● ●●
●
●
0.00 ●● ●● ●● ●●
Idée
Trouver une transformation des données telle que les données transformées soient linéairement séparables.
Noyau
Définition 3.1. Soit Φ : X → H une application qui va de l’espace des observations X dans un Hilbert H. Le
noyau K entre x et x0 associé à Φ est le produit scalaire entre Φ(x) et Φ(x0 ) :
K :X ×X →R
(x, x0 ) 7→ hΦ(x), Φ(x0 )iH .
Exemple
31
Si X = H = R2 et ϕ(x1 , x2 ) = (x21 , x22 ) alors
K(x, x0 ) = (x1 x01 )2 + (x2 x02 )2 .
L’astuce noyau
— L’astuce consiste donc à envoyer les observations xi dans un espace de Hilbert H appelé espace de représen-
tation ou feature space...
— en espérant que les données (Φ(x1 ), y1 ), . . . , (Φ(xn ), yn ) soient (presque) linéairement séparables de manière
à appliquer une svm sur ces données transformées.
Remarque 3.1. 1. Beaucoup d’algorithmes linéaires (en particulier les SVM) peuvent être appliqués sur Φ(x)
sans calculer explicitement Φ ! Il suffit de pouvoir calculer le noyau K(x, x0 ) ;
2. On n’a pas besoin de connaitre l’espace H ni l’application Φ, il suffit de se donner un noyau K !
32
Conclusion
Questions
Qu’est-ce qu’un noyau ? Comment construire un noyau ?
Théorème 3.1 ([Aronszajn, 1950]). Une fonction K : X × X → R est un noyau si et seulement si elle est
(symétrique) définie positive, c’est-à-dire ssi
1. K(x, x0 ) = K(x0 , x) ∀(x, x0 ) ∈ X 2 ;
2. ∀(x1 , . . . , xN ) ∈ X N et ∀(a1 , . . . , aN ) ∈ RN
N X
X N
ai aj K(xi , xj ) ≥ 0.
i=1 j=1
Exemple
1.00
1.0
0.75
0.5
● ●
●
X1^2
● ● 0.50
X1
0.0 ●● ● ●
● ● ●
●
0.25
−0.5
●
● ●●
●
●
−1.0 0.00 ●● ●● ●● ●●
−1.0 −0.5 0.0 0.5 1.0 0.00 0.25 0.50 0.75 1.00
X2 X2^2
— Si
Φ: R2 → R3
√
(x1 , x2 ) 7→ (x21 , 2x1 x2 , x22 )
Exemples de noyau
Remarque
N’importe quelle fonction définie positive fait l’affaire... Possibilité de construire des noyaux (et donc de faire des
svm) sur des objets plus complexes (courbes, images, séquences de lettres...).
Le coin R - exemple 1
33
> svm(Y~.,data=donnees,cost=1,kernel="linear")
> svm(Y~.,data=donnees,cost=1,kernel="polynomial",degree=2)
> svm(Y~.,data=donnees,cost=1,kernel="radial",gamma=1)
o o o o o o
x o o
x o x o x o
o o o
1
x x o x x o
x x x x x o
x x o x o x
x x o x x x x o o
x x x o x o o o x
x o o
X1
X1
X1
0.0 xx x x 0.0 xx o o 0.0 xo o o
x x x
x o o
x x x x o x x x x o x x x x o
x x o x x x
o x o
x o o
0
0
−0.5 x x −0.5 x o −0.5 o o
x x o x o x
x x x
o x o
x o o o o o
o o o
−0.5 0.0 0.5 −0.5 0.0 0.5 −0.5 0.0 0.5
X2 X2 X2
Le coin R - exemple 2
> svm(Y~.,data=donnees,kernel="linear",cost=1)
> svm(Y~.,data=donnees,kernel="polynomial",degree=2,cost=1)
2 o x x o oo
●
1.5 xx xx x
x 1.5 oo o
o
oo
x x o o
xx oo
●
● o x xxx xx o o ooo oo
x xxxx xx x o oooo oo o
●● ●
ooxx x x x x oooo o o o o
●
●
●● x xxx xx x x x x x x x xx o ooo oo o o o o o o o oo
1.0 xx 1.0 oo
1
1
●● x x x x xx x xxx x x x xx
o o o o oo o
o oo o o o oo
●
●●
● ● ● ●
x x x xx x x x
x xx x o o o oo o o x
o oo o
● ● ● ● xx xx x oo xx o
1 ●●
● ● ●● xx x x oo x o
● ● ●●
● ● ● ● x o
● 0.5 x o 0.5 x o
● ●● ● ● x x
●● ● x o
● xx xx
X1
X1
●
0.0 0.0
●●
X1
x x x x
0
x x x x
−0.5 x x x x −0.5 o o o o
● x x x x x o
x x x xx x o o o oo o
x x x o oo o
x xx
0
0
● xx x x x oo o x o
x x x x x o o o o o
● ● x x x o o o
● −1.0
xx xx xx xx xx x x −1.0
oo oo oo oo ooo o
● ● ● x xxx xx x x x xx x x o ooo oo o o o xx o o
x x xx xx o o oo oo
●
●
● o x x x x x o oo o
● ● x x x xx x
xxx o o o oo o
ooo
x x xxxx o o oooo
−1 ●
● ● x xx xx o oo oo
● ● ●
● ● ●●●● ● ● ● o x x o o o
● ●
●●●●
● −1.5 x x −1.5 o o
● ● ● ● ● ●
●● ●
●●
●
xx oo
●
●
● −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5
−1 0 1 X2 X2
X2
Le package kernlab
> library(kernlab)
> [Link] <- ksvm(Y~.,data=donnees,kernel="polydot",
+ kpar=list(degree=2),C=0.001)
> plot([Link])
1.0
●
1.5 ● ●
● ●
●
●
● ● ●
● ●
●
1.0 ●● ● ●
● ● 0.5
● ●
●●
●● ●
●● ●
● ●
● ● ●
●● ● ●
●
● ●
●● ●
0.5 ●
● ●
●
●
0.0
X1
0.0
−0.5 ●
● ●●
● ● ● −0.5
● ● ● ●
● ●● ● ●
● ● ●
●
● ●●●
● ●●
−1.0 ● ● ●●
●
●
● ● ●
● ● ●
● ●● ●
● ●
● ●
● −1.0
−1.5
X2
34
Troisième partie
Arbres
Présentation
— Les arbres sont des algorithmes de prédiction qui fonctionnent en régression et en discrimination.
— Nous nous focalisons dans cette partie sur la méthode CART [Breiman et al., 1984] qui est la plus utilisée.
La méthode CHAID est proposée en annexe.
1 Arbres binaires
Notations
— Y peut admettre un nombre quelconque de modalités et les variables X1 , . . . , Xp peuvent être qualitatives
et/ou quantitatives.
— Néanmoins, pour simplifier on se place dans un premier temps en discrimination binaire : Y admet 2 modalités
(-1 ou 1). On suppose de plus que l’on a simplement 2 variables explicatives quantitatives.
Définitions
Arbre binaire
Un arbre binaire de décision CART est
— un algorithme de moyennage local par partition (moyenne ou vote à la majorité sur les éléments de la
partition),
— dont la partition est construite par divisions successives au moyen d’hyperplans orthogonaux aux axes de Rp ,
dépendant des données (Xi , Yi ).
35
Arbres binaires
— La méthode CART propose de construire une partition basée sur des divisions successives parallèles aux axes.
— 2 exemples de partition :
— A chaque étape, la méthode cherche une nouvelle division : une variable et un seuil de coupure.
s1
36
s2
s1
s2
s1 s3
s2
s4
s1 s3
Représentation de l’arbre
s2 X1 < s 1 X1 ≥ s1
X 2 ≥ s2 X2 < s 2
X1 < s 3 X 1 ≥ s3
s4
X2 < s 4 X 2 ≥ s4
s1 s3
37
s2 X1 < s 1 X1 ≥ s1
X 2 ≥ s2 X2 < s 2
X1 < s 3 X 1 ≥ s3
s4
X2 < s 4 X 2 ≥ s4
s1 s3
Règle de classification
On effectue un vote à la majorité dans les nœuds terminaux de l’arbre.
Définitions
Définition
— Les éléments de la partition d’un arbre sont appelés les nœuds terminaux ou les feuilles de l’arbre.
— L’ensemble Rp constitue le nœud racine.
— Chaque division définit deux nœuds, les nœuds fils à gauche et à droite.
Questions
1. Comment choisir les découpes ?
2. Faut-il stopper les découpes ? Si oui, quand ?
— A chaque étape, on cherche un couple (j, s) qui split un noeud N en deux nœuds fils :
— La sélection du couple (j, s) s’effectue en optimisant un critère qui mesure l’(im)pureté ou l’hétérogénité des
deux nœuds fils.
Critère de découpe
L’idée
Une fois I définie, on choisira le couple (j, s) qui maximise le gain d’impureté :
∆(I) = P(N )I(N ) − (P(N1 )I(N1 (j, s)) + P(N2 )I(N2 (j, s))
38
2.1 Cas de la régression
— Une mesure naturelle de l’impureté d’un nœud N en régression est la variance du nœud :
1 X
I(N ) = (Yi − ȲN )2 ,
|N |
i:Xi ∈N
Découpe en régression
A chaque étape, on choisit le couple (j, s) qui minimise
X X
(Yi − Ȳ1 )2 + (Yi − Ȳ2 )2
Xi ∈N1 (j,s) Xi ∈N2 (j,s)
1
P
où Ȳk = |Nk (j,s)| Xi ∈Nk (j,s) Yi , k = 1, 2.
Exemple
2.5
2.5
2.0
2.0
1.5
1.5
1.0
1.0
0.5
0.5
0.0
0.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
2.5
2.5
2.0
2.0
1.5
1.5
1.0
1.0
0.5
0.5
0.0
0.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
2.5
2.5
2.0
2.0
1.5
1.0
1.0
0.81
0.5
0.5
0.0
0.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
Sélection
On choisira le seuil de droite.
39
2.2 Cas de la classification supervisée
— On se place ici dans le cas binaire, Y dans {0, 1} (voir Annexe pour le cas multiclasse).
— Un nœud est pur si
— il contient beaucoup de 0 et peu de 1 (ou l’inverse) ;
— la proportion de 1 est proche de 1 (ou de 0).
Impureté de Gini
I(N ) = 2p(N )(1 − p(N ))
où p(N ) représente la proportion de 1 dans N .
Exemple
I(N ) = 0.4872
1.00 1.00
● ●
● ●
● ●
● ● ● ●
●
● ●
●
0.75 0.75
● ●
● ●
● ●
● ●
Y Y
0.50 ● ● 0 0.50 ● ● 0
1 1
● ●
● ●
● ● ● ●
● ●
● ● ● ●
● ●
● ●
0.25 0.25
● ● ● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.00 0.00
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00
1.00 1.00
● ●
● ●
● ●
● ● ● ●
●
● ●
●
0.75 0.75
● ●
● ●
● ●
● ●
Y Y
0.50 ● ● 0 0.50 ● ● 0
1 1
● ●
● ●
● ● ● ●
● ●
● ● ● ●
● ●
● ●
0.25 0.25
● ● ● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.00 0.00
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00
Conclusion
On choisira la découpe de gauche.
3 Elagage
Questions
40
1.00 ● ● ●
● ●
● ●
● ● ●
● ● ● ● ●
● ●
● ● ● ●
●
●
● ●● ● ● ● ●
● ● ●
● ● ● ● ●● ● ●
● ●
● ●
● ● ●●
● ● ● ●
● ● ● ● ●
● ●
● ● ● ● ●●
● ● ● ● ●
● ● ●● ●
●
●
●
●
0.75 ● ●
● ●
●
●
● ●
●
● ●
●
●
Y
0.50 ● 0
● 1
●
● ●
●
● ● ●
● ●
● ● ●
●
● ● ●
● ●
●
● ● ●
●●● ●
●
● ●
●● ● ●
0.25 ● ● ● ●
● ● ●
●
● ● ●
●
● ●
● ● ●
● ● ● ● ●
● ●
● ●
● ●● ●
● ● ●● ● ●
● ●
● ●
● ● ●
● ●
● ● ● ●
● ●● ● ●
● ● ●
● ● ●● ●
● ● ● ●●
● ●
●
● ● ● ● ●
●
0.00
X2 >= 0.78
X2 < 0.4
X2 >= 0.32 X2 < 0.42 X1 < 0.42 X1 < 0.038 X2 >= 0.18 X1 >= 0.49
X1 >= 0.66 X1 < 0.77 0 0 0 X1 >= 0.2
X1 < 0.66 1 X1 >= 0.95 1 1 1 X1 < 0.12 X2 < 0.43 X2 >= 0.59
0 0 0 X2 >= 0.42 X2 >= 0.8 X1 >= 0.028 X2 < 0.2 X1 < 0.2 X1 < 0.49
1 X1 < 0.8 1 X1 >= 0.35 1 X1 < 0.038 1 X1 >= 0.21 1 X2 < 0.31 1
0 X1 < 0.96 0 X2 < 0.92 0 0 X2 < 0.1 0 X2 >= 0.37 0 X2 < 0.62
1 1 X2 >= 0.23 1 1 1 1 1
0 X1 < 0.36 0 X1 < 0.058 0 X1 < 0.1 0 X1 < 0.55
1 1 1
0 0 X2 < 0.61
1
0
Un exemple en discrimination
Arbre optimal ?
Intuitivement, on a envie de faire à peu près 5 classes.
Arbre « maximal »
> library(rpart)
> library([Link])
> arbre1 <- rpart(Y~.,data=donnees[1:350,],cp=0.0001,minsplit=2)
> prp(arbre1)
— On compare les performances des deux arbres en estimant leur probabilité de mauvais classement sur un
échantillon test :
41
yes X1 >= 0.64 no
0 1 0 1
Conclusion
La performance n’augmente pas forcément avec la profondeur.
Train error
Test error
OVERFITTING
Complexity (λ)
Remarque
La complexité d’un arbre est mesurée par sa taille ou profondeur.
Biais et variance
La profondeur régule le compromis biais/variance :
1. Peu de découpes (arbres peu profonds) =⇒ arbres stables =⇒ peu de variance... mais... beaucoup de biais.
42
2. Beaucoup de découpes (arbres profonds) =⇒ arbres instables =⇒ peu de biais... mais... beaucoup de variance
(surapprentissage).
Tmax = T0 ⊃ T1 ⊃ . . . ⊃ TK .
Sorties printcp
43
1
0.59
100%
yes X1 >= 0.57 no
0 1
0.36 0.76
42% 58%
X2 < 0.37 X2 >= 0.8
1 0
0.56 0.34
25% 12%
X2 >= 0.77 X1 >= 0.22
0 0 1 0 1 1
0.07 0.09 0.80 0.10 0.81 0.88
17% 9% 16% 8% 4% 45%
— Règle de classification :
P P
1 si i:Xi ∈N (x) 1Yi =1 ≥ i:Xi ∈N (x) 1Yi =0
ĝ(x) =
0 sinon,
— Score :
1 X
Ŝ(x) = P̂(Y = 1|X = x) = 1Yi =1 .
n
i:Xi ∈N (x)
Fonction predict
Bilan
— Un inconvénient : méthode connue pour être instable, sensible à de légères perturbations de l’échantillon.
— Cet inconvénient sera un avantage pour des agrégations bootstrap =⇒ forêts aléatoires.
44
4 Annexe 1 : impureté, cas multiclasses
— Les Yi , i = 1, . . . , n sont à valeurs dans {1, . . . , K}.
— grande sinon.
Impureté
L’impureté d’un nœud N en classification se mesure selon
K
X
I(N ) = f (pj (N ))
j=1
où
— pj (N ) représente la proportion d’observations de la classe j dans le nœud N .
— f est une fonction (concave) [0, 1] → R+ telle que f (0) = f (1) = 0.
Exemples de fonctions f
— Si N est pur, on veut I(N ) = 0 =⇒ c’est pourquoi f doit vérifier f (0) = f (1) = 0.
Cas binaire
Dans ce cas on a
1. I(N ) = 2p(1 − p) pour Gini
2. I(N ) = −p log p − (1 − p) log(1 − p) pour Information
où p désigne la proportion de 1 (ou -1) dans N .
0.6
0.4
indice
impurete
gini
information
0.2
0.0
45
Découpe en classification supervisée
Choix de (j, s)
Pour une mesure d’impureté I donnée, on choisira le couple (j, s) qui maximise le gain d’impureté :
∆(I) = P(N )I(N ) − (P(N1 )I(N1 (j, s)) + P(N2 )I(N2 (j, s)).
— Classification binaire :
1 X
R(N ) = 1Yi 6=YN .
|N |
i:Xi ∈N
Définition
Soit α > 0, on pose
|T |
X
Cα (T ) = Nm R(Nm ) + α|T |.
m=1
Idée
— Cα (T ) est un critère qui prend en compte l’adéquation d’un arbre et sa complexité.
— L’idée est de chercher un arbre Tα qui minimise Cα (T ) pour une valeur de α bien choisie.
Remarque
— α = 0 =⇒ Tα = T0 = Tmax .
— α = +∞ =⇒ Tα = T+∞ =arbre sans coupure.
— α est appelé paramètre de complexité et Cα (T ) le cout de l’arbre T .
Théorème 5.1 ([Breiman et al., 1984]). Il existe une sous-suite finie α0 = 0 < α1 < . . . < αM avec M < |Tmax |
et une suite associée d’arbres emboités
Tmax = T0 ⊃ T1 ⊃ . . . ⊃ TM
telles que ∀α ∈ [αm , αm+1 [
Tm = argmin Cα (T ).
T
T0 T1 TM
α0 = 0 α1 α2 .......... αM
Conséquences
— On se ramène à une sous-suite finie d’arbres (emboités).
— Il reste à choisir un arbre (ou une valeur de α).
46
Exemple
> printcp(arbre)
Classification tree:
rpart(formula = Y ~ ., data = donnees, cp = 1e-04, minsplit = 2)
Variables actually used in tree construction:
[1] X1 X2
Root node error: 204/500 = 0.408
n= 500
CP nsplit rel error xerror xstd
1 0.2941176 0 1.000000 1.00000 0.053870
2 0.1225490 1 0.705882 0.71569 0.049838
3 0.0931373 3 0.460784 0.49020 0.043844
4 0.0637255 4 0.367647 0.43627 0.041928
5 0.0122549 5 0.303922 0.34314 0.038034
6 0.0098039 7 0.279412 0.34314 0.038034
7 0.0049020 9 0.259804 0.36275 0.038923
8 0.0040107 25 0.181373 0.34804 0.038260
9 0.0036765 41 0.112745 0.39216 0.040184
10 0.0032680 49 0.083333 0.40196 0.040586
11 0.0024510 52 0.073529 0.41176 0.040980
12 0.0001000 82 0.000000 0.43137 0.041742
X2 >= 0.8
X2 < 0.37
X1 >= 0.6 0 0 0 X2 >= 0.95 X2 < 0.94 X1 >= 0.015 X2 < 0.62
X1 < 0.59 1 X1 < 0.59 X2 < 0.95 1 X1 >= 0.079 1 1 X1 >= 0.54 X1 >= 0.55
0 X2 >= 0.77 X1 >= 0.22 X2 < 0.017
X2 < 0.3 X1 >= 0.66 X1 >= 0.66 0 X1 < 0.35 0 X2 >= 0.027 X2 < 0.19 0 X1 >= 0.2
X2 >= 0.32 1 X1 < 0.64 1 X2 < 0.42 1 1 1 1 X1 >= 0.54 X1 < 0.3 X2 < 0.43 1
X1 >= 0.66 0 0 X1 < 0.8 X1 >= 0.58 0 0 0 X2 < 0.07 0 X1 < 0.56 0 X1 < 0.55
0 X2 < 0.4 0 1 0 1
X1 < 0.66 1 1 X1 >= 0.95 1 1 X1 >= 0.16 X2 >= 0.23 1 X2 >= 0.78 1 1
0 1 0 1
1 1 X2 < 0.1 X1 >= 0.41 1 1 1
X2 >= 0.26 1 1 1 1
1 1 1
0 X2 >= 0.074 0
Tmax = T0 ⊃ T1 ⊃ . . . ⊃ TM
47
Elagage/pruning - Algorithme
Algorithme
1. Calculer la suite α0 = 0 < α1 < . . . < αM et poser
√ √
β1 = 0, β2 = α1 α2 , β3 = α2 α3 , ..., βM +1 = ∞.
size of tree
1 2 4 5 6 8 10 26 42 50 53 83
1.0
●
X−val Relative Error
0.8
●
0.6
● ●
0.4
● ●
●
●
● ● ●
0.2
cp
0 1 0 1
48
6 Annexe 3 : arbres Chaid
— CHAID : Chi2 Automatic Interaction Detection [Kass, 1980].
χ2 d’indépendance : rappel
— Soient X et Y deux variables aléatoires à valeurs dans E et F . On souhaite tester au niveau α les hypothèses
H0 : "X et Y sont indépendantes" contre H1 : "X et Y ne sont pas indépendantes".
— On se donne (E1 , . . . , EI ) et (F1 , . . . , FJ ) deux partitions de E et F .
— On dispose de n mesures du couple (X, Y ) et on désigne par Nij l’effectif observé dans la classe Ei × Fj .
Le test
Propriété
Sous H0 la statistique
I X
J NI• N•J
2
X
n − Nij
Xn = NI• N•J
i=1 j=1 n
Conséquence
— Au niveau α, on rejettera l’hypothèse H0 si Xobs est supérieure au quantile d’ordre 1−α de la loi du χ2(I−1)(J−1) .
— Une forte valeur de Xobs (ou une faible valeur de la probabilité critique) signifiera un lien fort entre les deux
variables.
Chaid : le principe
— On suppose dans un premier temps que toutes les variables explicatives Xj , j = 1, . . . , p sont qualitatives à
Mj modalités.
49
6.1 Regroupement des modalités
1. On se place dans un nœud N et on considère une variable Xj à Mj modalités ;
2. Les observations dans le nœud définissent la table de contingence suivante
M1 . . . Mj
1
..
.
K
3. ∀(Mi , M` ) ∈ {M1 , . . . , Mj } , on calcule la statistique du χ2 croisant Y et les modalités (Mi , M` ) =⇒
2
5. Si p(M̃i , M̃` ) > α2 (α2 ∈]0, 1[ fixé par l’utilisateur) alors on regroupe les modalités M̃i et M̃` et on retourne
à l’étape 2 avec le tableau à Mj − 1 modalités
M1 . . . Mj − 1
1
..
.
K
Sinon, on stoppe les regroupements.
Exemple
Exemple de regroupement
Les modalités divorced et never married sont regroupées (si α2 < 0.742).
— En effet
> ctrl <- chaid_control(minsplit = 20,alpha2=0.74)
> a1 <- chaid(vote3~marstat,data=USvoteS,control = ctrl)
> plot(a1)
50
1
marstat
married widowed
divorced, never married
Gore
Gore
0.8 0.8 0.8
Bush
Bush
0 0 0
1
marstat
Gore
Gore
Gore
Bush
Bush
Bush
0 0 0 0
— Variables ordinale : le traitement est identique. Seules les modalités contiguës peuvent être regroupées.
— Variables continues : traitées comme des variables ordinales. Penser à utiliser [Link] sur R.
— La phase regroupement effectuée, il faut choisir une variable parmi les p variables regroupées pour diviser le
nœud.
51
— Idée : faire un χ2 pour chaque variable :
(X1 , M1 ) . . . (X1 , M1j ) (X2 , M1 ) ... (X2 , M2j ) ...
1
..
.
K
=⇒ p probabilités critiques p(X1 ), . . . , p(Xp ) et
— Xj discriminante =⇒ rejet de H0 =⇒ p(Xj ) petite.
— On choisit la variable j qui possède la plus petite probabilité critique.
Correction de Bonferroni
— Tendance à favoriser les variables ayant subi le plus de regroupements (erreur de type 1).
— Pour rééquilibrer, les probabilités critiques sont multipliées par le coefficient de Bonferroni :
p0 (Xj ) = bj p(Xj )
où bj correspond au nombre de manières les regrouper les Mj modalités initiales de Xj en M̃j modalités
finales.
— à condition que p0 (Xj ) soit plus petit qu’un certain seuil α4 fixé par l’utilisateur.
— Le nœud sera scindé en autant de groupes que Xj possède de modalités (après la phase de regroupement).
Critère d’arrêt
Remarque
Sur R, on pourra regarder la fonction [Link] :
— Il en existe un troisième (α3 ) qui concerne le remise en cause des regroupements des modalités.
Choix de α4
Degrés d’exigence pour couper un nœud :
— petit : très exigeant =⇒ arbres peu profonds (beaucoup de biais et peu de variance) ;
52
— grand : peu exigeant =⇒ arbres profonds (beaucoup de variance et peu de biais).
Choix de α2
Degrés d’exigence pour regrouper des modalités :
— petit : peu exigeant =⇒ beaucoup de regroupements (on se rapproche des arbres binaires) ;
— grand : très exigeant =⇒ peu de regroupements.
Illustration α4
> ctrl <- chaid_control(minsplit = 20,alpha4=0.0005)
> a1 <- chaid(vote3~.,data=USvoteS,control=ctrl)
> plot(a1)
1
marstat
Gore
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
Bush
Bush
0 0
1
marstat
<HS, HS,
College,
>HS Post Coll male
female
4 16 25
empstat empstat ager
yes, no
retired < HS
HS, >HS, College, Post Coll <HS,
>HS,
HSCollege, Post Coll
7 19 28 33
educr empstat educr marstat
male
female divorced,
married, widowed
never married 18−24,
yes,
25−34,
retired
no 35−44,
65+ 45−54, 55−64
Node
Node
3 (n Node
=
6 311)
(n Node
=9189)
(nNode
=
1023)
(n
Node
11
= Node
9)
(n13
= 6)
(n
Node
14= (n
3)
Node
18
= Node
19)
(n21
= Node
8)
(n
22=(n
Node
3)23
= 104)
Node
(n24
= 26)
(n
Node
26= (n
18)
Node
29
= 127)
(n
Node
31
= 17)
(n
Node
32
= 16)
(n
Node
35
= 26)
(n
Node
36
= 10)
(n37
= 32)
(n = 14)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
Bush Gore
0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Illustration α2
> ctrl <- chaid_control(minsplit = 20,alpha2=0.005)
> a3 <- chaid(vote3~.,data=USvoteS,control=ctrl)
> plot(a3)
53
1
marstat
married
widowed, divorced, never married
2 5
educr gender
male female
7
<HS, HS,
College,
>HS Post Coll ager
Node 3 (n = 311) Node 4 (n = 249) Node 6 (n = 159) Node 8 (n = 127) Node 9 (n = 115)
1 1 1 1 1
Gore
Gore
Gore
Gore
Gore
0.8 0.8 0.8 0.8 0.8
Bush
Bush
Bush
Bush
0 0 0 0 0
1
marstat
marrieddivorced,
widowed never married
2 18 21
educr ager gender
< HSPost
HS, >HS College
Coll male female
4 14 22 25
ager empstat empstat educr
18−24,
35−44
45−54
25−34
55−64
65+ 18−24, 25−34,
55−64,
35−44,
65+ 45−54 > HS
<HS,
College
Post Coll
6 10 29
educr gender no,
yesretired no,
yesretired empstat
>HS, <HS,
College,
HS Post Coll
male
female yes,
retired
no
Node
Node
3 (n
Node
5
= (n
26)
Node
7
= (n
33)
Node
8
= (n
29)
Node
9
= (n
55)
Node
11
= 71)
Node
(n
12=Node
(n
19)
13= Node
(n
26)
15=(n
Node
52)
16
= 113)
(n
Node
17
= Node
(n
53)
19
=Node
83)
(n
20=Node
(n
23
9)=(n
Node
92)
24
= 107)
Node
(n
26= Node
(n
29)
27= Node
(n
37)
28= (n
58)
Node
30
= (n
45)
31
= 20)
(n = 4)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
Gore
0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
Bush
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
En pratique...
— Approche classique : évaluer les performances (erreur de classification AUC...) pour plusieurs valeurs de
(α2 , α4 ) sur un échantillon test ou par validation croisée.
Exemple
— On veut expliquer avec un arbre CHAID la variable chd par les autres variables du jeu de données SAheart.
> donnees <- SAheart
> donnees$chd <- [Link](donnees$chd)
> for (i in c(1:4,6:9)){donnees[,i] <- [Link](donnees[,i])}
54
> alpha_opt <- [Link][[Link]([Link]$perf),]
> alpha_opt
alpha2 alpha4 perf
1 0.01 0.01 0.2716049
1
age
3 6
typea famhist
13, 20, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
69,45,
70,46,
71,47,
72,48,
73,49,
74,50,
75,51,
77,52,
7853, 54, Absent
55, 56, 57,
Present
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68
Node 2 (n = 67) Node 4 (n = 209) Node 5 (n = 14) Node 7 (n = 82) Node 8 (n = 90)
1 1 1 1 1
0
0
0.8 0.8 0.8 0.8 0.8
1
0 0 0 0 0
Avec Caret
462 samples
9 predictor
2 classes: ’0’, ’1’
No pre-processing
Resampling: Repeated Train/Test Splits Estimated (1 reps, 75%)
Summary of sample sizes: 300
Resampling results across tuning parameters:
55
0.16 0.06 0.6419753 0.2839506
0.16 0.11 0.6419753 0.2839506
0.16 0.16 0.6419753 0.2839506
0.16 0.21 0.6419753 0.2839506
0.16 0.26 0.6296296 0.2646391
0.16 0.31 0.6419753 0.2839506
0.21 0.01 0.6419753 0.2394366
0.21 0.06 0.6419753 0.2394366
0.21 0.11 0.6419753 0.2394366
0.21 0.16 0.6419753 0.2394366
0.21 0.21 0.6419753 0.2394366
0.21 0.26 0.6419753 0.2394366
0.21 0.31 0.6419753 0.2394366
0.26 0.01 0.6419753 0.2394366
0.26 0.06 0.6419753 0.2394366
0.26 0.11 0.6419753 0.2394366
0.26 0.16 0.6419753 0.2394366
0.26 0.21 0.6419753 0.2394366
0.26 0.26 0.6419753 0.2394366
0.26 0.31 0.6419753 0.2394366
0.31 0.01 0.6419753 0.2394366
0.31 0.06 0.6419753 0.2394366
0.31 0.11 0.6419753 0.2394366
0.31 0.16 0.6419753 0.2394366
0.31 0.21 0.6419753 0.2394366
0.31 0.26 0.6419753 0.2394366
0.31 0.31 0.6419753 0.2394366
7 Bibliographie
Références
Biblio2
[Breiman et al., 1984] Breiman, L., Friedman, J., Olshen, R., and Stone, C. (1984). Classification and regression
trees. Wadsworth & Brooks.
[Cornillon and Matzner-Løber, 2011] Cornillon, P. and Matzner-Løber, E. (2011). Régression avec R. Springer.
[Devroye et al., 1996] Devroye, L., Györfi, L., and Lugosi, G. (1996). A Probabilistic Theory of Pattern Recognition.
Springer.
[Devroye and Krzyżak, 1989] Devroye, L. and Krzyżak, A. (1989). An equivalence theorem for l1 convergence of
the kernel regression estimate. Journal of statistical Planning Inference, 23 :71–82.
[Fahrmeir and Kaufmann, 1985] Fahrmeir, L. and Kaufmann, H. (1985). Consistency and asymptotic normality
of the maximum likelihood estimator in generalized linear models. The Annals of Statistics, 13 :342–368.
[Grob, 2003] Grob, J. (2003). Linear regression. Springer.
[Györfi et al., 2002] Györfi, L., Kohler, M., Krzyzak, A., and Harro, W. (2002). A Distribution-Free Theory of
Nonparametric Regression. Springer.
[Hastie et al., 2009] Hastie, T., Tibshirani, R., and Friedman, J. (2009). The Elements of Statistical Learning :
Data Mining, Inference, and Prediction. Springer, second edition.
[Kass, 1980] Kass, G. (1980). An exploratory technique for investigating large quantities of categorical data.
Applied Statistics, 29(2) :119–127.
[Stone, 1977] Stone, C. J. (1977). Consistent nonparametric regression. Annals of Statistics, 5 :595–645.
56
Quatrième partie
Agrégation
Les approches que nous allons étudier sont basées sur l’agrégation :
1. construire un grand nombre de classifieurs "simples" g1 , . . . , gB
2. que l’on agrège
B
1 X
ĝ(x) = gk (x).
B
k=1
Questions
1. Intérêt d’agréger ?
2. Comment construire les gk pour que ĝ soit performant ?
— Idem que précédemment, on cherche à expliquer une variable Y par d variables explicatives X1 , . . . , Xd .
— Pour simplifier on se place en régression : Y est à valeurs dans R mais tout ce qui va être fait s’étant
directement à la classification binaire ou multiclasses.
— Notations :
1.1 Bagging
— Le bagging désigne un ensemble de méthodes introduit par Léo Breiman [Breiman, 1996].
— Idée : plutôt que de constuire un seul estimateur, en construire un grand nombre (sur des échantillons
bootstrap) et les agréger.
Pourquoi agréger ?
— On peut mesurer l’intérêt d’agréger en comparant les performances de m̂B (x) à celles des mk (x), k = 1, . . . , B
(en comparant, par exemple, le biais et la variance de ces estimateurs).
57
1 2 3 4 5 6 7 8 9 10
3 4 6 10 3 9 10 7 7 1 m1
2 8 6 2 10 10 2 9 5 6 m2
2 9 4 4 7 7 2 3 6 7 m3
6 1 3 3 9 3 8 10 10 1 m4
3 7 10 3 2 8 6 9 10 2 m5
.. ..
. .
7 10 3 4 9 10 10 8 6 1 mB
Biais et variance
Conclusion
Agréger ne modifie pas le biais.
— Variance :
1
V[m̂B (x)] = V[mk (x)].
B
Conclusion
Agréger tue la variance.
— Les conclusions précédentes sont vraies sous l’hypothèse que les variables aléatoires m1 , . . . , mB sont i.i.d.
— Les estimateurs m1 , . . . , mB étant construits sur le même échantillon, l’hypothèse d’indépendance n’est clai-
rement pas raisonnable !
Idée
Atténuer la dépendance entre les estimateurs mk , k = 1, . . . , B en introduisant de nouvelles sources d’aléa.
— Echantillon initial :
— Echantillons bootstrap :
— A la fin, on agrège :
B
1 X
m̂B (x) = mk (x).
B
k=1
Bagging
— Les mk ne vont pas être construits sur l’échantillon Dn = (X1 , Y1 ), . . . , (Xn , Yn ), mais sur des échantillons
bootstrap de Dn .
Bagging
Entrées :
— x ∈ Rd l’observation à prévoir, Dn l’échantillon
— un régresseur (arbre CART, 1 plus proche voisin...)
— B le nombre d’estimateurs que l’on agrège.
Pour k = 1, . . . , B :
1. Tirer un échantillon bootstrap dans Dn
2. Ajuster le régresseur sur cet échantillon bootstrap : mk (x)
PB
Sortie : L’estimateur m̂B (x) = B1 k=1 mk (x).
58
Tirage de l’échantillon bootstrap
Conséquence
Les estimateurs agrégés contiennent 2 sources d’aléa (échantillon et tirage bootstrap) :
mk (x) = m(x, θk , Dn ).
Conséquence importante
Le nombre d’itérations B n’est pas un paramètre à calibrer, il est conseillé de le prendre le plus grand possible en
fonction du temps de calcul.
Choix du régresseur
1 − ρ(x)
V[m̂B (x)] = ρ(x)V[m(x, θk , Dn )] + V[m(x, θk , Dn )]
B
où ρ(x) = corr(m(x, θk , Dn ), m(x, θk0 , Dn ))) pour k 6= k 0 .
Conclusion
— Bagger ne modifie pas le biais.
— B grand =⇒ V[m̂B (x)] ≈ ρ(x)V[m̂k (x, θk (Dn )] =⇒ la variance diminue d’autant plus que la corrélation entre
les prédicteurs diminue.
— Il est donc nécessaire d’agréger des estimateurs sensibles à de légères perturbations de l’échantillon.
— Les arbres sont connus pour posséder de telles propriétés.
59
1.2 Forêts aléatoires
s2 X1 < s 1 X1 ≥ s1
X 2 ≥ s2 X2 < s 2
X1 < s 3 X 1 ≥ s3
s4
X2 < s 4 X 2 ≥ s4
s1 s3
Paramètre à calibrer
Profondeur
— petite : biais %, variance &
— grande : biais &, variance %
Définition
— Comme son nom l’indique, une forêt aléatoire est définie à partir d’un ensemble d’arbres.
Définition
Soit Tk (x), k = 1, . . . , B des prédicteurs par arbre (Tk : Rd → R). Le prédicteur des forêts aléatoires est obtenu par
agrégation de cette collection d’arbres :
B
1 X
T̂B (x) = Tk (x).
B
k=1
Forêts aléatoires
— Les forêts aléatoires les plus utilisées sont (de loin) celles proposées par Léo Breiman (au début des années
2000).
— Elles consistent à agréger des arbres construits sur des échantillons bootstrap.
60
s2 X1 < s 1 X1 ≥ s1
X 2 ≥ s2 X2 < s 2
X1 < s 3 X 1 ≥ s3
s4
X2 < s 4 X 2 ≥ s4
s1 s3
Algorithme : randomforest
Entrées :
— x ∈ Rd l’observation à prévoir, Dn l’échantillon ;
— B nombre d’arbres ; nmax nombre max d’observations par nœud
— m ∈ {1, . . . , d} le nombre de variables candidates pour découper un nœud.
Pour k = 1, . . . , B :
1. Tirer un échantillon bootstrap dans Dn
2. Construire un arbre CART sur cet échantillon bootstrap, chaque coupure est sélectionnée en minimisant la
fonction de coût de CART sur un ensemble de m variables choisies au hasard parmi les d. On note T (., θk , Dn )
l’arbre construit.
PB
Sortie : l’estimateur TB (x) = B1 k=1 T (x, θk , Dn ).
Commentaires
— Si on est en discrimination (Y qualitative), l’étape d’agrégation consiste à faire voter les arbres à la majorité.
— Il y a deux sources d’aléa présentes dans θk : le tirage bootstrap et les m variables sélectionnées à chaque
étape de la construction de l’arbre.
— Méthode simple à mettre en oeuvre et déjà implémentée sur la plupart des logiciels statistiques (sur R, il suffit
de lancer la fonction randomForest du package randomForest).
— Estimateur connu pour fournir des estimations précises sur des données complexes (beaucoup de variables,
données manquantes...).
61
Intérêt du bagging (rappel)
Diminuer la variance des estimateurs qu’on agrège :
1 − ρ(x)
V[T̂B (x)] = ρ(x)V[T (x, θk , Dn )] + V[T (x, θk , Dn )]
B
Conséquence
— Le biais n’étant pas amélioré par "l’agrégation bagging", il est recommandé d’agréger des estimateurs qui
possèdent un biais faible (contrairement au boosting).
— Arbres "profonds", peu d’observations dans les nœuds terminaux.
— Par défaut dans randomForest, nmax = 5 en régression et 1 en classification.
Choix de m
Conclusion
— Il est recommandé de comparer les performances de la forêt pour plusieurs valeurs de m.
√
— Par défaut m = d/3 en régression et d en classification.
Mesure de performance
— Comme pour les autres classifieurs et régresseurs il convient de définir des critères qui permettent de mesurer
la performance des forêts aléatoires.
— Exemples :
— Erreur de prédiction : E[(Y − T̂B (X))2 ] en régression ;
— Probabilité d’erreur : P(Y 6= T̂B (X)) en classification.
— Comme pour les autres méthodes, ces critères peuvent être évalués par apprentissage/validation ou validation
croisée.
— La phase bootstrap des algorithme bagging permet de définir une nouvelle méthode d’estimation de ces critères :
méthode OOB (Out Of Bag).
62
3 4 6 10 3 9 10 7 7 1 m1
2 8 6 2 10 10 2 9 5 6 m2
2 9 4 4 7 7 2 3 6 7 m3
6 1 3 3 9 3 8 10 10 1 m4
3 7 10 3 2 8 6 9 10 2 m5
7 10 3 4 9 10 10 8 6 1 m6
— Pour chaque observation (Xi , Yi ) de Dn , on désigne par IB l’ensemble des arbres de la forêt qui ne contiennent
pas cette observation dans leur échantillon bootstrap.
— La prévision de Y au point Xi se fait selon
1 X
Ŷi = T (Xi , θk , Dn ).
|IB |
k∈IB
Exemple
Exemple
Remarque
L’erreur OOB est de 8.06%, elle est de 4.52% lorsque m = 7.
63
Importance des variables
— Un des reproches souvent fait aux forêts est l’aspect boîte noire et manque d’interprétabilité par rapport aux
modèles paramétriques tels que le modèle logistique.
— Il existe un indicateur qui permet de mesurer l’importance des variables présentes dans le modèle.
— Comme l’erreur OOB, ce critère est basé sur le fait que toutes les observations ne sont pas utilisées pour
construire les arbres de la forêt.
— Soit OOBk l’échantillon Out Of Bag associé au k eme arbre : il contient les observations qui ne sont pas dans
le k eme échantillon bootstrap.
— Soit EOOBk l’erreur de prédiction de l’arbre k mesurée sur cet échantillon :
1 X
EOOBk = (T (Xi , θk , Dn ) − Yi )2 .
|OOBk |
i∈OOBk
— Soit OOBkj l’échantillon OOBk dans lequel on a perturbé aléatoirement les valeurs de la variable j et EOOB j
k
l’erreur de prédiction de l’arbre k mesurée sur cet échantillon :
j 1 X
EOOB k
= j
(T (Xij , θk , Dn ) − Yi )2 ,
|OOBk | j
i∈OOBk
Définition
L’importance de la j eme variable est définie par
B
1 X j
Imp(Xj ) = (EOOBk − EOOBk ).
B
k=1
Exemple
charExclamation
capitalAve
remove
hp
charDollar
edu
free
capitalLong
capitalTotal
george
your
our
num1999
re
you
0 10 20 30 40 50
MeanDecreaseAccuracy
64
2 Boosting
— Le terme Boosting s’applique à des méthodes générales permettant de produire des décisions précises à partir
de règles faibles (weaklearner).
— Historiquement, le premier algorithme boosting est adaboost [Freund and Schapire, 1996].
— Il a ensuite été montré que cet algorithme peut-être vu comme un cas particulier d’algorithmes de descente
de gradient =⇒ gradient boosting.
— C’est cette famille d’algorithmes que nous présentons dans cette partie.
— On considère G l’ensemble des arbres binaires et on veut trouver la meilleure combinaison linéaire d’abres
binaires.
Un premier problème
PM
Trouver g(x) = m=1 αm hm (x) ∈ G qui minimise
n
1X
Rn (g) = `(Yi , g(Xi )).
n i=1
sans solution...
— Pas de solution explicite.
— Nécessité de trouver un algorithme pour approcher la solution.
Descente de gradient
Une restriction
Chaque élément de la suite doit être une combinaison d’arbres et fm+1 n’est pas (forcément) un arbre.
65
— Pour trouver l’arbre le plus proche du gradient fm+1 , on cherche un arbre h qui minimise
n
1X
(fm+1 (Xi ) − h(Xi ))2 .
n i=1
— Si on désigne par
∂
Ui = fm+1 (Xi ) = −∇Rn (gm )(Xi ) = − `(yi , g(xi )) ,
∂g(xi ) g(xi )=gm−1 (xi )
∂
Ui = − `(yi , g(xi )) , i = 1, . . . , n.
∂g(xi ) g(xi )=gm−1 (xi )
b) Ajuster un arbre sur l’échantillon (x1 , U1 ), . . . , (xn , Un ), on note hm l’arbre ainsi défini.
c) Mise à jour : gm (x) = gm−1 (x) + λhm (x).
3. Sortie : la suite de règles (gm (x))m .
Commentaires
où les hk sont des arbres binaires. =⇒ ces règles sont donc bien des combinaisons d’arbres.
66
2.2 Choix des paramètres
Exemple
— Classification binaire avec Y dans {−1, 1} :
1. `(y, g(x)) = exp(−yg(x)) =⇒ adaboost ;
2. `(y, g(x)) = log(1 + exp(−2yg(x))) =⇒ logitboost ;
— Régression avec Y dans R : `(y, g(x)) = 0.5(y − g(x))2 =⇒ L2 -boosting.
Remarque
Interprétation
— L’estimateur à l’étape m est construit en faisant une régression sur les résidus correpondants à l’estimateur
à l’étape m − 1.
— On "corrige" gm−1 en cherchant à expliquer "l’information restante" qui est contenue dans les résidus.
Remarque importante [Bühlmann and Yu, 2003, Bühlmann and Hothorn, 2007, Cornillon et al., 2014]
Il a été montré (sous certaines hypothèses) qu’à chaque itération :
— Le biais diminue : B(gm ) ≤ B(gm−1 ).
— La variance augmente V (gm ) ≥ V (gm−1 ).
— D’où l’importance d’utiliser des règles faibles : beaucoup de biais et peu de variance (des arbres avec peu de
nœuds terminaux par exemple).
67
Illustration
●
●
● ● ●
● ●
● ● ●
● ●
1.0 ● ●
●●●
●
● ●
● ● ● ● ● ● ● ●
● ● ●
● ●
● ● ●
● ● ●●
● ● ● ● ●
● ●
● ●
● ● ● ●
●
● ● ● ●
● ● ●
● ●
● ●
0.5 ● ● ●
● ● ●
●
● ●● ●
● ● ●
● ● ● ●
●
● ●
●
● ● ●
●
● ●
● ●
●● ● ●
●
0.0 ●
● ● ● ●
● ●
● ●
●
● ● ●
● ● ● ●
●
● ●
●
●●
● ● ●●
●
● ●
●
● ● ● ●
−0.5 ● ● ●
● ●
● ● ● ●●
●
●● ● ●
●
●
●● ● ●● ● ●●
● ● ●
● ●● ●
●●
● ● ●●
● ● ●
●● ●
● ● ● ●
● ●
−1.0 ●
● ●
● ●
● ●●
● ●
● ●
●
−1.5
−4 0 4
●
●
● ● ●
● ●
● ● ●
● ●
1.0 ● ●
●●●
●
● ●
● ● ● ● ● ● ● ●
● ● ●
● ●
● ● ●
● ● ●●
● ● ● ● ●
● ●
● ●
● ● ● ●
●
● ● ● ●
● ● ●
● ●
● ●
0.5 ● ● ●
● ● ●
●
● ●● ●
● ● ●
● ● ● ●
●
● ●
●
● ● ●
●
● ●
● ●
●● ● ●
●
0.0 ●
● ● ● ●
● ●
● ●
●
● ● ●
● ● ● ●
●
● ●
●
●●
● ● ●●
●
● ●
●
● ● ● ●
−0.5 ● ● ●
● ●
● ● ● ●●
●
●● ● ●
●
●
●● ● ●● ● ●●
● ● ●
● ●● ●
●●
● ● ●●
● ● ●
●● ●
● ● ● ●
● ●
−1.0 ●
● ●
● ●
● ●●
● ●
● ●
●
−1.5
−4 0 4
●
●
1.0
●
●
●
●
●● ● ●
●
● ●
● ●
●
● ● ●
● ●
●
0.5 ● ●
●
●
●
● ●● ● ●● ●
● ● ●
● ● ●
● ●
●
● ●● ●
● ●
● ● ● ●
● ● ● ● ●
● ● ●
● ● ● ●
●
● ●
●● ● ● ●
● ● ● ● ●
● ● ●
●
● ●
● ● ●
● ● ● ● ●
● ●
0.0 ● ●
● ● ●
●
●
● ● ● ● ●
● ●
● ● ●
● ● ● ●
● ●
● ● ● ● ● ●
● ● ●
● ●
● ●● ● ● ●
● ●
● ●
● ●
●● ●● ●
● ● ●
● ● ●
● ● ● ●
● ●● ● ●
● ● ● ●
● ● ● ● ●
● ● ●
● ● ●●
● ●●
●
−0.5 ● ●
●
● ●
● ● ●
●
● ●
●
●
●
●
●
● ●
●
●
−4 0 4
68
●
●
1.0
●
●
●
●
●● ● ●
●
● ●
● ●
●
● ● ●
● ●
●
0.5 ● ●
●
●
●
● ●● ● ●● ●
● ● ●
● ● ●
● ●
●
● ●● ●
● ●
● ● ● ●
● ● ● ● ●
● ● ●
● ● ● ●
●
● ●
●● ● ● ●
● ● ● ● ●
● ● ●
●
● ●
● ● ●
● ● ● ● ●
● ●
0.0 ● ●
● ● ●
●
●
● ● ● ● ●
● ●
● ● ●
● ● ● ●
● ●
● ● ● ● ● ●
● ● ●
● ●
● ●● ● ● ●
● ●
● ●
● ●
●● ●● ●
● ● ●
● ● ●
● ● ● ●
● ●● ● ●
● ● ● ●
● ● ● ● ●
● ● ●
● ● ●●
● ●●
●
−0.5 ● ●
●
● ●
● ● ●
●
● ●
●
●
●
●
●
● ●
●
●
−4 0 4
1.0
0.5
0.0
−0.5
−1.0
−4 0 4
1.0
0.5
0.0
−0.5
−1.0
−4 0 4
69
M=1000 M=500000
● ●
● ●
● ●
● ● ● ● ● ●
● ● ● ●
● ● ● ● ● ●
● ● ● ● ● ●
1.0 ● ●●
●
●
●● ● ●●
●
●
●●
● ●● ● ●●● ● ● ●● ● ●●● ●
● ● ● ●
● ●● ● ●●
●● ● ●● ●
● ● ● ● ● ●
● ●
● ● ● ● ● ● ● ●
● ● ● ● ● ●
● ● ● ●
● ● ● ●
● ●● ● ●●
● ● ● ● ● ●
● ●
● ● ● ● ● ●
● ● ● ●
● ● ● ●
0.5 ● ● ● ● ● ●
● ●● ● ●●
● ● ● ●
● ● ● ● ● ●
● ●● ● ●●
● ● ●● ● ● ●●
● ●
● ● ● ●
● ● ● ●
●● ● ●● ●
● ● ● ●
● ● ● ●
● ● ● ●
●● ● ●● ●
0.0 ●
●● ● ● ●
●● ● ●
● ● ● ●
● ● ● ●
● ●
● ● ● ● ● ●
● ●● ● ● ●● ●
● ●
● ● ● ● ● ● ● ● ● ●
●
● ●● ●
● ●●
● ●
● ●
● ● ● ●
● ● ● ● ● ● ● ●
−0.5 ● ● ● ● ● ●
● ● ● ●
● ● ● ● ● ● ● ●
● ●
● ●
●● ● ● ●● ● ●
● ●
● ● ● ●
●●●
● ● ●● ●●●
● ● ●●
● ● ●● ● ● ●●
●● ● ●● ●
●● ●●
●● ●
●
● ●● ●● ●
●
● ●●
●
● ● ●
● ●
●●● ● ●●● ●
● ● ● ●
−1.0 ● ●
● ● ● ●
● ● ● ●
● ● ● ●
● ●
● ● ● ●
● ● ● ●
● ●
● ●
−1.5
−4 0 4 −4 0 4
Remarque importante
L’algorithme sur-ajuste si le nombre d’itérations est (trop) grand.
Choix de m et λ
En pratique
— On considère 2 ou 3 valeurs (petites) pour λ (0.1,0.01) ;
— Pour chaque λ, on choisit le meilleur m en utilisant des techniques de type validation croisée.
— L’algorithme étant construit pour une fonction de perte ` donnée, il est d’usage d’utiliser la même fonction
de perte pour sélectionner m.
— On va donc chercher le nombre d’itérations qui minimise la perte :
m̂ = argmin E[`(Y, gm (X))].
m≤M
— L’espérance ci-dessus étant inconnue en pratique, elle est approchée par des algorithmes de validation croisée.
Le coin R
— La fonction gbm du package gbm [Ridgeway, 2006] permet de faire du gradient boosting. Elle admet notam-
ment comme paramètres :
1. fonction de perte (distribution)
2. nombre d’itérations maximal M ([Link])
3. nombre de nœuds terminaux des arbres plus 1 ([Link])
4. paramètre de régularisation λ (shrinkage)
5. paramètres pour la validation croisée ([Link] pour la validation hold out ou [Link] pour la
validation croisée).
70
Exemple
> library(gbm)
> [Link](1234)
> spam1 <- spam
> spam1$type <- [Link](spam1$type)-1
> ada <- gbm(type~.,data=spam1,distribution="adaboost",[Link]=5,
+ [Link]=1000,shrinkage=0.05)
> mopt <- [Link](ada)
> mopt
## [1] 440
0.9
0.8
AdaBoost exponential bound
0.7
0.6
0.5
0.4
0.3
Iteration
Conclusion
— Pour être efficace les arbres hk doivent être des règles faibles (weaklearner), donc des arbres peu performants :
— randomforest : arbres très profonds avec beaucoup de variance et peu de biais ;
— boosting : arbres peu profonds avec peu de variance et beaucoup de biais.
Résumé
— Agrégation RF : réduction de variance ;
— Agrégation boosting : réduction de biais.
3 Bibliographie
Références
Biblio4
[Aronszajn, 1950] Aronszajn, N. (1950). Theory of reproducing kernels. Transactions of the American Mathematical
Society, 68 :337–404.
[Breiman, 1996] Breiman, L. (1996). Bagging predictors. Machine Learning, 26(2) :123–140.
[Bühlmann and Hothorn, 2007] Bühlmann, P. and Hothorn, T. (2007). Boosting algorithms : regularization, pre-
diction and model fitting. Statistical Science, 22 :477–505.
[Bühlmann and Yu, 2003] Bühlmann, P. and Yu, B. (2003). Boosting with the l2 loss : regression and classification.
Journal of American Statistical Association, 98 :324–339.
[Cornillon et al., 2014] Cornillon, P., Hengartner, N., and Matzner-Lø ber, E. (2014). Recursive bias estimation
for multivariate regression smoothers. ESAIM : Probability and Statistics, 18(483-502).
[Devroye and Krzyżak, 1989] Devroye, L. and Krzyżak, A. (1989). An equivalence theorem for l1 convergence of
the kernel regression estimate. Journal of statistical Planning Inference, 23 :71–82.
71
[Freund and Schapire, 1996] Freund, Y. and Schapire, R. (1996). Experiments with a new boosting algorithm. In
Proceedings of the Thirteenth International Conference on Machine Learning.
[Freund and Schapire, 1997] Freund, Y. and Schapire, R. (1997). A decision-theoritic generalization of online
learning and an application to boosting. Journal of Computer and System Sciences, 55 :119–139.
[Freund and Schapire, 1999] Freund, Y. and Schapire, R. (1999). A short introduction to boosting. Journal of
Japanese Society for Artificial Intelligence, 14(5) :771–780.
[Friedman, 2001] Friedman, J. H. (2001). Greedy function approximation : A gradient boosting machine. Annals
of Statistics, 29 :1189–1232.
[Fromont, 2015] Fromont, M. (2015). Apprentissage statistique. Université Rennes 2, diapos de cours.
[Genuer, 2010] Genuer, R. (2010). Forêts aléatoires : aspects théoriques, sélection de variables et applications. PhD
thesis, Université Paris XI.
[Györfi et al., 2002] Györfi, L., Kohler, M., Krzyzak, A., and Harro, W. (2002). A Distribution-Free Theory of
Nonparametric Regression. Springer.
[Hastie et al., 2009] Hastie, T., Tibshirani, R., and Friedman, J. (2009). The Elements of Statistical Learning :
Data Mining, Inference, and Prediction. Springer, second edition.
[Ridgeway, 2006] Ridgeway, G. (2006). Generalized boosted models : A guide to the gbm package.
[Stone, 1977] Stone, C. J. (1977). Consistent nonparametric regression. Annals of Statistics, 5 :595–645.
[Vapnik, 2000] Vapnik, V. (2000). The Nature of Statistical Learning Theory. Springer, second edition.
[Vert, 2014] Vert, J. (2014). Support vector machines and applications in computational biology. disponible à l’url
[Link]
72
Cinquième partie
Réseaux de neurones
1 Introduction
Bibliographie
Historique
Différentes architectures
73
Définition : neurone biologique
Un neurone biologique est une cellule qui se caractérise par
— des synapses : les points de connexion avec les autres neurones ;
— dentrites : entrées du neurones ;
— les axones ou sorties du neurone vers d’autres neurones ;
— le noyau qui active les sorties.
2 Le perceptron simple
— Le problème : expliquer une sortie y ∈ R par des entrées x = (x1 , . . . , xp ).
Définition
Le perceptron simple est une fonction f des entrées x
— pondérées par un vecteur w = (w1 , . . . , wp ),
— complétées par un neurone de biais w0 ,
— et une fonction d’activation σ : R → R
ŷ = f (x) = σ(w0 + w1 x1 + . . . + xp xp ).
Fonction d’activation
74
Représentation graphique
w0
x1 w1
x2 w2
x3 w3 Σ σ y
..
.
..
.
xp wp
Le coin R
> library(keras)
> install_keras()
Exemple
Définition du modèle
Summary
75
> summary(model)
## ___________________________________________________________________________
## Layer (type) Output Shape Param #
## ===========================================================================
## dense (Dense) (None, 1) 5
## ===========================================================================
## Total params: 5
## Trainable params: 5
## Non-trainable params: 0
## ___________________________________________________________________________
— On indique dans la fonction compile la fonction de perte pour l’estimation des paramètres du modèle et le
critère de performance
> model %>% compile(
+ loss="binary_crossentropy",
+ optimizer="adam",
+ metrics="accuracy"
+ )
Estimation
Visualisation du réseau
0.174
x1 0.251
x2 0.092
x3 −0.163 Σ σ y
x4 −0.005
Estimation
1
Pb(Y = 1|X = x) =
1 + exp(−(0.174 + 0.251x1 + . . . − 0.005x4 ))
76
Prévision
3 Perceptron multicouches
Constat
— Règle de classification : le preceptron simple affecte un individu dans le groupe 1 si
Idée
Conserver cette structure de réseau en considérant plusieurs couches de plusieurs neurones.
Perceptron simple
x1
x2
x3
σ y
..
.
..
.
xp
77
Entrées C. cachée C. Sortie Sortie
x1
σ1,1
x2
x3 σ1,2
σ y
.. ..
. .
..
.
σ1,k1
xp
x1
σ1,1 σ2,1
x2
x3 σ1,2 σ2,2
σ y
.. .. ..
. . .
..
.
σ1,k1 σ2,k2
xp
Commentaires
— Les neurones de la première couche (cachée) calculent des combinaisons linéaires des entrées.
— Ces combinaisons linéaires sont ensuite activées par une fonction d’activation, produisant une sortie par
neurone.
— Chaque neurone de la deuxième couche (cachée) est une combinaison linaire des sorties de la couche précé-
dente...
— activées par une fonction d’activation, produisant une sortie par neurone...
Remarque
Le nombre de neurones dans la couche finale est définie par la dimension de la sortie y :
— Régression ou classification binaire =⇒ 1 neurone.
— Classification multiclasse (K) =⇒ K (ou K − 1) neurones.
Le coin R
78
> summary(model)
## ___________________________________________________________________________
## Layer (type) Output Shape Param #
## ===========================================================================
## dense_1 (Dense) (None, 10) 50
## ___________________________________________________________________________
## dense_2 (Dense) (None, 5) 55
## ___________________________________________________________________________
## dense_3 (Dense) (None, 1) 6
## ===========================================================================
## Total params: 111
## Trainable params: 111
## Non-trainable params: 0
## ___________________________________________________________________________
4 Estimation
— L’utilisateur doit choisir le nombre de couches, le nombre de neurones par couche, les fonctions d’activation
de chaque neurone.
— Une fois ces paramètres choisis, il faut calculer (estimer) tous les vecteurs de poids dans tous les neurones.
L’approche
— On désigne par θ l’ensemble des paramètres à estimer =⇒ f (x, θ) la règle associée au réseau.
— Minimisation de risque empirique : minimiser
n
1X
Rn (θ) = `(yi , f (xi , θ))
n i=1
Fonctions de perte
Descente de gradient
— Le réseau étant structuré en couches, la mise à jour des paramètres n’est pas directe.
79
Batch et epoch
— L’algorithme de rétropropagation n’est généralement pas appliqué sur l’ensemble des données, mais sur des
sous-ensemble de cardinaux m appelés batch.
— Cette approche est classique sur les gros volumes de données et permet de prendre en compte des données
séquentielles.
— Pour prendre en compte toutes les données sur une étape de la descente de gradient, on va donc appliquer
n/m fois l’algorithme de rétropropagation.
— Une itération sur l’ensemble des données est appelée epoch.
Algorithme
Entrées : ε (learning rate), m (taille des batchs), nb (nombre d’epochs).
1. Pour ` = 1 à nb
2. Partitionner aléatoire les données en n/m batch de taille m =⇒ B1 , . . . , Bn/m .
(a) Pour j = 1 à n/m
i. Calculer les gradients sur le batch j avec l’algorithme de rétropropagation : ∇θ .
ii. Mettre à jour les paramètres
θnew = θold − ε∇θold .
Sorties : θnew et f (x, θnew ).
En pratique
Il est courant de visualiser l’évolution de la fonction de perte et/ou d’un critère de performance en fonction du
nombre d’epoch.
Un exemple
— On considère un réseau à 2 couches cachées comportant 50 nœuds (2851 paramètres).
> model1 <- keras_model_sequential()
> model1 %>% layer_dense(units=50,input_shape=c(4),
+ activation="sigmoid") %>%
+ layer_dense(units = 50,activation = "sigmoid") %>%
+ layer_dense(units = 1,activation = "sigmoid")
— On utilise
— crossentropy comme perte.
— Adam comme algorithme d’optimisation.
— accuracy (taux de bien classés) comme mesure de performance.
> model1 %>% compile(
+ loss="binary_crossentropy",
+ optimizer="adam",
+ metrics="accuracy"
+ )
— On estime les paramètres avec m = 5 et nb = 1000 et utilise 20% des données dans l’échantillon de validation.
80
●
●●
●
● ●●●● ●●●
●● ● ●
●● ●
●●
0.75 ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
● ●
●
● ●●● ● ●● ●
●
●
●
●●
●
●
●
●●●
●●●
●●
●●
●
●
●
●●
●
● ●
●
●●
●●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
● ●
●● ●●●
●●●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●● ●
●
●●
●●●●
●
●
●
●
●
●●
●
●
● ●
●●
●
●
●●●
●
●●
●
●
●
● ●●
●
●●
●●
●
●●
● ●●
●●
●●●
●
●
●
●
● ●●
●
●●
● ●
●
●
●
● ●
●
●●
●
●
●
●
● ●●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
● ●
●
●
●● ●
●
●
●●
●
●
●● ●
●●●
●
●
●●
●
● ●●●
0.50 ●
●●
●
●
●
●
●
●●
loss
●
●
●●
●
●
● ●●●
●●●
●
●●
●
●
● ●●
●
●
●●
●
●
●
●
●● ● ●
●●
●●
●
●● ●
●
●
●
●
●
● ●
●●
● ●
●
●
●
●
●
● ●●●
●
●
●
●
●●
● ●●
●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●●
● ●●
●●
●
●
●
● ●
●●
●●
●
●
●● ●●
●
●●
●
●
●
● ●●
●
●●
●
●
●
●
●● ●●
●
●
●
●●
●
●
●
● ●●
●
●●
●
●
●
● ●●
●●
●
● ●
●●
●
●
●
●
●●●●●
●
●
●
●
● ●
●●
●
●●
0.25 ●
●
●
● ●
●●
●
●
●●● ●
●
●
●
●
●●●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
● ● ●
●
●
●●
●
●●
●●
●●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
●
●●
●
●
●●●
●
●● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
● ● ●
● ● ●
● ●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●● ●
● ● ● ●● ● ● ●
●●●
●
●
●●●
●
●●●
● ●●●
●●
●
●
●
●●
●
●●
●●●
●
●
●
●●
●
●
●
●●
●●●
●●●
●● ●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
● ● ● ● ● ● ●● ● ● ● ● ● ●●●
●
●●●●
●●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●
●
●●●●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●●●●
●●● ●●●
●●● ●● ●● ●● ●● ● ●●●●
●●
●
●
●●
●
● ●
●
●
●
● ●
●
●●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●
●
●●●●
●● ●● ● ●
● ●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●●
●●
●
●
●●
●
●●
●
●
●
●●
●●
● ●●
●
●●● ●● ●●●
●
● ● ●●
●
●●● ●
●
●
●
●●
●
●●
●
●●
●●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●●
●
●●
●
●●
●
●●●
● ● ● ●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
● ●
●
●●
●●
●
● ●
●●●
●
●
●●
●●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●●
●●
●●
●●
●
●
●●
●
●
●●●
●
●●
●
●
●
●●
●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●●●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
● ● ●
●●
●●
●
●
●●
●
●●
●
●●
●
●●
●●
●
●●●
●
●
●
●● ●
●●
● ●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
●●●
●
●●●
●
●
●●
● ●
● ●
●●
● ●
● ●
● ●
● ●
● ●
●
● ●
●
●
●
● ●● ●
data
0.00 ● ●●
●●
●
●
●●●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
● training
1.0 ● ●
●●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
● ● validation
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●●
●●
●
●●
●
●●●
●
●
●●●
●●●
●
●●
●
●
●
●● ●●●● ●
●
●●
●
●
● ●
●
●
●●●
●
●
●●
●
●●
●●
●
●●
●
●
●●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
● ●●
●
●●●●
●
●●
●●
●
●●●
●
●
●●
●●
●●●●
●●
●
●●
●●
●
●●
●
●●
●
●
●●
●●●
●
●●
●●
●●
●●
●
●●● ● ●
● ● ● ●● ●● ● ●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●●
●●
●
●●
● ● ●
●
●
●
●●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●●
●
●
●●
●
●
●
●●●
●
●●
●
●●
●
●●
●
●●●
●
●●
●● ●
●●●
●●
●●
●●
●
●
●●●
●●●
●
●●
●
●●
●
●
●
●●
●
●●●
● ●●
●
●●
●●
●●
●
●
●●
● ●●●
●
●●
●●
●
●
●
●●● ●
●●
●
●
●● ●●●●
●●●●
●
●
●●
●
●●
0.8 ●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●●● ●
●
●●●●
● ●
●
●●● ●●●
●
●●●
●
●●
●
●
●●
●
●
●●●●●
●●
● ●●
●
●●●●●
●
●
●
●
●
●
●
●
●
●●● ●● ●
● ●
● ●
●
●
●
●
●
●
● ●●
●●● ●
●●
● ●●● ●
●
● ●●●
●
●●
●●
● ●●
●
●●
acc
●
●● ●
●●
●
●
●●
●
●●● ● ●
●
● ●
●● ●
●
0.6 ●
●
●
●
●
● ● ●
●
●
●
● ●
●●
●
●●
●
●
● ● ● ●
●●
●● ●●
●
●
●●
●
●●
●
●
●●
●●
●
●●
●
● ●●●
●
●●
●
●
●
● ●●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●
●●
●●
●●
●
●
●●
●
●
●●● ●●
●●
●
●
●● ●
●
●● ●
●●● ● ●
● ●● ●
● ●●
● ●
● ●●
● ●
● ●●
● ●
●●
●
●
●
●
●
●
●
●●
●
● ●●
●
●
0.4 ●
●
●●
●
●
●●
●●
●●
●● ●
●
●
●
●
●
●
●
●●●
●●
●●
●
●
●
●
●
● ●
●●
●●
●●●●
●●
●●
●●
●●
●●
●●
●●
●●●
●
●●
●
●
●
●●
●●●
●
●●●●
Erreur et perte
> plot(history)
81
5 Choix des paramètres et surapprentissage
Surapprentissage
— Plusieurs paramètres peuvent causer du surapprentissage, notamment les nombres de couches cachées, de
neurones et d’epoch.
Plusieurs solutions
1. Régularisation de type ridge/lasso :
n
1X
Rn (θ) = `(yi , f (xi , θ)) + λΩ(θ).
n i=1
Dropout
— A chaque étape de la phase d’entrainement, on supprime un nombre de neurones (selon une Bernoulli de
paramètre p).
C1 C2 C3 S C1 C2 C3 S
Le coin R
82
> library(caret)
> dapp1 <- dapp
> dapp1$Y <- [Link](dapp1$Y)
> param_grid <- [Link](size=c(10,50,100),
+ lambda=0,batch_size=5,lr=0.001,
+ rho=0.9,decay=0,
+ activation=c("relu","sigmoid"))
— On calcule ensuite les taux de bien classés par validation croisée 5 blocs pour chaque combinaison de para-
mètres.
> caret_mlp
## Multilayer Perceptron Network with Weight Decay
## 300 samples
## 4 predictor
## 2 classes: ’0’, ’1’
## No pre-processing
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 240, 240, 240, 240, 240
## Resampling results across tuning parameters:
## size activation Accuracy Kappa
## 10 relu 0.9200000 0.8394122
## 10 sigmoid 0.8966667 0.7913512
## 50 relu 0.9266667 0.8515286
## 50 sigmoid 0.9066667 0.8127427
## 100 relu 0.9366667 0.8722974
## 100 sigmoid 0.9300000 0.8595025
## Tuning parameter ’lambda’ was held constant at a value of 0
## Tuning parameter ’rho’ was held constant at a value of 0.9
## Tuning parameter ’decay’ was held constant at a value of 0
## Accuracy was used to select the optimal model using the largest value.
## The final values used for the model were size = 100, lambda =
## 0, batch_size = 5, lr = 0.001, rho = 0.9, decay = 0 and activation = relu.
Conclusion
— Avantages :
— Méthode connue pour être efficace pour (quasiment) tous les problèmes.
— Inconvénients :
6 Bibliographie
Références
83
Biblio5
[McCulloch and Pitts, 1943] McCulloch, W. and Pitts, W. (1943). A logical calculus of ideas immanent in nervous
activity. Bulletin of Mathematical Biophysics, 5 :115–133.
[Rosenblatt, 1958] Rosenblatt, F. (1958). The perceptron : a probabilistic model for information storage and
organization in the brain. Psychological Review, 65 :386–408.
[Rumelhart et al., 1986] Rumelhart, D. E., Hinton, G. E., and R. J. Williams, R. J. (1986). Learning representations
by back-propagating errors. Nature, pages 533–536.
84