Apprendre la classification avec des arbres de décision en R

Robert Wood

Suivre

30 juil. 2019 * 4 min de lecture

En ce qui concerne la classification, l’utilisation d’un classificateur d’arbre de décision est l’un des plus faciles à utiliser.

Pourquoi utiliser un arbre de décision

  • Incroyablement facile à interpréter
  • Il gère très bien les données manquantes & les valeurs aberrantes et en tant que telles nécessitent beaucoup moins de nettoyage à l’avance
  • Vous devez renoncer à l’encodage des variables catégorielles car les arbres de décision gèrent bien les catégories!
  • Sans plonger dans les spécificités du partitionnement récursif, les arbres de décision sont capables de modéliser des relations non linéaires.

Pourquoi ne pas utiliser un arbre de décision

Avec tout ce qui est bon, ils ne sont pas toujours l’option parfaite.

  • De la même manière qu’ils peuvent être simples, ils peuvent également être trop compliqués, ce qui rend presque impossible la conceptualisation ou l’interprétation.
  • Pour aller un peu plus loin dans cette idée, avec un arbre trop biaisé ou compliqué, il peut être trop adapté à ses données d’entraînement et, par conséquent, il est trop adapté.

Formation de modèle

Cela dit, sautons dedans. Je ne parlerai pas de validation croisée ou de train, je testerai beaucoup, mais je publierai le code ci-dessous. Assurez-vous de commenter s’il y a quelque chose sur lequel vous souhaitez plus d’explications.

Nous allons d’abord diviser les données en ensembles de tests d’entraînement &.

Notez également que nous utiliserons le jeu de données titanic classique inclus dans la base R.

Maintenant, nous allons entraîner le modèle en utilisant la fonction rpart du package rpart. Les éléments clés à noter ici sont que la variable que nous voulons prédire est survivante, nous voulons donc comprendre la probabilité qu’un individu donné survive selon certaines données. ~ peut être interprété comme par; donc, en d’autres termes, permet de comprendre certaines variables. Si après le ~ il y a un. cela signifie que nous voulons utiliser toutes les autres variables de l’ensemble de données pour prédire survived. Alternativement, comme indiqué ci-dessous, nous pouvons appeler les variables que nous voulons utiliser explicitement.

Une autre chose à noter est que le method est class. En effet, nous voulons créer un arbre de classification prédisant les résultats catégoriels, par opposition à un arbre de régression qui serait utilisé pour les résultats numériques. Et enfin, les données que nous utilisons pour entraîner le modèle sont train.

model <- rpart(formula = Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data = titanic_train,
method = "class")

Interprétabilité

Comme mentionné précédemment, l’une des choses qui rend un arbre de décision si facile à utiliser est qu’il est incroyablement facile à interpréter. Vous pouvez suivre les différentes branches de l’arbre à différents résultats.

rpart.plot(model)

C’est un peu difficile à lire là-bas, mais si vous zoomez un peu, vous verrez que le premier critère si quelqu’un a probablement vécu ou est mort sur le titanic était de savoir si vous étiez un homme. Si vous étiez un homme, vous vous déplacez vers la branche gauche et travaillez sur deux nœuds, que vous soyez un adulte et que votre frère ou votre conjoint compte à bord. Donc, si vous étiez célibataire, vos chances de survie étaient plutôt minces.

Évaluation des performances

Avant d’extraire les métriques, prédisons les valeurs de votre jeu de tests. Comme pour l’appel à former, vous sélectionnez les données et le type de prédiction. La différence fondamentale étant la spécification du modèle.

test$pred <- predict(object = model, 
newdata = test,
type = "class")

Il existe une variété de mesures d’évaluation des performances qui seront très utiles pour comprendre l’efficacité de votre arbre de décision.

Précision

Cette métrique est très simple, quel pourcentage de vos prédictions étaient correctes. La fonction de matrice de confusion de caret l’inclut.

Matrice de confusion

La fonction confusionMatrix du package caret est incroyablement utile. Pour évaluer la performance du modèle de classification. Chargez le paquet et transmettez-lui vos prédictions & les données réelles.

library(caret)
confusionMatrix(data = test$pred,
reference = test$Survived)

La première chose que cette fonction vous montre est ce qu’on appelle une matrice de confusion. Cela vous montre un tableau de la façon dont les prévisions et les données réelles se sont alignées. Ainsi, les cellules diagonales où la prédiction et la référence sont les mêmes représentent ce que nous avons obtenu correctement. En comptant ceux en hausse de 149 (106 + 43) et en le divisant par le nombre total d’enregistrements, 178; nous arrivons à notre nombre de précision de 83,4%.

Vrai positif : La cellule du quadrant où la référence et la prédiction sont à 1. Cela indique que vous avez prédit la survie et qu’ils ont en fait survécu.

Faux positif: Ici, vous avez prédit positif, mais vous vous êtes trompé.

Vrai négatif: Lorsque vous prédisez négatif, et que vous avez raison.

Faux négatif: Lorsque vous prédisez négatif, et que vous êtes incorrect.

Quelques autres mesures clés à garder à l’esprit sont la sensibilité et la spécificité. La sensibilité est le pourcentage d’enregistrements vrais que vous avez prédits correctement.

La spécificité d’autre part est de mesurer la partie des faux enregistrements réels que vous avez prédits correctement.

La spécificité est à garder à l’esprit lors de la prédiction sur un ensemble de données déséquilibré. Un exemple très courant de ceci est de classer le spam par e-mail. 99% du temps, ce n’est pas du spam, donc si vous aviez prédit que rien n’était jamais du spam, vous auriez une précision de 99%, mais votre spécificité serait de 0, ce qui conduirait à l’acceptation de tous les spams.

Conclusion

J’espère que vous avez apprécié cette leçon rapide sur les arbres de décision. Faites-moi savoir s’il y avait quelque chose sur lequel vous vouliez plus d’informations ou s’il y a quelque chose que vous aimeriez que je couvre dans un autre article.

Bonne science des données ! Si vous avez apprécié cela, venez consulter d’autres articles comme celui-ci à datasciencelessons.com!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Previous post WordPress.org
Next post Plantation de Fèves – Comment Faire Pousser Des Fèves Dans Le Jardin