1 Mesure de performance d’un modèle d’apprentissage
PLAN
1. Méthodologie de test
2. Validation croisée
3. Métriques de la performance: précision, rappel, F1-Mesure
4. Démonstrations avec scikit-learn
5. Etude de cas : dataset MNIST (70000 images) pour entraîner et
mesurer la performance d’un modèle appris.
6. Résumé : démarche « recommandée » pour l’entraînement et la
mesure de performance d’un modèle appris.
[Link]
2
Évaluation d’un modèle d’apprentissage
L’évaluation consiste à mesurer la performance (succès) d’un classeur au niveau de la classification
(prédiction). Par exemple, le classeur tente de classer (reconnaître) la classe (forme) de chaque
nouvelle observation (instance) :
´ Si c’est correct, elle est comptée comme étant un succès, sinon c’est une erreur.
´ Le taux d’erreur est la proportion d’erreurs obtenue à l’échelle de l’ensemble des données de test
(validation). C’est la probabilité d’un mauvais classement.
Le but visé :
´ Savoir si le modèle est globalement significatif;
´ Se donner une idée des performances en déploiement;
´ Comparer plusieurs modèles candidats.
Par conséquent:
´ Le seul moyen de mesurer la capacité de généralisation d’un classeur est de le tester sur des
exemples qui n’appartient pas aux données d’entrainement (training set).
A. Bouzouane
Démarche « simplifiée» de test
(validation)
3
Données
Algorithme
d’apprentissage
Collecter un échantillon de données de la TBA: Diviser
d’entraînement
1. Le diviser aléatoirement en deux ensembles
disjoints: données d’entraînement représentant
entre 70%-80% de l’échantillon et le reste est pour Classeur
les données de test ; Échantillon de (Modèle)
données de la TBA
2. Appliquer l’algorithme d’apprentissage aux
données d’entraînement pour extraire un modèle. Données de test
3. Mesurer le pourcentage d’exemples des données Estimation de la
de validation (test) qui sont correctement classés performance
par le modèle. Données de Test
4. Répéter les étapes 1 à 4 pour un autre échantillon Taux
de taille différente. d’erreur
La mesure de la performance (taux d’erreur)
avec les données d’entraînement est biaisée
(courbe bleue) et non réaliste !
Quand la performance commence à se dégrader
(la courbe rouge au début de la croissance), il Données d’apprentissage
faut arrêter l’entrainement et tenter de trouver
le bon calibrage du modèle (élaguer, nettoyer le
modèle).
Taille des données
(Profondeur de l’arbre)
A. Bouzouane
Opération
d’élaguage
4
Echantillonnage
´ Parfois, l'ensemble des données que nous avons est si volumineux que nous n'utilisons pas
toutes les données dont nous disposons dans une TBA.
´ Plutôt, il faut échantillonner un plus petit pourcentage.
´ Toutefois, on doit être prudent lors de l’échantillonnage pour garantir que le jeu de
données résultant est toujours représentatif de la TBA et qu'aucun biais involontaire n'est
introduit au cours de ce processus.
´ Le biais : les lois de distributions des variables de l’échantillon sont différentes de celles de la
TBA !
´ Le risque est que le modèle prédictif appris ne sera pas significatif lors du déploiement !
´ Les formes courantes d'échantillonnage comprennent:
´ Échantillonnage aléatoire (recommandé par défaut)
´ Échantillonnage stratifié
[Link]
5 Échantillonnage aléatoire
´ Consiste à sélectionner aléatoirement 𝑠% d‘observations parmi la TBA pour créer un
échantillon représentatif.
´ L'échantillonnage aléatoire est un bon choix dans la plupart des cas, car la nature aléatoire de la
sélection des instances devrait éviter d'introduire un biais.
´ L’inconvénient
´ Risque d’une perte de la spécificité qui caractérise le jeu de données.
Par exemple : si nous avons une variable cible de type catégoriel avec différents niveaux (classes), nous
souhaiterons maintenir dans l’échantillon obtenu, la même distribution des différents niveaux que la
variable cible de la TBA !
´ Dans la plupart des cas, ca fonctionne avec l’échantillonnage aléatoire, mais il y a un risque dans le
cas d’un jeu de donnés de taille très faible. Il y aura omission ou sous-représentation ! D’où
l’échantillonnage aléatoire stratifié, ou la validation croisée.
[Link]
6 Échantillonnage aléatoire stratifié
´ L'échantillonnage stratifié est une méthode d'échantillonnage qui garantit que les fréquences relatives des
niveaux (classes) d'une variable ayant une stratification spécifique sont conservées dans l’échantillon.
´ Pour réaliser l’échantillonnage :
1. les observations d'un jeu de données de la TBA sont divisées en groupes (ou strates), où chaque groupe contient
uniquement des observations d’un même niveau (classe) particulier pour la variable.
Exemple : cas du scénario Fraude aux AA, il y aura le groupe des observations de la classe Fraude et le groupe de la classe
Pas-Fraude.
2. s% des observations de chaque strate sont sélectionnées au hasard
3. ces sélections sont combinées pour donner un échantillon global de s% de l'ensemble de données d'origine.
Par conséquent :
´ Cette stratégie garantit que les observations sont distribuées (fréquence relative) relativement aux classes de
sortie (variable cible) dans l’échantillon de la même manière que le jeu des données d’origine (TBA)
Par exemple, il y aura autant d’instances de la classe Fraude vs des instances de la classe Pas-Fraude dans
l’échantillon relativement à la TBA
[Link]
Utilisation de la classe resample de scikit-learn
7 (voir l’exemple en jupyter: [Link]
[Link]
8 Échantillon non représentatif : validation croisée
Dans la majorité des cas, les données sont
limitées (taille <300).
´ La question : comment mesurer la performance
du classeur sur un dataset de taille (échantillon)
de taille faible? Algorithme
d’apprentissage
Une des techniques utilisées est la validation croisée qui
consiste à découper les données en k block Diviser
mutuellement disjoints.
´ Utiliser, à tour de rôle, les k-1 blocs pour la
construction d’un modèle et le bloc restant pour Classeur
tester ce modèle appris, et ainsi de suite pour TBA
(Modèle)
finalement obtenir k modèles d’apprentissage.
´ L’algorithme s’exécute k-fois.
K-blocs de la
´ Calculer l’erreur moyenne à partir des k validation croisée
Estimation de la
performance
modèles appris.
[Link]
9 Mesurer %succès ou accuracy : erreur standard
´ Si le taux de succès prédictif calculé à partir des données de test (validation) est 𝒔 et si
vous continuez à entrainer avec d’autres données et à tester (valider) avec le même jeu de
test (validation) ou avec d’autres données, il est fort probable que vous obtiendrez
différentes valeurs de ce taux.
´ 𝑠 est juste une estimation du taux de succès du classeur pour les observations non-observées.
´ Une manière de se rapprocher du taux de succès réel (vrai), c’est d’utiliser l’erreur standard
donnée par 𝜺 = 𝒔 𝟏 − 𝒔 ⁄𝑵 qu’on associe à 𝑠 où 𝑁 est la taille de l’ensemble de test.
´ On peut approximer le taux de succès réel à l’intérieur d’un intervalle par : 𝒔 ± 𝜺
Exemple
Si 80 observations des 100 données de test ont été prédites correctement, alors le taux de succès ou
l’exactitude de prédiction sur le test est de 80/100 = 0.8
L’erreur standard serait : 0.8 𝑋 0.2/100 = 0.0016 = 0.04
On peut affirmer que le vrai taux succès est entre 0.76 et 0.84. Au lieu de référer une valeur ponctuelle de
0.8 ! Par conséquent, on aura un taux de succès de l’ordre de 𝟎. 𝟖 ± 𝟎. 𝟎𝟒
[Link]
Test avec la fonction cross_val_score de sklearn. Voir
10 l’exemple dans le fichier TestValidationMesure
[Link]
11 Matrice de confusion
La matrice de confusion raffine l’estimation de l’erreur réelle. Son
principe consiste à compter le nombre de fois où des observations de
la classe A ont été rangées dans la classe B. + - ¬ classe prédite
´ Chaque ligne de la matrice représente une classe réelle,
´ Chaque colonne représente une classe prédite.
+ VP FN
Comme le montre la figure montrant le cas d’une classification - FP VN
binaire (positif, négatif), l’élément de la matrice fait référence au
nombre vrai/faux observations de la classe en question :
´ VP: le nombre de vrais positifs : les exemples de classe positive classe
(vrai) et dont la classe est prédite comme positive;
´ VN : le nombre de vrais négatifs : les exemples de classe négative
et dont la classe est prédite comme négative; S’il n’y a que des nombres non nuls sur la
´ FP: le nombre de faux positifs: les exemples de classe négative et diagonale, c’est qu’aucun exemple n’est mal classé
dont la classe est prédite comme positive;
´ FN: le nombre de faux négatifs: les exemples de classe positive et
dont la classe est prédite comme négative.
A. Bouzouane
12 Taux de détection (TVP)
´ Pour une classe donnée, un classeur, et un exemple, 4 cas peuvent se présenter:
´ L’exemple est de cette classe, le classeur ne se trompe pas, c’est un vrai positif;
´ L’exemple est de cette classe, le classeur se trompe , c’est un faux négatif;
´ L’exemple n’est pas de cette classe, mais le classeur l’affecte quand même à la classe, c’est un
faux positif;
´ L’exemple n’est pas de cette classe, et le classeur ne l’affecte pas non plus à la classe, c’est un
vrai négatif;
´ Taux VP (TVP) : Rapport des Vrais Positifs
´ Il se calcule en utilisant la ligne de la matrice de confusion correspondant à la classe en
question:
13 Taux Faux Positif (TFP): %FP
Taux FP (TFP) : rapport des Faux Positifs par rapport
à une classe données = 𝐹𝑃⁄𝐹𝑃 + 𝑉𝑁
Exemple
Fraude-AA, Il y a 2 classes : Fraude et non-Fraude. Le jeu de
test est de 93 individus observations dont 56 de la classe
Non-Fraude, 36 Fraudes
Soit la classe = Fraude qu’on considère comme positif
TVP =35/35+1=35/36 =0.97
TFP = 0 / 56+0=0 (aucun individu classé à tort parmi les 56
négatifs : 56 Non-Fraude)
14 Précision, Recall et F-Mesure
Ces mesures se retrouvent plutôt dans la classification de documents (texte): rechercher les
documents pertinents suite à une requête de l’utilisateur (sur internet) .
´ Est-ce que tous les documents pertinents ont été tous trouvés, si on n’en a pas oublié ? La
réponse correspond au calcul du Recall qui est au fait le taux de VP (%VP).
´ Si tous les documents présentés à l’utilisateur sont pertinents. Combien lui en a-t-on présentés
qui en fait ne l’intéresseront pas ? La réponse revient à calculer la précision.
´ La F-Mesure est une mesure globale qui couvre le Recall et la précision.
´ La précision
´ est le rapport entre le nombre de vrais positifs sur la somme du nombre de vrais positifs + le
nombre de faux positifs.
´ Une valeur de 1 signifie que tous les exemples qui sont classés positifs sont réellement positifs.
15 Précision, Recall et F-Mesure (2)
´ Recall
´ Un Recall (rappel) de 1 signifie que
tous les exemples positifs ont été
tous trouvés.
´ F-Mesure
´ Cette quantité permet de
regrouper en un seul nombre les
performances du classeur, pour
une classe donné.
16 Généralisation des mesures de rappel, de précision
´ Le taux d’erreur E et de succès (1-E) peut être calculés à partir de la matrice
de confusion:
FP + FN
E =
VP +VN + FP + FN
VP +VN
taux de succès = 1 - E =
VP +VN + FP + FN
´ Dans le cas d’une classification multiple à k classes, les mesures de précision
et de rappel se généralisent:
k
å Pr ecisioni
Pr ecision = i
=1
k
k
å Rappeli
Rappel = i=1
A. Bouzouane
k
17 Démarche « recommandée » pour l’entraînement
et la mesure de la performance d’un classeur
´ Après la phase de préparation des données de la méthodologie ML, le jeu
d’entraînement (training set) sera utilisé pour construire un modèle de
classification selon les étapes suivantes :
1. Choisir un algorithme d'apprentissage supervisé approprié (p.e C4.5)
2. Entrainer l’algorithme en utilisant la validation croisée (p.e. k=3)
3. Mesurer la performance du modèle appris selon les métriques : précision, rappel, F1
4. Calibrer le modèle, s’ii y a lieu, pour trouver les bons hyper-paramètres en utilisant par
exemple la recherche par quadrillage : GridSearch.
5. Tester le meilleur modèle trouvé à l’étape 4, sur le jeu de test en mesurant les
métriques : précision, rappel, F-Mesure...
[Link]
Régler avec précision votre modèle :
18
recherche par quadrillage (GridSearchCV)
´ « Fixer » manuellement les hyper-paramètres de réglage d’un algorithme de ML est fastidieux !
´ Une des méthodes utilisées, est la recherche par quadrillage (GridSearchCV) de scikit-learn qui consiste à
créer automatiquement des combinaisons de valeurs des hyper-paramètres selon des plages de valeurs
indiquées par l’utilisateur.
´ Chaque combinaison sera utilisée pour entraîner et valider le modèle selon une validation croisée(CV)
´ Le but est de trouver la meilleure combinaison des `hyper-paramètres ayant permis de générer le
meilleur modèle.
´ Cette méthode est utilisée quand l’espace de solutions en termes de nombre d’hyper-
paramètres n’est pas très élevé.
´ S’il y a lieu, la méthode de recherche aléatoire (RandomizedSearchCV) est préconisée pour choisir
aléatoirement des combinaisons parmi l’ensemble de combinaisons possibles.
[Link]
Recherche par quadrillage (GridSearchCV) :
19 exemple
´ C’est le cas d’un DecisionTreeClassifier où les hyper-
paramètres sont la profondeur de l’arbre
(max_depth) et le nombre minimum d’observations
pour diviser un nœud (min_samples_split)
´ Dans l’exemple de code, la variable « params » est
un dictionnaire qui décrit la spécification des plages
de variation de ces hyper-paramètres.
´ max_depth est une rangée de valeurs que nous avons
indiqué 2-19, il y aura 18 valeurs
´ min-samples-split: une liste de 3 valeurs.
´ Le nombre de combinaison est 18 x 3 = 54
combinaisons possibles.
´ Le nombre de passes (blocs) de la validation croisée
est de 3:
´ Le nombre de modèles générés : 54 x 3 = 162 modèles
testés pour choisir le meilleur !
[Link]
Etude de cas : reconnaissance de chiffres
20
Dataset MNIST: [Link]
´ Le dataset MNIST est un jeu de données de
chiffres écrits à la main de 70 000 images de
28X28 pixels (noir/blanc). Chaque image
comprends 784 valeurs niveaux de gris:0-255.
Ce jeu de données est intégré dans scikit-learn.
[Link]