2. Data Manipulation en R
Qu'est-ce qu'un arbre de décision?
• Algorithme d'apprentissage supervisé (ayant une variable
cible prédéfinie) qui est principalement utilisé dans les
problèmes de classification.
• Il fonctionne pour les variables d'entrée et de sortie
catégoriques et continues.
• Dans cette technique, nous avons divisé la population ou
l'échantillon en deux ou plusieurs ensembles homogènes (ou
sous-populations) en fonction du facteur de division /
différenciateur le plus significatif dans les variables d'entrée.
2
3. Data Manipulation en R
Exemple
Disons que nous avons un échantillon de 30 étudiants avec trois variables Sexe
(Garçon / Fille), Groupe (1/3) et Présentation (1 a 20). 15 sur 30 réussiront l'examen.
Maintenant, nous voulons créer un modèle pour prédire qui passera l'examen? Dans
ce problème, nous devons séparer les étudiants qui ont réussi son examen en fonction
d'une variable d'entrée très significative parmi les trois.
3
Split par Sexe
Etudiants = 30
Valider = 15
(50%)
Etudiants = 10
Valider = 2
(20%)
Fille
Etudiants = 20
Valider = 13
(65%)
Garcon
Split par
Presentation
Etudiants = 30
Valider = 15
(50%)
Etudiants = 12
Valider = 5 (42%)
Note <10
Etudiants = 18
Valider = 6 (43%)
Note >10
Split par
Groupe
Etudiants = 30
Valider = 15
(50%)
Etudiants = 14
Valider = 26
(43%)
Groupe 1
Etudiants = 16
Valider = 19
(56%)
Groupe 3
4. Data Manipulation en R
Types d'arbres de décision
• Variable catégorique: Arbre de décision qui a une variable cible.
• Exemple : Dans le scénario du problème de l’élève, où la variable cible était «L’élève
fera t’il son devoir ou non», c’est-à-dire OUI ou NON.
• Variable continue: L’arbre de décision a une variable cible continue.
• Exemple : Disons qu’il nous est difficile de prédire si un client paiera sa facture de
renouvellement auprès d’une compagnie d’assurance (oui / non).
• Nous savons ici que le revenu du client est une variable significative, mais que la
compagnie d’assurance ne dispose pas de données détaillées sur le revenu de tous les
clients.
4
6. Data Manipulation en R
Terminologie (2/2)
• Nœud racine: il représente la population entière ou un échantillon, divisé en deux ou
plusieurs ensembles homogènes.
• Fractionnement: il s’agit de diviser un nœud en deux sous-nœuds ou plus.
• Nœud de décision: lorsqu'un sous-nœud se divise en plusieurs sous-nœuds, il est alors
appelé nœud de décision.
• Nœud terminal: les nœuds non divisés sont appelés nœuds terminaux ou terminal.
• Élagage(Purning): lorsque nous supprimons des sous-nœuds d’un nœud de décision, ce
processus est appelé élagage.Vous pouvez dire le processus opposé de la scission.
• Branche: Une sous-section de l’arbre entier est appelée branche ou sous-arbre.
• Nœud parent et enfant: un nœud divisé en sous-nœuds est appelé nœud parent de sous-
nœuds, où les sous-nœuds sont l'enfant du nœud parent.
6
7. Data Manipulation en R
Comment un arbre décide-t-il
où se diviser?
• La décision de division stratégique affecte considérablement la précision d’un arbre.
• Les critères de décision sont différents pour les arbres de classification et de régression.
• Les arbres de décision utilisent plusieurs algorithmes pour décider de diviser un nœud en
deux sous-nœuds ou plus.
• La création de sous-nœuds augmente l'homogénéité des sous-nœuds résultants.
• La sélection de l'algorithme est également basée sur le type de variables cibles.
7
8. Data Manipulation en R
Algorithme pour l’arbe de decision
Gini
Chi-square
Information gain
Reduction in Variance
8
9. Data Manipulation en R
Gini
si nous sélectionnons deux éléments d'une population au hasard, ils doivent
appartenir à la même classe et la probabilité pour cela est de 1 si la population est
pure.
Cela fonctionne avec la variable cible catégorique «Succès» ou «Échec».
Il effectue uniquement des divisions binaires
Plus la valeur de Gini est élevée, plus l'homogénéité est grande.
9
11. Data Manipulation en R
Gini
• Calculez Gini pour les sous-nœuds, en utilisant la formule somme du carré de
probabilité de succès et d’échec:
(p ^ 2 + q ^ 2)
• Calculer Gini pour la scission en utilisant le score de Gini pondéré de chaque
nœud de cette scission
Étapes pour calculer Gini pour une division
11
12. Data Manipulation en R
Gini
Split sur le Sexe:
Calculer, Gini pour le sous-nœud Femme = (0.2) * (0.2) + (0.8) * (0.8) = 0.68
Gini pour le sous-nœud Male = (0,65) * (0,65) + (0,35) * (0,35) = 0,55
Calculer le Gini pondéré pour le sexe divisée = (10/30) * 0,68 + (20/30) * 0,55 = 0,59
Split on Groupe:
Gini pour le sous-noeud de Groupe 1= (0.43) * (0.43) + (0.57) * (0.57) = 0.51
Gini pour le sous-nœud Groupe 3= (0.56) * (0.56) + (0.44) * (0.44) = 0.51
Calculer le Gini pondéré pour le Groupe divisée = (14/30) * 0,51 + (16/30) * 0,51 =
0,51
12
13. Data Manipulation en R
Chi-Square
C'est un algorithme permettant de déterminer la signification statistique entre les
différences entre les sous-nœuds et le nœud parent. Nous le mesurons par la somme
des carrés des différences standardisées entre les fréquences observées et attendues
de la variable cible.
• Cela fonctionne avec la variable cible catégorique «Succès» ou «Échec».
• Il peut effectuer deux divisions ou plus.
• Plus la valeur de Chi-Square est élevée, plus la signification statistique des différences entre le
sous-nœud et le nœud parent est élevée.
• Le chi-Square de chaque nœud est calculé à l'aide de la formule :
Chi-Square = ((Réel - Attendu) ^ 2 / Attendu) ^1/2
• Il génère une arborescence appelée CHAID (Chi-square Automatic Interaction Detector) 13
14. Data Manipulation en R
Chi-Square
• Calculer le Chi-Square pour un nœud individuel en calculant la déviation entre
succès et échec.
• Chi-Square d’une division calculé en utilisant la somme de tous les Chi-Square de
succès et d'échec de chaque nœud d’une division.
Étapes pour calculer Chi-Square pour une division
14
15. Data Manipulation en R
Chi-Square
Split sur le Sexe:
• nœud Femme, remplissez la valeur réelle pour « réussir l’examen » et « ne valide
pas », ici, elles sont 2 et 8 respectivement.
• Calculez la valeur attendue pour « réussir l’examen » et « ne valide pas ». Dans
ce cas, la valeur serait 5 pour les deux, car le nœud parent a une probabilité de
50% et nous avons appliqué la même probabilité au nombre de femmes (10).
• Calculez les écarts en utilisant la formule Réel - Attendu. C'est pour « réussir
l’exam » (2 - 5 = -3) et pour « Ne valide pas » (8 - 5 = 3).
• Calculez le chi carré du nœud pour « réussir l’exam » et « Ne valide pas » à
l'aide d'une formule avec la formule, = ((Réel - Attendu) ^ 2 / Attendu) ^ 1/2.
15
16. Data Manipulation en R
Chi-Square
16
Node reussir Ne valide pas total
Reussir
attendu
Ne valide pas
attendu
Deviation
reussir
Deviation ne
valide pas
Chi-Square
reussir Ne vaide pas
Fille 2 8 10 5 5 -3 3 1.34 1.34
Garcon 13 7 20 10 10 3 -3 0.95 0.95
total 4.58
17. Data Manipulation en R
Arbres de décision avec party
Sepal.Length, Sepal.Width, Petal.Length et Petal.Width permettent de prédire Species
des fleurs.
ctree() crée un arbre de décision.
predict() effectue la prédiction pour les nouvelles données.
17
18. Data Manipulation en R
Arbres de décision avec party
Avant la modélisation, les données sur l'iris sont divisées ci-dessous en deux sous-
ensembles: training (70%) et test (30%).
> set.seed(1500)
> ind <- sample(2, nrow(iris), replace=TRUE, prob=c(0.7,0.3))
> trainData <- iris[ind==1,]
> testData <- iris[ind==2,]
18
19. Data Manipulation en R
Arbres de décision avec party
spécifie que Species est la variable cible et que toutes les autres variables sont des
variables indépendantes.
> library(party)
> Formule <- Species~Sepal.Length + Sepal.Width + Petal.Length +
Petal.Width
> iris_ctree <- ctree(Formule, data=trainData)
> # Verifie la prediction
> table(predict(iris_ctree), trainData$Species)
setosa versicolor virginica
setosa 33 0 0
versicolor 0 34 3
virginica 0 1 34 19
20. Data Manipulation en R
> print(iris_ctree)
Conditional inference tree with 3 terminal nodes
Response: Species
Inputs: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
Number of observations: 105
1) Petal.Length <= 1.9; criterion = 1, statistic = 98.359
2)* weights = 33
1) Petal.Length > 1.9
3) Petal.Width <= 1.7; criterion = 1, statistic = 49.408
4)* weights = 37
3) Petal.Width > 1.7
5)* weights = 35
20
21. Data Manipulation en R
> plot(iris_ctree)
le diagramme en barres de chaque
feuille indique les probabilités qu'une
instance tombe dans les trois espèces.
21
22. Data Manipulation en R
> plot(iris_ctree, type="simple")
Par exemple, le nœud 2 est étiqueté avec
«n = 33, y = (1, 0, 0)», ce qui signifie qu'il
contient 33 instances d'apprentissage et
qu'elles appartiennent toutes à la
première classe «setosa».
22
23. Data Manipulation en R
Après cela, l’arbre construite doit être testé avec des données de test.
> testPred <- predict(iris_ctree, newdata = testData)
> table(testPred, testData$Species)
testPred setosa versicolor virginica
setosa 17 0 0
versicolor 0 15 2
virginica 0 0 11
23
24. Data Manipulation en R
Arbres de décision avec rpart
La fonction rpart () est utilisée pour créer un arbre de décision. L'arbre avec l'erreur
de prédiction minimale est sélectionné. Il est ensuite appliqué aux nouvelles données
pour effectuer une prédiction avec function predict ().
> library(rpart)
> iris_rpart <- rpart(Formule, data = trainData, control =
rpart.control(minsplit = 10))
24
28. Data Manipulation en R
Tree Pruning
o la technique de mise en contrainte est une approche gourmande.
o il recherche instantanément la meilleure répartition et avance jusqu’à atteindre
l’une des conditions d’arrêt spécifiées.
28
29. Data Manipulation en R
Tree Pruning
C'est exactement la différence entre un arbre de décision normal et Pruning. Un arbre
de décision avec des contraintes ne verra pas le camion en avant et adoptera une
approche gourmande en prenant à gauche. D'autre part, si nous utilisons Pruning,
nous examinons en fait quelques étapes et faisons un choix.
1. Nous prenons d’abord l’arbre de décision à une grande profondeur.
2. Nous commençons par le bas et commençons à enlever les feuilles qui nous
donnent des rendements négatifs par rapport au haut.
3. Supposons qu’une Division nous donne un gain de -10 (perte de 10), puis que la
Division suivante nous donne un gain de 20.
29
30. Data Manipulation en R
Qu'est-ce que Radom Forest ?
• Random Forest est une méthode d’apprentissage automatique polyvalente capable
d’exécuter des tâches de régression et de classification.
• Il met également en œuvre des méthodes de réduction dimensionnelle, traite les
valeurs manquantes, et d'autres étapes essentielles de l'exploration des données.
• C'est un type de méthode d'apprentissage d'ensemble, dans laquelle un groupe de
modèles faibles se combine pour former un modèle puissant.
30
31. Data Manipulation en R
Comment ça marche?
nous cultivons plusieurs arbres par opposition à un seul arbre dans le modèle CART.
Pour classer un nouvel objet en fonction d'attributs, chaque arbre donne une
classification et on dit que l'arbre «vote» pour cette classe.
La forêt choisit la classification ayant le plus de voix et en cas de régression, elle
prend la moyenne des sorties de différents arbres.
31
32. Data Manipulation en R
Chaque arbre est planté et cultivé comme suit:
• Supposons que le nombre de cas dans l'ensemble d'apprentissage est N.
• Ensuite, un échantillon de ces N cas est pris au hasard, mais avec
remplacement. Cet échantillon constituera l’entraînement nécessaire à la
croissance de l’arbre.
• S'il y a M variables d'entrée, un nombre m <M est spécifié de telle sorte qu'à
chaque nœud, m variables soient sélectionnées de manière aléatoire sur M.
• La meilleure répartition sur ces m est utilisée pour scinder le nœud.
• La valeur de m est maintenue constante pendant la croissance de la forêt.
• Chaque arbre est cultivé dans la plus grande mesure possible et il n'y a pas
Pruning.
• Prédisez de nouvelles données en agrégeant les prédictions des arbres de niveau
supérieur 32
33. Data Manipulation en R
Random Forest dans R
Il existe deux limitations à la fonction randomForest ().
1. il ne peut pas gérer les données avec des valeurs manquantes, et les utilisateurs
doivent attribuer des données avant de les introduire dans la fonction.
2. une limite de 32 au nombre maximal de niveaux de chaque attribut qualitatif. Les
attributs avec plus de 32 niveaux doivent d’abord être transformés avant d’utiliser
randomForest ().
33
34. Data Manipulation en R
Random Forest dans R
la formule est définie sur "Espèce∼.", ce qui signifie prédire les espèces avec tous les
autres variables dans les données
library(randomForest)
rf <- randomForest(Species~., data=trainData,
ntree=100,proximity=TRUE)
> table(predict(rf), trainData$Species)
setosa versicolor virginica
setosa 33 0 0
versicolor 0 32 4
virginica 0 3 33
print(rf)
attributes(rf)
34
35. Data Manipulation en R
le résultat est vérifié avec les fonctions table () et margin (). La marge d'un point de
données est la proportion de votes pour la classe correcte moins la proportion
maximale de votes pour les autres classes.
> irisPred <- predict(rf, newdata=testData)
> table(irisPred, testData$Species)
> plot(margin(rf, testData$Species))
35
36. Data Manipulation en R
Qu'est-ce que l'analyse de régression?
L’analyse de régression est une technique de modélisation prédictive qui étudie la
relation entre une variable dépendante (cible) et une ou plusieurs variables
indépendantes (prédicteur).
Cette technique est utilisée pour la prévision, time series modelling et la recherche
du lien de causalité entre les variables. Par exemple, la relation entre la conduite
imprudente et le nombre d'accidents de la route causés par un conducteur est mieux
étudiée par la régression.
36
37. Data Manipulation en R
Pourquoi utiliser l'analyse de régression?
Comme mentionné ci-dessus, l'analyse de régression estime la relation entre deux
variables ou plus.
• Estimer la croissance des ventes d’une entreprise en fonction des conditions
économiques actuelles.
• Les données récentes sur les entreprises indiquent que la croissance des
ventes est environ deux fois et demie supérieure à celle de l’économie. En
utilisant cette information, nous pouvons prédire les ventes futures de la
société en fonction des informations actuelles et passées.
37
38. Data Manipulation en R
Pourquoi utiliser l'analyse de régression?
L'utilisation de l'analyse de régression présente de nombreux avantages.
• Il indique les relations significatives entre variable dépendante et variable
indépendante.
• Il indique la force de l'impact de plusieurs variables indépendantes sur une
variable dépendante.
38
39. Data Manipulation en R
Quels sont les types de régressions?
Linear Regression
Logistic Regression
Polynomial Regression
Stepwise Regression
Ridge Regression
Lasso Regression
ElasticNet Regression
39
40. Data Manipulation en R
Régression linéaire
La régression linéaire consiste à prédire la réponse avec une fonction linéaire des
prédicteurs comme suit:
y=c0+c1 x1+c2 x2+···+ck xk
où x1, x2,···, xk sont des prédicteurs et y est la réponse à prédire.
40
41. Data Manipulation en R
Régression linéaire en R
From Australian Bureau of Statistics http://www.abs.gov.au
> year <- rep(2008:2010, each = 4)
> quarter <- rep(1:4, 3)
> cpi <- c(162.2, 164.6, 166.5, 166.0,166.2, 167.0, 168.6,
169.5,171.0, 172.1, 173.3, 174.0)
> plot(cpi, xaxt="n", ylab="CPI", xlab="")
> axis(1, labels=paste(year,quarter,sep="Q"), at=1:12, las=3)
41
42. Data Manipulation en R
> fit <- lm(cpi˜year + quarter)
> fit
Call:
lm(formula = cpi ~ year + quarter)
Coefficients:
(Intercept) year quarter
-7644.488 3.888 1.167
Le modèle de régression linéaire est construit avec la fonction lm () sur les données,
en utilisant un year et quarter comme prédicteurs et un cpi en réponse.
Régression linéaire en R
42
43. Data Manipulation en R
> (cpi2011 <- fit$coefficients[[1]] + fit$coefficients[[2]]*2011 +
fit$coefficients[[3]]*(1:4))
[1] 174.4417 175.6083 176.7750 177.9417
Avec le modèle linéaire ci-dessus, l’cpi est calculé comme suit:
cpi=c0+c1∗year+c2∗quarter
ou c0 , c1, et c2 sont les coefficients de l'ajustement du modèle. Par conséquent, les cpi
de 2011 peuvent être calculés comme suit.
Régression linéaire en R
43
44. Data Manipulation en R
> data2011 <- data.frame(year=2011, quarter=1:4)
> cpi2011 <- predict(fit, newdata=data2011)
> style <- c(rep(1,12), rep(2,4))
> plot(c(cpi, cpi2011), xaxt="n", ylab="CPI", xlab="", pch = style,
col = style)
> axis(1, at=1:16, las=3, labels=c(paste(year,quarter,sep="Q"),
"2011Q1", "2011Q2", "2011Q3", "2011Q4"))
> abline(a=0, b=1)
Régression linéaire en R
44
45. Data Manipulation en R
Régression logistique
chances = p/(1-p) = probabilité d'occurrence de l'événement /
probabilité de ne pas se produire
ln(chances) = ln(p/(1-p))
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk
• La régression logistique est utilisée pour trouver la probabilité d'un événement =
succès et d'un événement = échec.
• Utiliser la régression logistique lorsque la variable dépendante est binaire (0/1,
Vrai / Faux, Oui / Non). Ici, la valeur de Y va de 0 à 1 et peut être représentée par
l’équation suivante
45
46. Data Manipulation en R
Clustering
Clustering consiste à diviser la population ou les points de données en un certain
nombre de groupes de manière à ce que les points de données des mêmes groupes
soient plus similaires aux autres points de données du même groupe que ceux des
autres groupes.
L’objectif est de séparer les groupes ayant des traits similaires et de les affecter au
clusters.
46
47. Data Manipulation en R
Applications du clustering
Recommendation engines
Market segmentation
Social network analysis
Search result grouping
Medical imaging
Image segmentation
Anomaly detection
47
48. Data Manipulation en R
k-Means Clustering
K-Means est un algorithme de classification itératif qui vise à trouver des maxima
locaux dans chaque itération. Cet algorithme fonctionne en 5 étapes:
1. Spécifiez le nombre souhaité de clusters K
2. Attribuer aléatoirement chaque point de données à un cluster
3. Calculer les centroïdes de cluster
4. Réassignez chaque point au centre du cluster le plus proche
5. Recalculer les centroïdes de cluster
6. Réassignez chaque point au centre du cluster le plus proche
48
49. Data Manipulation en R
k-Means Clustering en R
nous retirons les espèces des données à regrouper. Après cela, nous appliquons la
fonction kmeans () à iris2 et stockons le résultat du clustering dans kmeans.result. Le
numéro de cluster est défini sur 3 dans le code ci-dessous.
> iris2 <- iris
> iris2$Species <- NULL
> (kmeans.result <- kmeans(iris2, 3))
49
50. Data Manipulation en R
k-Means Clustering en R
Le résultat du regroupement est ensuite comparé à l'étiquette de classe (Species)
pour vérifier si des objets similaires sont regroupés.
> table(iris$Species, kmeans.result$cluster)
1 2 3
setosa 0 50 0
versicolor 48 0 2
virginica 14 0 36
Le résultat ci-dessus montre que le groupe «setosa» peut être facilement séparé des
autres groupes.
50
51. Data Manipulation en R
> plot(iris2[c("Sepal.Length", "Sepal.Width")],col =
kmeans.result$cluster
> points(kmeans.result$centers[,c("Sepal.Length",
"Sepal.Width")], col=1:3, pch=8, cex=2
51
52. Data Manipulation en R
Il existe quatre dimensions dans les données et que seules les deux premières
dimensions sont utilisées pour tracer le tracé ci-dessous.
Certains points noirs proches du centre vert (astérisque) sont en réalité plus proches
du centre noir dans l'espace à quatre dimensions.
52
53. Data Manipulation en R
k-Medoids Clustering
Clustering de k-medoids avec les fonctions pam () et pamk ().
La classification en kmédoïdes est très similaire à k-means, et la principale différence
entre eux est la suivante:
lorsqu'un cluster est représenté avec son centre dans l'algorithme k-means, il est
représenté avec l'objet le plus proche du centre de la k-medoids clustering.
53
54. Data Manipulation en R
k-Medoids Clustering
Le regroupement de k-medoids est plus robuste que k-means en présence de valeurs
aberrantes.
PAM (Partitioning Around Medoids) est un algorithme classique pour la mise en
cluster de k-medoids. Bien que l’algorithme PAM soit inefficace pour la mise en
cluster de données volumineuses.
CLARA est une technique améliorée de PAM qui consiste à extraire plusieurs
échantillons de données, à appliquer PAM à chaque échantillon, puis à restituer la
meilleure classification.
54
55. Data Manipulation en R
k-Medoids Clustering en R
> pamk.result <- pamk(iris2)
> # number of clusters
> pamk.result$nc
[1] 2
> # check clustering against actual species
> table(pamk.result$pamobject$clustering, iris$Species)
setosa versicolor virginica
1 50 1 0
2 0 49 50
> layout(matrix(c(1,2),1,2)) # 2 graphs per page
> plot(pamk.result$pamobject)
> layout(matrix(1)) # change back to one graph per page
55
59. Data Manipulation en R
k-Medoids Clustering
(1) le groupe 1 est l’espèce «setosa» et est bien séparé des deux autres;
(2) le groupe 2 est principalement composé de «versicolor» et de quelques cas de
«virginica»;
(3) La majorité du groupe 3 sont des «virginica», avec deux cas de «versicolor».
Il est difficile de dire lequel est le meilleur parmi les deux regroupements ci-dessus
produits respectivement avec pamk () et pam (). Cela dépend du problème cible et
du domaine connaissance et expérience. Dans cet exemple, le résultat de pam ()
semble meilleur,
59
60. Data Manipulation en R
Clustering hiérarchique
• La classification hiérarchique, comme son nom l'indique, est un algorithme
permettant de hiérarchiser les grappes. Cet algorithme commence par tous les
points de données assignés à un cluster qui leur est propre.
• Les deux clusters les plus proches sont fusionnés dans le même cluster.
• Cet algorithme se termine lorsqu'il ne reste plus qu'un seul cluster.
60
61. Data Manipulation en R
Clustering hiérarchique en R
Le cluster hiérarchique avec hclust () sur des données iris. Nous tirons d’abord un
échantillon de 40 enregistrements à partir des données de l’iris, afin que le graphe du
cluster ne soit pas surchargé.
> idx <- sample(1:dim(iris)[1], 40)
> irisSample <- iris[idx,]
> irisSample$Species <- NULL
> hc <- hclust(dist(irisSample), method="ave")
> plot(hc, hang = -1, labels=iris$Species[idx])
> rect.hclust(hc, k=3)
> groups <- cutree(hc, k=3)
61
63. Data Manipulation en R
Différence entre K Means
et clustering hiérarchique
• La mise en cluster hiérarchique ne peut pas gérer les données volumineuses, mais
K Means peut le faire. En effet, la complexité temporelle de K Means est linéaire.
• Dans K Moyenne des grappes, puisque nous commençons par un choix aléatoire de
grappes, les résultats obtenus en exécutant l'algorithme plusieurs fois peuvent
différer.
• K Le regroupement des moyens nécessite une connaissance préalable de K
63