Dans le monde de l’analyse des données et de la prise de décision, il est primordial de s’assurer de la précision et de la fiabilité de vos informations. Parmi l’ensemble des techniques à votre disposition, le Z score se distingue comme une solution puissante pour identifier les anomalies ou les valeurs aberrantes au sein de vos données, ces anomalies sont susceptibles d’influencer les décisions ou de révéler des informations précieuses. Les anomalies peuvent fausser les analyses et conduire à des décisions erronées.
La décision d’utiliser le Z score pour la détection d’anomalies intervient lorsque vous souhaitez trouver des points de données inhabituels dans votre ensemble de données. Cette stratégie est utile pour divers problèmes, tels que la détection de défauts de fabrication, la fraude financière, les problèmes de santé, les intrusions dans les réseaux, etc.
Le Z-score aide à identifier les points de données qui s’écartent significativement de la norme, ce qui permet des actions proactives et une meilleure prise de décision dans des domaines tels que le contrôle de la qualité, la finance, les soins de santé et la cybersécurité. Le choix d’utiliser le Z-score doit tenir compte des caractéristiques des données, des hypothèses de normalité et des spécificités du problème.
La détection d’anomalies (ou détection de valeurs aberrantes) est l’identification d’éléments, d’événements ou d’observations rares qui éveillent des soupçons en différant significativement de la majorité des données. En règle générale, les données anormales peuvent être liées à un type de problème ou à un événement rare tel que, une fraude bancaire, des problèmes médicaux, la détection des pannes et la maintenance prédictive, etc.
L’identification des anomalies est essentielle avant d’exécuter toute analyse statistique ou de préparer des données pour la formation de modèles d’apprentissage automatique. Cela requiert une connaissance approfondie du domaine pour choisir quels points de données sont considérés comme des vraies anomalies ou pas.
Les valeurs aberrantes sont des points de données qui sont éloignés des autres points de données. En d’autres termes, il s’agit de valeurs inhabituelles dans un ensemble de données. Les valeurs aberrantes sont problématiques pour de nombreuses analyses statistiques, car elles peuvent empêcher les tests d’aboutir à des résultats significatifs ou fausser les résultats réels.
Source de l’image : Fondation de la science des données
Il est crucial d’identifier avec soin les valeurs aberrantes potentielles dans votre ensemble de données et de les traiter correctement pour obtenir des résultats précis. Les points de données extrêmes ne sont pas nécessairement des valeurs aberrantes à éliminer, c’est à l’utilisateur de décider s’ils doivent être inclus ou non dans le modèle. Cependant, des erreurs de frappe ou des artefacts de collecte ou de traitement des données peuvent parfois se produire.
L’identification des valeurs aberrantes nécessite une connaissance du domaine et une compréhension du processus de collecte des données. Bien qu’il n’y ait pas de définition mathématique solide, le Z-score est une méthode simple pour sélectionner rapidement des valeurs aberrantes.
Le Z-score est une mesure statistique qui indique la distance entre un point de données et le reste de l’ensemble des données, lorsque les données suivent une distribution normale. En termes plus techniques, le Z-score permet de comprendre si une valeur de données est supérieure ou inférieure à la moyenne et à quel point elle s’en éloigne. Plus précisément, le Z-score indique le nombre d’écarts types d’un point de données par rapport à la moyenne.
Par exemple, un Z-score de 2,5 signifie que le point de données est éloigné de la moyenne de 2,5 écarts-types. Et comme il est loin du centre, il est considéré comme une valeur aberrante.
Le Z-score est une mesure paramétrique qui prend en compte deux paramètres :
Une fois ces deux paramètres calculés, il est facile de trouver le Z-score d’un point de données.
Zscore = (x – mean) / écart-type
Notez que la moyenne et l’écart-type sont calculés pour l’ensemble des données, alors que x représente chaque point de données. Cela signifie que chaque point de données aura son propre Z-score, alors que la moyenne/l’écart type reste le même partout.
La méthode Z-Score est efficace pour traiter les valeurs aberrantes pour les points de données qui suivent une distribution normale.
Pour déterminer si les données sont normalement distribuées, vous pouvez utiliser des techniques d’inspection visuelle telles que les histogrammes et les diagrammes en boîte. Des tests statistiques tels que les tests de Shapiro-Wilk, de Kolmogorov-Smirnov et d’Anderson-Darling peuvent également fournir des évaluations quantitatives de la normalité. Cependant, il est important de considérer que ces tests ne constituent pas une preuve définitive et qu’une combinaison d’inspection visuelle et de tests statistiques est souvent recommandée.
Plus le Z-score est éloigné de zéro, plus elle est inhabituelle. Une valeur seuil standard pour trouver des valeurs aberrantes est un Z-score de +/-3 ou plus par rapport à zéro. En règle générale, les valeurs avec un Z score supérieur à 3 ou inférieur à -3 sont souvent considérées comme des valeurs aberrantes.
Lorsque vous utilisez l’opération “group by” dans les calculs de Z-scores, vous évaluez les points de données individuels dans le contexte de chaque groupe. Cela permet d’identifier les valeurs aberrantes, de supprimer les effets globaux et de faire des comparaisons entre les groupes. Cette approche permet une analyse plus ciblée et plus significative des données.
Une fois que vous aurez identifié les valeurs aberrantes, vous déciderez quoi en faire. Vos principales options sont de les conserver ou de les supprimer de votre ensemble de données. Ceci est similaire au choix auquel vous êtes confronté lorsque vous traitez des données manquantes.
Pour chaque valeur aberrante, demandez-vous s’il s’agit d’une valeur vraie ou d’une erreur avant de décider.
En général, vous devez essayer d’accepter autant que possible les valeurs aberrantes, à moins qu’il ne soit clair qu’elles représentent des erreurs ou de mauvaises données.
Limites du Z-score
Bien que le Z-Score soit un moyen très efficace de détecter et supprimer les valeurs aberrantes, nous ne pouvons pas l’utiliser avec tous les types de données. Cette méthode ne fonctionne qu’avec les données qui sont complètement ou presque normalement distribuées. Cela signifie que cette méthode n’est pas adaptée aux données asymétriques, qu’elles soient à gauche ou à droite.
Grâce au Z-Score, les entreprises peuvent donc détecter les incohérences, les valeurs manquantes ou les valeurs extrêmes dans leurs ensembles de données. Cela permet de nettoyer, de normaliser et de fiabiliser les données, garantissant ainsi leur intégrité et leur précision. Il sera alors possible de rendre la donnée disponible à toutes les directions métiers qui en ont besoin.
Ainsi les entreprises pourront éviter les décisions basées sur des informations erronées, avec des conséquences potentiellement néfastes. Au contraire, des données de qualité permettent une prise de décision plus précise, une meilleure identification des tendances, une personnalisation plus efficace et une anticipation des opportunités.
De plus, des données fiables et de haute qualité permettent de prendre des décisions éclairées, de cibler les investissements, d’optimiser les ressources et de développer des offres et des expériences client plus pertinentes. Cela conduit à une amélioration de la performance globale de l’entreprise et à une meilleure satisfaction des clients grâce à des stratégies Data Driven.
En résumé, le Z-score est un outil statistique précieux qui permet aux entreprises de garantir la qualité des données et de maximiser l’impact commercial en détectant les valeurs aberrantes, en normalisant les données, en évaluant la qualité des données et en prenant des décisions éclairées fondées sur les données. L’intégration de l’analyse du Z-score dans les pratiques de gestion des données peut améliorer de manière significative l’efficacité et la fiabilité des processus et des stratégies de l’entreprise.
_
POUR ALLER PLUS LOIN
Exemple d’implémentation :
Vous trouverez ci-dessous une implémentation Python du Z-score avec quelques exemples de points de données.
# importer numpy
import numpy as np
# points de données aléatoires pour calculer le z-score
data = [5, 5, 5, -99, 5, 5, 5, 5, 5, 5, 88, 5, 5, 5]
# calculer la moyenne
mean = np.mean(data)
# calculer le standard deviation
sd = np.std(data)
# Determiner un threshold
threshold = 2
# créer une liste vide pour stocker les valeurs aberrantes
outliers = []
# Detecter les outliers
for i in data:
z = (i-mean)/sd # calculate z-score
if np.abs(z) > threshold: # identify outliers
outliers.append(i) # add to the empty list
# Imprimer les outliers
print(“The detected outliers are: “, outliers)
#Résultat
-> The detected outliers are: [-99, 88]
Autre exemple :
Dans cet exemple, on va générer le Z-score pour chaque colonne du dataframe, contrairement à l’exemple précédent qu’on applique sur une liste.
On s’assure également de générer des données aléatoires qui suivent une loi gaussienne (loi normale).
#import numpy and pandas
import numpy as np
import pandas as pd
# pour des résultats cohérents générer des données aléatoires
np.random.seed(7)
n_samples = 1000
n_features = 2
# générer des données gaussiennes de forme (125, 2)
gen_cov = np.eye(n_features)
gen_cov[0, 0] = 2.
X = np.dot(np.random.randn(n_samples, n_features), gen_cov)
#Créer un dataframe
df = pd.DataFrame(data=X)
df.rename(columns= {0:‘c1’,1:‘c2’}, inplace = True)
# Créer une fonction pour signaler les limites du Z-Score
for col in df[[‘c1’,‘c2’]].columns:
df[‘outlier_zscore’]= 0
# Calculer les limites
upper_limit = df[col].mean() + 3 * df[col].std()
lower_limit = df[col].mean() – 3 * df[col].std()
#Retourner les limites
conditionlist = [
(df[col] >= upper_limit),
(df[col] <= lower_limit),
(df[col] < upper_limit) & (df[col] > lower_limit) & (df[‘outlier_zscore’]!=-1)]
choicelist = [-1,-1,1]
df[‘outlier_zscore’] = np.select(conditionlist, choicelist, default= 0)
# Imprimer les limites supérieure et inférieure
print(“The detected outliers are: “, lower_limit,upper_limit)
#Résultat
–> The detected outliers are: -5.94783654655283 5.961879541048983
The detected outliers are: -3.02796840080845 2.8741532593951904