Qu'est-ce qu'une anomalie ou une valeur aberrante ?

Détection d’anomalies en Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliers vs. valeurs aberrantes

  • Détection d'anomalies : repérer des points de données anormaux
  • Inliers :
    • Points de données « normaux »
    • Représentent la majorité
  • Valeurs aberrantes :
    • Très rares
    • Statistiquement différentes

Deux exemples de valeurs aberrantes : une tulipe rouge dans un champ vert et un bâton noir isolé d'un groupe de bâtons blancs

Détection d’anomalies en Python

La Terre comme anomalie

Toutes les planètes sont des inliers

Image de la Voie lactée vue de très loin.

Seule la Terre est une valeur aberrante

Image curieuse de la planète Terre où l'atmosphère agit comme une lentille révélant la vie.

Détection d’anomalies en Python

Définition statistique

  • Anormalement différentes
  • Caractéristiques sensiblement différentes
  • L'observateur décide si un point est aberrant
Détection d’anomalies en Python

Applications de la détection d'anomalies

Image du mot « security » avec un pointeur de souris dessus.

Détection d’anomalies en Python

Applications de la détection d'anomalies

Main gantée de bleu tenant un petit récipient chimique avec du liquide bleu.

Détection d’anomalies en Python

Applications de la détection d'anomalies

Un homme tend sa carte Visa à une femme tenant un terminal de paiement.

Détection d’anomalies en Python

Exemple de données

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Détection d’anomalies en Python

Moyenne et variance affectées

Données sans valeur aberrante

numbers_a = pd.Series([24, 46, ...])
numbers_a.mean()
33.33
numbers_a.var()
114.5

Données avec valeur aberrante

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Détection d’anomalies en Python

Anomalies dans les données d'entraînement

  • Les anomalies ajoutent du bruit
  • Peuvent être prises pour un sous-groupe
  • Détournent l'attention des vrais motifs
Détection d’anomalies en Python

Valeurs aberrantes vs. nouveautés

Détection de valeurs aberrantes

  • N'existent que dans les données d'entraînement

Détection de nouveautés

  • N'existent que dans de nouvelles données
Détection d’anomalies en Python

Résumé en 5 nombres

import pandas as pd

big_mart = pd.read_csv("big_mart.csv")
sales = big_mart['sales']
sales.describe()
count     8523.000000
mean      2181.288914
std       1706.499616
min         33.290000
25%        834.247400
50%       1794.331000
75%       3101.296400
max      13086.964800
Détection d’anomalies en Python

Tracer un histogramme

import numpy as np
import matplotlib.pyplot as plt

# Trouver la racine carrée de la longueur de sales
n_bins = np.sqrt(len(sales))
# Convertir en entier
n_bins = int(n_bins)


# Tracer plt.figure(figsize=(8, 4)) plt.hist(sales, bins=n_bins, color='red')
Détection d’anomalies en Python

Histogramme obtenu

Histogramme des ventes produits avec des barres rouges et une longue queue à droite.

Détection d’anomalies en Python

Tracer un nuage de points

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Détection d’anomalies en Python

Nuage de points obtenu

Nuage de points : une masse de points dans la moitié inférieure qui s'éclaircit vers le haut.

Détection d’anomalies en Python

Passons à la pratique !

Détection d’anomalies en Python

Preparing Video For Download...