Cours de Data Mining 2024-2025
Cours de Data Mining 2024-2025
Patie1
Pr Aicha MAJDA
MIAGE
2024-2025
Pré-requis
Statistiques de base
Programmation (Python/R)
Introduction aux bases de données
Objectifs du cours
Comprendre les concepts clés du data mining et les relier aux
techniques de machine learning.
Appliquer des algorithmes de machine learning pour extraire des
patterns cachés dans les données.
Maîtriser les outils et bibliothèques populaires pour implémenter des
modèles de data mining.
Interpréter les résultats des modèles pour la prise de décision dans des
contextes professionnels (finance, marketing, etc.).
Utiliser des techniques de validation croisée et d'évaluation pour
optimiser les modèles prédictifs.
13/11/2024
Contenu du cours
Partie 1
1. Différences et similitudes entre Data Mining, BI et KDD
2. Définition
3. Etapes d’un projet Data Mining
4. Le langage de Programmation ( Python vs R)
Biblio
1. Livre : "Data Mining: Concepts and Techniques" par Jiawei Han,
Micheline Kamber, et Jian Pei.
2. Tutoriels en ligne sur Python et Scikit-learn (par exemple, sur Kaggle ou
Coursera).
13/11/2024
C’est quoi le Data Mining?
13/11/2024
C’est quoi le Data Mining DM?
13/11/2024
DM dans le processus de découverte des
connaissances
Une entreprise de vente au détail utilise des outils BI pour surveiller les
ventes quotidiennes via des tableaux de bord et des rapports. Cela
fournit une vision claire des tendances passées.
13/11/2024
Pourquoi le datamining en BI
Exemple2 :
Une grande banque utilise des outils de Business Intelligence (BI) pour suivre les
transactions quotidiennes de ses clients.
Les rapports descriptifs fournis par la BI montrent :
les volumes de transactions
les soldes des comptes
les tendances d'utilisation des cartes bancaires.
Avantage : permet à la banque de surveiller les opérations et de comprendre les
habitudes des clients.
Inconvénient : ne suffit pas pour identifier des activités frauduleuses ou détecter des
comportements anormaux, car la BI se limite à des analyses descriptives basées sur les
tendances historiques.
13/11/2024
Pourquoi le datamining en BI
Exemple2 :
13/11/2024
Pourquoi le datamining en BI
Résumé
L'analyse descriptive via la BI n'est pas suffisante
elle ne peut qu'observer les faits passés.
Le data mining est essentiel pour identifier des patterns cachées et complexes, prévoir
des insights, et agir en temps réel.
Cela permet à l'entreprise de prendre des décisions proactives basées sur des
modèles prédictifs et de réagir rapidement aux menaces émergentes.
13/11/2024
Etapes d’un projet data Mining
13/11/2024
Collection (Collection)
13/11/2024
Exemple de Data
Généralement les données à analyser sont importé d’un data
warehouse sous forme de fichiers plats : csv, xml,…
Dans cette phase, les données collectées sont explorées et analysées pour en
comprendre la structure, les caractéristiques et la qualité.
Elle peut impliquer des analyses statistiques descriptives, des visualisations de données, et
une évaluation des données manquantes ou des valeurs aberrantes.
L'objectif est de bien comprendre le contexte des données et les informations qu'elles
contiennent.
13/11/2024
Préparation (Preparation)
13/11/2024
Modélisation (Modelling)
13/11/2024
Évaluation (Evaluation)
13/11/2024
Le langage de Programmation pour le
datamining
Python et R sont deux des langages de programmation les plus
utilisés pour le data mining et l'analyse de données.
Chacun a ses propres avantages et inconvénients, et le choix
entre les deux dépend souvent des besoins spécifiques du
projet et des préférences personnelles.
13/11/2024
Python
Avantages
1. Polyvalence :
Python est un langage généraliste, ce qui signifie qu'il peut être utilisé pour une variété d'applications, allant du
développement web à l'analyse de données et à l'apprentissage automatique.
2. Facilité d'apprentissage :
La syntaxe de Python est claire et lisible, ce qui en fait un bon choix pour les débutants.
3. Bibliothèques et outils :
Python dispose d'une vaste collection de bibliothèques pour le data mining, telles que Pandas (pour la
manipulation de données), NumPy (pour les calculs numériques), Matplotlib et Seaborn (pour la visualisation de
données), et Scikit-learn (pour le machine learning).
4. Communauté active :
Python a une communauté très active, avec de nombreux tutoriels, forums, et ressources disponibles pour les
utilisateurs.
5. Intégration :
Il s'intègre facilement avec d'autres langages et technologies, ce qui est utile dans des environnements13/11/2024
de
production.
Python
Inconvenients
1. Statistiques avancées
Python offre des bibliothèques pour l'analyse statistique, mais certaines fonctionnalités
avancées présentes dans R peuvent être plus limitées ou moins accessibles ( Forcast
package en R pour l'analyse et la prévision de séries temporelles)
1. Performance
Python peut être moins performant pour certaines tâches statistiques par rapport à R, bien
que cela soit souvent compensé par la facilité d'intégration avec d'autres outils.
13/11/2024
R
Avantages
1. Statistiques et analyses avancées :
R a été conçu spécifiquement pour l'analyse de données et la statistique, offrant une riche collection
de fonctions pour des analyses complexes.
2. Visualisation :
R est réputé pour ses capacités de visualisation de données, avec des packages comme ggplot2 qui
permettent de créer des graphiques complexes et esthétiques facilement.
3. Packages spécialisés :
R dispose d'une vaste bibliothèque de packages spécialisés pour le data mining, comme caret (pour
le machine learning), dplyr (pour la manipulation de données), et tidyr (pour le nettoyage de
données).
4. Statistiques descriptives :
R est particulièrement performant pour les statistiques descriptives et inférentielles, 13/11/2024
ce qui le
rend idéal pour les analyses exploratoires.
R
Inconvenients
Complexité :
La syntaxe de R peut être moins intuitive pour les débutants, surtout pour ceux qui
n'ont pas de formation en statistiques.
Moins polyvalent :
R est principalement utilisé pour l'analyse de données, et son utilisation en dehors de
ce domaine est moins courante que celle de Python.
Intégration limitée :
R peut être moins intégré dans des environnements de production que Python, ce
qui peut compliquer le déploiement des modèles.
13/11/2024
Installation de Python
13/11/2024
La collecte des données
La collecte de données est le processus de collecte et de mesure d'informations sur
des variables d'intérêt, qui permet de :
répondre à des questions de recherche énoncées
tester des hypothèses
évaluer les résultats.
13/11/2024
La collecte des données
La collecte de données est commune à tous les domaines d'études
les sciences physiques et sociales, les sciences humaines, les affaires, etc.
Bien que les méthodes varient selon la discipline, l'accent mis sur la garantie d'une
collecte précise et fiable reste le même.
13/11/2024
Les catégories de données
Les données sont organisées en deux grandes catégories : qualitatives et quantitatives.
13/11/2024
Les données qualitatives
13/11/2024
Les données qualitatives
13/11/2024
Les données quantitatives
13/11/2024
Les données quantitatives
Ici, non seulement l'écart entre les valeurs est constant, mais il existe aussi un point
zéro absolu (0 kg représente l'absence de poids). Cela permet de dire que
quelqu'un pesant 100 kg est deux fois plus lourd qu'une personne pesant 50 kg.
13/11/2024
Types de fichiers de données
13/11/2024
Data Understanding
Compréhension des données par l’exemple
13/11/2024
Exemple de fichier de données (csv)
Revenvons au fichier csv sur le site de kaggle :
[Link]
models/input
13/11/2024
Exemple de fichier de données (csv)
Revenons au fichier csv sur le site de kaggle :
[Link]
models/input
13/11/2024
Chargement et lecture des données sur R
S’assurer du format du fichier (.csv)
Ouvrir un nouveau fichier .R pour enregistrer le script (ou historique)
S’assurer que le fichier CSV est dans votre répertoire de travail. On peut
vérifier ou définir le répertoire de travail avec getwd() ou setwd() ou
13/11/2024
Chargement et lecture des données sur R
Pour lire le fichier, utiliser la fonction
df<-[Link]("nom_du_fichier.csv", header = TRUE, sep = ",")
ou bien :
13/11/2024
Les métadonnées d’un dataframe
13/11/2024
Les métadonnées d’un dataframe
Fonctions pour accéder aux métadonnées avec R
4. Valeurs manquantes :
colSums([Link](df)) # Renvoie le nombre de valeurs manquantes
pour chaque colonne
5. Résumé statistique :
summary(df) # Renvoie un résumé statistique de chaque colonne
6. Mémoire utilisée :
[Link](df) # Calcule la mémoire utilisée par le DataFrame
13/11/2024
Les métadonnées d’un dataframe
13/11/2024
Les métadonnées d’un dataframe
13/11/2024
Les métadonnées d’un dataframe
Les valeurs de la colonne « SeniorCitizen » sont des binaires 0 et 1, alors qu'il s'agit en fait
par nature d’une caractéristique nominale. Ainsi, afin de ne pas la considérer
numérique, ces valeurs doivent être remplacées par « No » et « Yes ».
df$SeniorCitizen <- ifelse(df$SeniorCitizen == 0, "No",
ifelse(df$SeniorCitizen == 1, "Yes", df$SeniorCitizen))
df$SeniorCitizen <- [Link](df$SeniorCitizen) 13/11/2024
Les métadonnées d’un dataframe
Après …
13/11/2024
La Visualisation des données
13/11/2024
La Visualisation des données
library(ggplot2)
library(dplyr)
ggplot(df, aes(x = Dependents)) +
geom_bar(fill = "purple") +
labs(title = "Customer Distribution by Dependents", x = "Dependents", y
= "Count") +
theme_minimal()
13/11/2024
La Visualisation des données
la bibliothèque library(dplyr)
Fournit des fonctions faciles à utiliser pour la manipulation des données. Il fait partie de la
collection tidyverse et est couramment utilisé pour des tâches telles que le filtrage, la
transformation, la synthèse et la fusion de jeux de données
Si le package n’existe pas :
13/11/2024
La Visualisation des données
la bibliothèque library(dplyr)
Si le package n’existe pas :
13/11/2024
La Visualisation des données
13/11/2024
La Visualisation des données
13/11/2024
La Visualisation des données
13/11/2024
La Visualisation des données
Application
1. Visualiser la distribution des clients pour tous les attributs de type
character
2. Faire une description des figures obtenues
3. Que peut on conclure lorsqu’on affiche la distribution des clients par
rapport à la classe cible ‘Churn’
4. Que peut on conclure quant à la pertinence de l’attribut
‘customerID’
13/11/2024
La Visualisation des données
Graphique à secteurs pour la distribution des clients par service
Exemple Distribution des clients en fonction de l’attribut "InternetService"
library(ggplot2)
# Charger le dataset
data <- [Link]("WA_Fn_UseC_Telco_Customer_Churn.csv")
# compter le nombre de clients pour chaque catégorie d'InternetService
internet_service_distribution <- data %>%
group_by(InternetService) %>%
summarise(Count = n())
# tracer le graphique
ggplot(internet_service_distribution, aes(x = "", y = Count,fill = InternetService)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
labs(title = "Distribution des clients par rapport à l'attribut 'Internet Service'
", x = NULL, y = NULL) +
theme_void() +
theme([Link] = element_blank()) 13/11/2024
La Visualisation des données
13/11/2024
La Visualisation des données
On peut améliorer le graphique à secteur en ajoutant le pourcentage
pour chaque catégorie, en modifiant la fonction plot_pie_chart .
# compter le nombre de clients pour chaque catégorie d'InternetService
internet_service_distribution <- data %>%
group_by(InternetService) %>%
summarise(Count = n()) %>%
mutate(Percentage = round(Count / sum(Count) * 100, 1)) # Calcul du pourcentage
# tracer le graphique
ggplot(internet_service_distribution, aes(x = "", y = Count, fill = InternetService)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
labs(title = "Distribution des clients par rapport à l'attribut 'Internet Service' ",
x = NULL, y = NULL) +
theme_void() +
theme([Link] = element_blank())+
geom_text(aes(label = paste0(Percentage, "%")), position = position_stack(vjust13/11/2024
= 0.5))
La Visualisation des données
On peut améliorer le
graphique à secteur en
ajoutant le pourcentage
pour chaque catégorie, en
modifiant la fonction
plot_pie_chart .
13/11/2024
La Visualisation des données
Application
Visualiser la distribution des clients pour tous les services sous forme de
graphiques à secteurs.
1. Faire une description des figures obtenues
13/11/2024
La corrélation
En data science, la corrélation entre les attributs (ou variables) d'un
dataset est une mesure statistique de la relation linéaire entre deux
variables.
Elle est particulièrement utile pour comprendre comment les variables
d'un dataset sont liées les unes aux autres, ce qui peut être précieux
pour l’analyse, la modélisation prédictive, et le datamining.
La corrélation est un indice de relation entre deux variables. Elle peut
être positive, négative ou nulle.
13/11/2024
La corrélation
Elle se mesure généralement avec un coefficient de corrélation, qui varie
entre -1 et +1 :
• +1 indique une corrélation parfaitement positive : quand une variable
augmente, l'autre augmente proportionnellement.
• -1 indique une corrélation parfaitement négative : quand une variable
augmente, l'autre diminue proportionnellement.
• 0 signifie qu'il n'y a pas de relation linéaire entre les deux variables.
13/11/2024
La corrélation
Corrélation positive : signifie que si une variable augmente, l'autre a
tendance à augmenter également.
Exemple Dans un dataset de ventes, le budget publicitaire pourrait être positivement corrélé
aux ventes, signifiant que plus on investit dans la publicité, plus les ventes augmentent.
2. La corrélation de Spearman
3. La corrélation de Kendall
13/11/2024
La corrélation
• La corrélation linéaire (comme la corrélation de Pearson) nécessite des
données numériques continues pour mesurer la direction et la force de
la relation linéaire entre deux variables.
InternetService_DSL 1 0 0
InternetService_Fiber optic 0 1 0
InternetService_No 0 0 1
13/11/2024
Importance de la corrélation
En datamining, La corrélation est fondamentale pour la compréhension
des données
Comprendre les Relations entre les Variables : Elle aide à détecter les relations et les
influences potentielles entre les différentes caractéristiques d'un dataset
Sélection de Caractéristiques (Feature Selection) : Les variables qui sont fortement
corrélées entre elles apportent souvent des informations redondantes. En
sélectionnant une seule parmi les variables fortement corrélées, on peut réduire la
dimensionnalité du dataset sans perdre beaucoup d'informations.
Prévention de la Multi-Colinéarité : La multi-colinéarité, un problème courant dans la
régression linéaire, survient lorsque deux ou plusieurs variables sont très fortement
corrélées. Cela peut rendre le modèle instable et réduire la précision des
coefficients estimés (Cas de l’attribut TotalCharges)
13/11/2024
La corrélation entre des attributs
numériques en R
La corrélation peut être calculée avec la fonction cor() en R ou corr() en
Python (avec Pandas).
Exemple Corrélation entre ‘tenure’ et ‘TotalCharges’
# charger le dataset
df <- [Link]("WA_Fn_UseC_Telco_Customer_Churn.csv")
# supprimer les 11 instances avec NA dans TotalCharges
df<-[Link](df)
# calculer la corrélation avec la fonction cor()
correlation1 <- cor(df$tenure, df$TotalCharges, use = "[Link]")
# Afficher le coéfficient de la corrélation
correlation1
13/11/2024
La corrélation entre la classe cible est
un attribut numérique
Exemple Corrélation entre ‘Churn’ et un attribut numérique ‘tenure’
# charger le dataset
df <- [Link]("WA_Fn_UseC_Telco_Customer_Churn.csv")
# Afficher le résultat
print(CO)
13/11/2024
La corrélation entre la classe cible est
un attribut catégoriel
gender_Female 1 0
gender_Male 0 1
13/11/2024
La corrélation entre la classe cible est
un attribut catégoriel
# Charger le dataset
data <- [Link]("WA_Fn_UseC_Telco_Customer_Churn.csv")
# Afficher
correlation_gender_female
13/11/2024
correlation_gender_male
Application
Calculer la corrélation entre l’attribut ‘Churn’ et les différents autres attributs
N’oubliez pas de faire les prétraitements avant le calcul de la corrélation :
1. Eliminer l’attribut non pertinent ‘customerID’ en lui attribuant la valeur NULL
2. Eliminer les clients ayant des NA en utilisant la fonction [Link](data)
3. Transformer ‘Churn’ en binaire 1 et 0 en utilisant la fonction ifelse(data$Churn == "Yes", 1, 0)
4. Diviser votre dataset en colonnes catégorielles et numériques en utilisant le code suivant :
numeric_c <- data %>% select(where([Link])) %>% select(-Churn)
5. procéder à un encodage avant de calculer la corrélation pour les attributs de type catégoriel en utilisant la
fonction [Link](~ . - 1, data = categorical_c)
Astuce : vous pouvez appliquez la fonction sapply qui permet d’appliquer une fonction à une
liste et retourne un vecteur de résultat.
Quel sont les attributs qui sont corrélés avec le churn des clients? Que peut- déduire de ces
résultats?
13/11/2024
Solution
Les pipes R (%>% ) sont
# Charger la bib dplyr un moyen d'enchaîner
library(dplyr) plusieurs opérations de
manière concise et
# Charger le dataset expressive
data <- [Link]("WA_Fn_UseC_Telco_Customer_Churn.csv")
# Afficher
correlations
13/11/2024
Solution
13/11/2024
Visualisation de la corrélation
13/11/2024
Visualisation de la corrélation
# Charger la bib ggplot2
if (!requireNamespace("ggplot2", quietly = TRUE)) [Link]("ggplot2")
library(ggplot2)
# Charger le dataset
data <- [Link]("WA_Fn_UseC_Telco_Customer_Churn.csv")
# supprimer CustomerID
data$customerID <- NULL
13/11/2024
Visualisation de la corrélation
13/11/2024
Data Preparation
Préparation des données par l’exemple
13/11/2024
Objectif de la préparation des données
13/11/2024
Processus de la préparation des données
13/11/2024
I. Sélection des données
(data selection)
Etude analytique avant prétraitement :
Quel est le volume des données disponibles ?
Exemple : le débit, tables de base de données, systèmes connectés.
13/11/2024
II. Prétraitement des données
(Data pre-processing)
➢ Etape cruciale qui contribue à améliorer la qualité des données
pour améliorer l'extraction d'information pertinente à partir des
données.
13/11/2024
1. Formatage des données
13/11/2024
3. Nettoyage des données
• Le nettoyage des données (ou data cleaning) est le processus qui consiste
à identifier et à corriger (ou supprimer) les erreurs, incohérences et
inexactitudes dans les données afin d’améliorer leur qualité et de les rendre
adaptées à l’analyse ou à la modélisation.
Classify
Raw data Pre-process Cleaned data Cluster
…
Imbalanced Missing
Irrelevant …
dataset values 13/11/2024
columns
3. Nettoyage des données
Consiste à :
a. Eliminer les données redondantes
b. Ajouter des instances aux classes minoritaires
Equilibrer un data set (imbalanced dataset)
c. Supprimer ou corriger des données manquantes
Missing values.
d. Supprimer les attributs non pertinents
Id.
Son objectif :
Nettoyer les données et garantir que le jeu de données est complet, précis et cohérent, ce
qui améliore la fiabilité et la validité des informations, prédictions ou décisions qui en
13/11/2024
découlent.
a. Eliminer les données redondantes
Duplicated data
13/11/2024
b. Dataset non équilibré
imbalanced Dataset
En R,
balanced_data <- ROSE(Class ~ ., data = data, seed = 1)$data
▪ ROSE(): du package ROSE génère des exemples synthétiques pour les classes
minoritaires pour équilibrer le dataset
▪ Class ~ .: Spécifie que ‘Class’ est le nom de l’attribut cible dans le dataset et ‘.’
représente les autres attributs comme prédicteurs.
ROSE utilisent ces prédicteurs pour générer de nouveaux échantillons
▪ data = data: Spécifie le data ici son nom est ’data’ auquel la fonction ROSE sera
appliquée.
▪ seed = 1: Il garantit la reproductibilité pour obtenir les mêmes échantillons
synthétiques à chaque fois qu’on exécute le code.
▪ $data: La fonction ROSE retourne une liste avec plusieurs éléments. 13/11/2024
13/11/2024
c. Données manquantes DM
Missing values
En R, on peut utiliser plusieurs méthodes pour identifier les DM :
➢ Utiliser [Link]() avec sum() : total_missing <- sum([Link](data))
➢ Utiliser summary() : summary(data)
13/11/2024
c. Données manquantes DM
Missing values
Gestion des valeurs manquantes dans les données numériques
➢ Imputation par une nouvelle catégorie :Créer une nouvelle catégorie à laquelle on
affecte l’étiquette ‘Unknown’
# Imputer avec une nouvelle catégorie 13/11/2024
Dans certains cas, il est approprié de supprimer des lignes ou des colonnes
contenant de trop valeurs manquantes si elles ne sont pas essentielles à votre
analyse :
# Eliminer les lignes avec DM
data <- [Link](data)
# Eliminer les colonnes qui ont un nombre de DM > seuil (Entier)
data <- data[, colSums([Link](data)) < seuil]
13/11/2024
d. Attribut non pertinent
Irrelevent attribute
Exemple d’attributs non pertinents
Un attribut qui ne peut pas affecter le résultat (id,…)
Un attribut qui a la même valeur pour toutes les instances
Un attribut fortement corrélé à un attribut
Objectif : Ne laisser que les attributs pertinents pour réduire le volume
des données ( Dimensional reduction)
Cas simples
Sélectionner l’attribut non pertinent et supprimer : Affecter NULL
Cas difficiles
L’analyse de la corrélation
La méthode RFE (Recursive Feature Elimination) 13/11/2024
d. Attribut non pertinent
Irrelevent attribute
Analyse de corrélation
Pour les données numériques, utilisez l’analyse de corrélation pour supprimer les
caractéristiques fortement corrélées.
data <- [Link]("[Link]")
# Package pour la fonction findCorrelation
[Link]("caret")
library(caret)
# calcul de la matrice de correlation
cor_matrix <- cor(data, use = "[Link]")
# Trouver les attributs très corrélés (> 0.8)
high_corr <- findCorrelation(cor_matrix, cutoff = 0.8)
high_corr
13/11/2024
data_selected <- data[, -high_corr]
d. Attribut non pertinent
Irrelevent attribute
13/11/2024
1. Mise à l’échelle
13/11/2024
2. Décomposition
il peut y avoir des attributs qui représentent un concept complexe qui peut
être plus utile à une méthode d'apprentissage automatique lorsqu'elle est
divisée en parties.
Exemple : la date (jour et heure)
Où seule l'heure de la journée est pertinente pour le problème à résoudre.
13/11/2024
3. Agrégation
il peut y avoir des caractéristiques (attributs) qui peuvent être agrégées en une seule
caractéristique qui serait plus significative pour le problème.
Exemple : Clients qui ont été connectés à un système
Au lieu d’utiliser toutes les instances (observations) pour chaque fois qu'un client se
connecte à un système, il peut y avoir des instances de données qui pourrait être
agrégées en un nombre de connexion permettant de supprimer les instances
supplémentaires.
13/11/2024
3. Agrégation
13/11/2024