Vidéo: Linear Discriminant Analysis in R | Example with Classification Model & Bi-Plot interpretation 2024
Une autre tâche de l'analyse prédictive est de classer de nouvelles données en prédisant à quelle classe appartient un élément de données cible, étant donné un ensemble de variables indépendantes. Vous pouvez, par exemple, classer un client par type - par exemple, en tant que client de grande valeur, client régulier ou client prêt à passer à un concurrent - en utilisant un arbre de décision.
Pour voir des informations utiles sur le modèle de classification R, tapez le code suivant:
La colonne Classe vous indique que vous avez créé un arbre de décision. Pour voir comment les divisions sont déterminées, vous pouvez simplement taper le nom de la variable dans laquelle vous avez affecté le modèle, dans ce cas modèle, comme ceci: Modèle >> modèle Arbre d'inférence conditionnelle avec 6 nœuds terminaux Réponse: seedType Entrées: aire, périmètre, compacité, longueur, largeur, asymétrie, longueur2 Nombre d'observations: 147 1) aire <= 16. 2; critère = 1, statistique = 123. 423 2) aire <= 13. 37; critère = 1, statistique = 63. 549 3) longueur2 4. 914 5) * poids = 45 2) surface> 13. 37 6) longueur2 5. 396 8) * poids = 8 1) surface> 16. 2 9) longueur2 5. 877 11) * poids = 40
Mieux encore, vous pouvez visualiser le modèle en créant un tracé de l'arbre de décision avec ce code:> plot (modèle)
Ceci est une représentation graphique d'un arbre de décision. Vous pouvez voir que la forme globale imite celle d'un arbre réel. Il est constitué de
nœuds(les cercles et les rectangles) et de liens ou de bords (les lignes de connexion). Le tout premier nœud (commençant en haut) s'appelle le nœud racine
et les nœuds en bas de l'arbre (rectangles) sont appelés nœuds terminaux . Il y a cinq nœuds de décision et six nœuds terminaux.
Commencez par le nœud racine, qui est le nœud 1 (le numéro est indiqué dans le petit carré en haut du cercle). Décider en fonction de l'attribut: Est-ce que l'observation # 2 est inférieure ou égale à (notée <=) 16.2? la réponse est oui, alors déplacez-vous le long du chemin vers le nœud 2.
Au nœud 2, le modèle demande: Est-ce que la zone 13. 37? La réponse est oui, alors déplacez-vous le long du chemin vers le nœud 6. Sur ce nœud, le modèle demande: Est-ce que la longueur2 <= 5. 396? il est, et vous passez au nœud terminal 7 et le verdict est que l'observation # 2 est de type de graine 1. Et c'est, en fait, le type de graine 1.
-
Le modèle fait ce processus pour toutes les autres observations pour prédire leur Des classes.
-
Pour savoir si vous avez entraîné un bon modèle, comparez-le aux données d'entraînement. Vous pouvez voir les résultats dans un tableau avec le code suivant: >> table (predict (model), trainSet $ seedType) 1 2 3 1 45 4 3 2 3 47 0 3 1 0 44
Les résultats montrent que l'erreur (ou le taux de classification erronée) est de 11 sur 147, ou de 7,8 pour cent.
-
Avec les résultats calculés, l'étape suivante consiste à lire le tableau.
Les prédictions correctes sont celles qui affichent les numéros de colonnes et de lignes identiques. Ces résultats apparaissent comme une ligne diagonale de haut en bas à gauche; par exemple, [1, 1], [2, 2], [3, 3] sont le nombre de prédictions correctes pour cette classe.
Donc, pour le type de graine 1, le modèle l'a correctement prédit 45 fois, en mal classifiant la graine 7 fois (4 fois comme graine type 2, et 3 fois comme type 3). Pour le type de graine 2, le modèle l'a correctement prédit 47 fois, alors qu'il l'a mal classé 3 fois. Pour le type de graine 3, le modèle l'a correctement prédit 44 fois, tout en le mal classifiant une seule fois.
-
Cela montre que c'est un bon modèle. Alors maintenant, vous l'évaluez avec les données de test. Voici le code qui utilise les données de test pour les prédire et les stocker dans une variable (testPrediction) pour une utilisation ultérieure: >> testPrediction <- predict (model, newdata = testSet)
Pour évaluer comment le modèle a fonctionné avec le tester les données, les afficher dans une table et calculer l'erreur, pour laquelle le code ressemble à ceci: >> table (testPrediction, testSet $ seedType) testPrediction 1 2 3 1 23 2 1 2 1 19 0 3 1 0 17