Institut Supérieur Dr.
Sana HAMDI
d’informatique Filière : MP1_SD
Et de Mathématique
TP 3 : Les méthodes de structuration et de classification en
apprentissage supervisé
I. Objectif :
L'objectif de ce TP est la mise en œuvre de méthodes de classification supervisée, l'accent
étant mis sur l'application des arbres de décision et leurs évolutions en Forêt aléatoire, la
mesure de leurs performances selon la nature des échantillons, l'utilisation des approches de
validation pour l'évaluation des modèles construit avec R, l'interprétation des résultats.
II. L'arbre de décision CART (Classification And Regression Tree)
Nous nous intéressons pour notre étude de cas à la base de données « Heart Disease » qui
contient des données de 462 patients pour lesquels on souhaite prédire l'exposition à un
infarctus. Les détails concernant cette base de données sont dans l'annexe C.
1. Echantillonnage : Apprentissage vs Test
Comme pour tout modèle, nous avons besoin de construire l'arbre de décision sur une base
d'apprentissage et de la tester ensuite sur une base de test. La librairie rpart pour la
construction d'arbre de décision inclus de la validation croisée mais il est toujours préférable
de calculer la performance sur un échantillon qui n'est pas impliqué dans le calcul. De ce fait,
nous commençons par séparer nos données en 2 échantillons :
2. Construction de l'arbre de décision
Le package rpart (https ://[Link]/web/packages/rpart/[Link]) est dédié aux
arbres de décision. Nous allons construire un modèle d'arbre de décision grâce à la commande
suivante :
1/4
Les commandes suivantes permettent d'afficher l'arbre de décision sous forme graphique :
3. Élagage de l'arbre de décision
L'un des inconvénients majeur des arbres de décisions est l'utilisation fréquente des variables
moins pertinentes pour l'étape de construction de l'arbre (sur-apprentissage). Ce problème est
résolu par l'étape d'élagage qui consiste à supprimer les sous-arbres super us ou trop liés aux
données, dans le but d'améliorer d'une part, l'aspect prédictif de l'arbre, et réduire d'autre part
sa complexité. À ce stade, si nous souhaitons élaguer l'arbre de décision, il su-t d'exécuter la
commande plotcp() pour déterminer la taille optimale :
4. Évaluation des performances
La prédiction de la variable classe chd pour la base de test s'opère par la commande predict(),
dont le premier argument est le nom du modèle utilisé, et le second, newdata, est le nom du
data frame contenant les éléments de la base de test :
Il est capital que le data frame contenant la base de test soit calqué sur celle ayant servi à la
construction de l'arbre : mêmes noms de colonnes (classe incluse), mêmes types de variables,
etc.
Le logiciel R permet de réaliser de manière très simple la courbe ROC ( Receiver Operating
Characteristic (transmission de signal) qui représente l'évolution de la sensibilité (taux de
vrais positifs) en fonction de 1 - spécificité (taux de faux positifs).
2/4
III. Forêts aléatoires
Le package randomForest a la fonction randomForest() qui est utilisée pour créer et analyser
des forêts aléatoires.
L'application de la fonction d'échantillonnage aléatoire seed() rend vos résultats
reproductibles la prochaine fois que vous chargez le code, car sinon vous pouvez obtenir
différentes classifications pour chaque exécution. Le numéro à l'intérieur n'est pas important,
il vous suffit de vous assurer d'utiliser le même nombre dans seed() à chaque fois afin que les
mêmes nombres aléatoires soient générés dans la fonction randomforest.
Au lieu de spécifier method = "class" comme avec rpart, nous forçons le modèle à prédire
notre classification en modifiant temporairement notre variable cible en un facteur avec
seulement deux niveaux en utilisant [Link](). L'argument ntree spécifie le nombre d'arbres
que nous voulons développer.
Pour identifier le nombre optimal de caractères mtry (variables à sélectionner à chaque
fractionnement), il est possible d'appliquer la fonction RFtune() qui peut nous aider à décider
le nombre optimal de variables de scission dans chaque arbre.
3/4
Le premier argument dans tuneRF() est la donnée contenant des variables indépendantes, la
seconde est une variable prédominante, le troisième est le nombre d'arbres, le facteur de
démarcation est le pas. Delà nous pourrons relancer l'apprentissage de la forêt aléatoire avec
le paramétrage optimal.
La fonction de prédiction fonctionne de manière similaire aux arbres de décision, et nous
pouvons construire notre chier de soumission exactement de la même manière. De ce fait,
nous utilisons le modèle optimal pour la prédiction sur les données de test et nous essayons de
voir comment sont les prédictions :
La forêt aléatoire pour le traitement des données manquantes
La bibliothèque randomForest fournit deux façons de traiter les valeurs manquantes :
[Link] x() : traite les valeurs manquantes de manière classique. Pour les valeurs
manquantes numériques, il impute avec la médiane de la colonne et pour les valeurs
manquantes des caractères, l'imputation arrive avec le mode (la plus grande valeur).
4/4
5/4