1  Prétraitement des données

Code
require(tidyverse)

1.1 Introduction

Le prétraitement des données représente un ensemble de procédures initiales appliquées aux données brutes avant de procéder à l’analyse ou à la modélisation en Machine Learning. Cette étape est cruciale, car la qualité et l’utilité des données influencent directement la performance des algorithmes d’apprentissage automatique. Les données dans le monde réel sont souvent incomplètes, bruitées et inconsistentes, ce qui peut induire en erreur les modèles de Machine Learning et mener à des interprétations erronées des résultats.

1.1.1 Pourquoi le Prétraitement est-il Essentiel ?

  • Amélioration de la qualité des données : Nettoyer les données en enlevant le bruit et en traitant les valeurs manquantes pour réduire les erreurs et améliorer l’exactitude des prédictions.
  • Uniformisation : Standardiser et normaliser les données pour que les variables contribuent équitablement au processus d’apprentissage.
  • Compatibilité des données : Transformer les données pour qu’elles soient dans un format compatible avec les algorithmes de Machine Learning, par exemple en convertissant les variables catégorielles en variables numériques.

1.1.2 Défis du Prétraitement

  • Traitement des valeurs manquantes : Décider de la manière de traiter les entrées manquantes sans introduire de biais ou perdre des informations précieuses.
  • Découverte et élimination des outliers : Identifier les données aberrantes qui peuvent fausser les résultats sans supprimer les variations naturelles dans les données.
  • Sélection des caractéristiques : Choisir les variables pertinentes pour la modélisation tout en excluant les caractéristiques redondantes ou peu informatives.

1.1.3 Objectifs de cette Section

Dans cette section, nous aborderons les techniques essentielles de prétraitement des données, en commençant par la gestion des valeurs manquantes, le filtrage du bruit et des outliers, la normalisation et la standardisation des données pour une uniformité de l’échelle, et l’encodage des variables catégorielles. À travers des exemples pratiques en R, nous illustrerons comment appliquer ces techniques pour préparer efficacement un ensemble de données pour l’analyse et la modélisation.

Dans les sections suivantes, nous explorerons chaque aspect du prétraitement en détail, en fournissant des exemples de code R pour guider le lecteur à travers les étapes pratiques du traitement des données.

1.2 Nettoyage des Données

Le nettoyage des données est une étape préliminaire essentielle qui consiste à corriger ou à supprimer les données incorrectes, incomplètes, inexactes, irrélevantes ou mal formatées dans un dataset. Dans cette section, nous nous concentrerons sur deux aspects majeurs du nettoyage des données : le traitement des valeurs manquantes et le filtrage du bruit et des outliers.

1.2.1 Traitement des Valeurs Manquantes

Les valeurs manquantes peuvent fausser les analyses et affecter négativement la performance des modèles de Machine Learning. Plusieurs stratégies peuvent être adoptées pour gérer les valeurs manquantes :

1.2.1.1 Identification des Valeurs Manquantes

Avant de traiter les valeurs manquantes, nous devons d’abord les identifier.

Example 1.1 (Exemple d’identification des données manquantes)  

Code
# Créer un exemple de dataset
set.seed(123)
data <- data.frame(
  A = c(1, 2, NA, 4, 5),
  B = c(6, NA, 8, 9, 10)
)

# Display
knitr::kable(data)
A B
1 6
2 NA
NA 8
4 9
5 10
Code
# Identifier les valeurs manquantes
apply(data, 2, summary) |>
  knitr::kable()
A B
Min. 1.00 6.00
1st Qu. 1.75 7.50
Median 3.00 8.50
Mean 3.00 8.25
3rd Qu. 4.25 9.25
Max. 5.00 10.00
NA’s 1.00 1.00

1.2.1.2 Stratégies de Traitement

  • Suppression des observations : Supprimer les lignes contenant des valeurs manquantes.
  • Imputation : Remplacer les valeurs manquantes par des estimations, comme la moyenne, la médiane, le mode, ou à l’aide d’un modèle prédictif (régression ou classification supervisée).

Example 1.2 (Exemple d’Imputation)  

Code
# Imputation par la moyenne pour la colonne A et la médiane pour la colonne B
data$A[is.na(data$A)] <- mean(data$A, na.rm = TRUE)
data$B[is.na(data$B)] <- median(data$B, na.rm = TRUE)

data |>
  knitr::kable()
A B
1 6.0
2 8.5
3 8.0
4 9.0
5 10.0

1.2.2 Filtrage du Bruit et des Outliers

Les outliers peuvent biaiser ou invalider les résultats des analyses statistiques et des modèles de prédiction.

1.2.2.1 Détection d’Outliers

Utilisons la méthode de l’écart interquartile (IQR) pour détecter les outliers.

Code
# Calculer l'IQR pour la colonne A
Q1 <- quantile(data$A, 0.25)
Q3 <- quantile(data$A, 0.75)
IQR_A <- Q3 - Q1

# Identifier les outliers
outliers_A <- which(data$A < (Q1 - 1.5 * IQR_A) | data$A > (Q3 + 1.5 * IQR_A))

1.2.2.2 Filtrage des Outliers

Une fois identifiés, les outliers peuvent être supprimés ou corrigés.

Code
# Supprimer les outliers de la colonne A
data <- data[setdiff(1:nrow(data), outliers_A), ]

data

Le nettoyage des données est un processus itératif et dépendant du contexte. Les stratégies doivent être choisies en fonction des objectifs spécifiques de l’analyse ou de la modélisation prévue. En suivant les étapes décrites ci-dessus et en utilisant les exemples de code R, les chercheurs et les analystes peuvent améliorer significativement la qualité de leurs données, conduisant à des analyses plus fiables et des modèles de prédiction plus précis.

1.3 Normalisation et Standardisation

La normalisation et la standardisation sont deux approches de mise à l’échelle des données qui aident à uniformiser la portée des variables caractéristiques, permettant ainsi aux algorithmes de machine learning de les traiter de manière équitable.

1.3.1 Normalisation

La normalisation ajuste les données de telle sorte que leurs valeurs se situent dans une échelle commune, généralement entre 0 et 1. Cette technique est particulièrement utile pour les algorithmes qui calculent des distances entre les données, comme le K-means clustering ou le KNN.

Note

On parle de normalisation Min-Max lorsque l’intervalle visé est \([0, 1]\).

Example 1.3 (Exemple de Normalisation) Utilisons la méthode Min-Max pour normaliser un dataset.

Code
# Chargement de la bibliothèque
require(scales)

# Création d'un exemple de dataset
data_norm <- data.frame(
  A = rnorm(100, mean = 5, sd = 2),
  B = runif(100, min = 2, max = 5)
)

# Normalisation Min-Max
data_norm <- as.data.frame(lapply(data_norm, function(x) scales::rescale(x, to = c(0, 1))))

data_norm |>
  head(n = 5)

1.3.2 Standardisation

La standardisation redimensionne les données de sorte que leur distribution ait une moyenne de \(0\) et un écart type de \(1\). Elle est utile pour les algorithmes qui supposent que toutes les variables caractéristiques ont une distribution normale, comme la régression logistique, les machines à vecteurs de support et les perceptrons multicouches.

Example 1.4 (Exemple de Standardisation)  

Code
data_stand <- data.frame(
  A = rnorm(100, mean = 5, sd = 2),
  B = runif(100, min = 2, max = 5)
)

data_stand <- as.data.frame(scale(data_stand))

data_stand |>
  head(n = 5)

1.4 Quand utiliser Normalisation vs Standardisation ?

  • Normalisation est préférée lorsque vous ne savez pas la distribution des données ou lorsque vous savez que la distribution n’est pas Gaussienne. Elle est également utile lorsque vous avez besoin de valeurs dans une plage liée.

  • Standardisation est recommandée lorsque les données suivent une distribution normale. Cependant, elle est également utile car elle conserve les informations sur les outliers et rend l’algorithme moins sensible aux valeurs aberrantes par rapport à la normalisation.

Il est essentiel de comprendre la nature de vos données et les exigences de l’algorithme que vous utilisez pour choisir la méthode la plus appropriée. Dans de nombreux cas, expérimenter avec les deux méthodes et comparer les performances du modèle peut être la meilleure approche pour déterminer quelle méthode de mise à l’échelle est la plus efficace pour votre problème spécifique.

1.5 Exercices

Après avoir étudié les différentes techniques de prétraitement des données, mettez vos connaissances en pratique avec les exercices suivants. Assurez-vous d’avoir le package tidyverse installé et chargé dans votre session R pour certains de ces exercices.

Exercise 1.1 Le dataset airquality intégré à R contient des mesures de la qualité de l’air avec quelques valeurs manquantes.

  1. Identifiez les colonnes qui contiennent des valeurs manquantes dans le dataset airquality.
  2. Remplacez les valeurs manquantes dans la colonne Ozone par une valeur appropriée de votre choix.
  3. Créez une nouvelle colonne Solar.R_filled dans laquelle vous remplacerez les valeurs manquantes de Solar.R par une stratégie d’imputation de votre choix, mais appliquez cette stratégie uniquement sous certaines conditions que vous définirez basées sur les autres variables du dataset.

Exercise 1.2 (Normalisation et Standardisation) Travaillez toujours avec le dataset airquality. Cette fois, vous vous concentrerez sur la mise à l’échelle des variables numériques.

  1. Normalisez la colonne Wind en utilisant la méthode Min-Max pour que ses valeurs soient comprises entre 0 et 1.
  2. Standardisez la colonne Temp de sorte que sa distribution ait une moyenne de 0 et un écart-type de 1.

Exercise 1.3 (Encodage des Variables Catégorielles) Les variables catégorielles doivent souvent être encodées numériquement avant de pouvoir être utilisées dans la plupart des modèles de machine learning.

  1. Créez un dataframe qui contient une colonne de variables catégorielles, par exemple une colonne Color avec les valeurs “Red”, “Blue”, et “Green”.
  2. Appliquez l’encodage One-hot à cette colonne pour transformer les valeurs catégorielles en un format utilisable par des algorithmes de machine learning.