Elliptic Envelope : Guide Complet — Principes, Exemples et Implémentation Python

Elliptic Envelope : Guide Complet — Principes, Exemples et Implémentation Python

Elliptic Envelope : Guide complet — Principes, Exemples et Implémentation Python

Résumé

L’Elliptic Envelope (ou enveloppe elliptique) est une méthode paramétrique de détection d’anomalies qui repose sur une hypothèse forte mais puissante : les données normales suivent une distribution gaussienne multivariée. Plutôt que d’isoler les points un par un, cette approche modèle globalement la distribution des observations typiques et identifie comme anomalies les points qui s’écartent significativement de ce modèle.

L’algorithme utilise une estimation robuste de la moyenne et de la matrice de covariance via le Minimum Covariance Determinant (MCD), ce qui le rend résistant aux anomalies présentes dans les données d’entraînement. Les points dont la distance de Mahalanobis par rapport au centre de la distribution dépasse un seuil dérivé du χ² sont classés comme anomalies.

Dans ce guide, nous explorerons les fondements mathématiques de l’Elliptic Envelope, son intuition géométrique, son implémentation pratique en Python avec scikit-learn, ses hyperparamètres clés, ainsi que ses avantages, limites et cas d’usage concrets.


Principe mathématique

Hypothèse fondamentale

L’Elliptic Envelope suppose que les données « normales » (non anomales) suivent une distribution gaussienne multivariée à p dimensions :

x ~ N(μ, Σ)

où μ est le vecteur moyenne et Σ la matrice de covariance. Sous cette hypothèse, les points qui ont une faible probabilité d’appartenir à cette distribution sont considérés comme des anomalies.

Estimation robuste de la covariance — Minimum Covariance Determinant (MCD)

Si l’on utilisait la moyenne et la covariance empiriques standards pour estimer μ et Σ, les anomalies présentes dans les données biaiseraient massivement ces estimateurs : un point extrême peut déplacer la moyenne et gonfler la covariance, rendant la détection inefficace. C’est le problème classique du point de rupture en statistiques robustes.

Le Minimum Covariance Determinant (MCD), proposé par Rousseeuw en 1985, résout ce problème de manière élégante. Le principe est le suivant :

  1. On cherche le sous-ensemble de h observations (avec h ≤ n, où n est le nombre total d’observations) dont le déterminant de la matrice de covariance est minimal.
  2. La moyenne et la covariance calculées sur ce sous-ensemble constituent les estimateurs robustes μ̂ et Σ̂.

L’intuition derrière cet algorithme est subtile : en cherchant le sous-ensemble dont la covariance a le déterminant le plus petit, on identifie le groupe de points le plus « serré », le plus concentré. Les anomalies, étant par définition dispersées et éloignées du cœur des données, ont tendance à être exclues de ce sous-ensemble optimal. Le paramètre h contrôle la proportion de données considérées comme « normales » — typiquement, on choisit h ≈ n × (1 − contamination).

Le calcul exact du MCD est combinatoirement coûteux (il faudrait examiner tous les sous-ensembles possibles). En pratique, on utilise des algorithmes approchés itératifs comme FAST-MCD, qui convergent rapidement vers une bonne approximation.

Distance de Mahalanobis

Une fois les estimateurs robustes μ̂ et Σ̂ obtenus, on calcule pour chaque observation xₖ sa distance de Mahalanobis par rapport au centre de la distribution :

D²(xₖ) = (xₖ − μ̂)ᵀ Σ̂⁻¹ (xₖ − μ̂)

Cette distance présente plusieurs propriétés essentielles :

  • Elle prend en compte la corrélation entre les variables, contrairement à la distance euclidienne.
  • Elle est invariante par transformation linéaire des données.
  • Elle pondère chaque direction proportionnellement à sa variance : un écart d’une unité dans une direction de forte variance est moins suspect que le même écart dans une direction de faible variance.

Si x suit vraiment une gaussienne multivariée, alors D²(x) suit une distribution du χ² à p degrés de liberté (où p est la dimensionnalité des données).

Seuil de décision

Le seuil de décision est déterminé par le quantile de la distribution χ² à p degrés de liberté correspondant au taux de contamination attendu :

Seuil = χ²_p, 1−α

Le point xₖ est classé comme anomalie si D²(xₖ) > Seuil, et comme donnée normale sinon.

Le paramètre α correspond au taux de points attendus comme anomalies. Par exemple, si l’on s’attend à 5 % d’anomalies, on fixe α ≈ 0.05 et le seuil est le quantile à 95 % du χ².


Intuition géométrique

Visualisons ce qui se passe en deux dimensions pour bien comprendre l’Elliptic Envelope.

Imaginez un nuage de points représentant des observations normales. La plupart se regroupent en amas compact au centre du graphique, avec quelques points isolés loin de cet amas.

L’Elliptic Envelope ajuste une ellipsoïde autour du cœur de données normales. Cette ellipsoïde est centrée sur la moyenne robuste μ̂ et sa forme est dictée par la matrice de covariance robuste Σ̂ :

  • Les axes principaux de l’ellipsoïde correspondent aux vecteurs propres de Σ̂.
  • La longueur de chaque axe est proportionnelle à la racine carrée de la valeur propre correspondante.
  • L’ellipsoïde représente la surface de niveau de la distribution gaussienne contenant un certain pourcentage de probabilité de masse (par exemple 95 %).

Les points situés à l’intérieur de cette ellipsoïde sont considérés comme normaux — ils appartiennent à la distribution gaussienne estimée. Les points situés à l’extérieur sont classés comme anomalies — ils sont statistiquement trop éloignés du centre pour être cohérents avec la distribution normale.

L’avantage crucial de l’estimation robuste (MCD) est qu’elle ne se laisse pas tromper par les anomalies lors de l’ajustement de l’ellipsoïde. Si l’on utilisait la covariance standard, les points anormaux pourraient « étirer » l’ellipsoïde dans leur direction, les incluant paradoxalement dans la région considérée comme normale — c’est le fameux phénomène de masquage (masking en anglais).

En deux dimensions, les lignes de niveau de la distance de Mahalanobis forment des ellipses concentriques (d’où le nom « enveloppe elliptique »). En dimension supérieure, ce sont des ellipsoïdes emboîtés.


Implémentation Python avec scikit-learn

Exemple de base

Scikit-learn fournit la classe EllipticEnvelope dans le module sklearn.covariance :

import numpy as np
import matplotlib.pyplot as plt
from sklearn.covariance import EllipticEnvelope
from sklearn.datasets import make_blobs

# Générer des données : cluster normal + anomalies
X_normal, _ = make_blobs(n_samples=500, centers=1,
                         cluster_std=1.0, random_state=42)
X_anomalies = np.random.uniform(-8, 8, size=(30, 2))
X = np.vstack([X_normal, X_anomalies])

# Créer et entraîner l'Elliptic Envelope
ee = EllipticEnvelope(contamination=0.057, random_state=42)
ee.fit(X)

# Prédire les labels : 1 = normal, -1 = anomalie
labels = ee.predict(X)

# Compter les anomalies
n_anomalies = np.sum(labels == -1)
print(f"Anomalies détectées : {n_anomalies} / {len(X)}")

Visualisation de l’enveloppe en 2D

La véritable puissance de l’Elliptic Envelope se révèle en visualisation :

# Grille pour la frontière de décision
xx, yy = np.meshgrid(
    np.linspace(X[:, 0].min() - 1, X[:, 0].max() + 1, 300),
    np.linspace(X[:, 1].min() - 1, X[:, 1].max() + 1, 300)
)
Z = ee.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

fig, ax = plt.subplots(figsize=(10, 7))

# Boundary de décision
ax.contourf(xx, yy, Z, levels=np.linspace(Z.min(), 0, 10),
            cmap=plt.cm.Blues, alpha=0.4)
ax.contour(xx, yy, Z, levels=[0], linewidths=2, colors='red',
           linestyles='--', label='Frontière de décision')

# Points normaux
ax.scatter(X[labels == 1, 0], X[labels == 1, 1],
           c='steelblue', s=20, label='Normal')
# Anomalies
ax.scatter(X[labels == -1, 0], X[labels == -1, 1],
           c='tomato', s=40, marker='x', label='Anomalie')

ax.set_title("Elliptic Envelope — Détection d'anomalies")
ax.set_xlabel('Caractéristique 1')
ax.set_ylabel('Caractéristique 2')
ax.legend()
plt.tight_layout()
plt.savefig('elliptic_envelope_2d.png', dpi=150)
plt.show()

La ligne rouge en pointillés trace exactement l’ellipsoïde de décision — la frontière entre la région normale et la région anomale.

Comparaison avec les méthodes non paramétriques

Contrairement à l’Isolation Forest (article 055), qui isole les points par des séparations aléatoires sans hypothèse de distribution, ou au One-Class SVM (article 056), qui apprend une frontière complexe dans un espace de caractéristiques, l’Elliptic Envelope impose une structure géométrique spécifique (ellipsoïde) aux données normales.

Cette contrainte est à la fois sa force et sa faiblesse :

  • Si les données normales sont approximativement gaussiennes, l’Elliptic Envelope est extrêmement efficace, rapide et interprétable.
  • Si les données normales ont une forme complexe (en banane, en anneaux, multi-modales), l’hypothèse gaussienne est violée et la performance chute. Dans ce cas, les méthodes non paramétriques comme Isolation Forest ou LOF (article 057) sont préférables.

Hyperparamètres clés

contamination

Le paramètre contamination contrôle la proportion attendue d’anomalies dans les données. Il détermine directement le seuil χ² utilisé pour la classification.

ee = EllipticEnvelope(contamination=0.05, random_state=42)
  • 5 % est une valeur par défaut raisonnable pour de nombreux problèmes.
  • Si vous connaissez approximativement le taux d’anomalies, utilisez cette connaissance.
  • EllipticEnvelope attend une valeur flottante pour contamination (strictement comprise entre 0 et 0,5] ; il n’existe pas d’option 'auto' pour ce modèle.

support_fraction

Ce paramètre contrôle la fraction de points inclus dans le sous-ensemble MCD. Il correspond au rapport h/n dans l’estimateur MCD.

ee = EllipticEnvelope(support_fraction=0.95, random_state=42)
  • 0.95 signifie que 95 % des points sont considérés comme potentiellement normaux.
  • Par défaut (None), scikit-learn choisit automatiquement une fraction de support compatible avec l’estimateur MCD ; ce n’est pas simplement 1 - contamination.
  • Une valeur plus faible rend l’estimateur plus robuste mais réduit l’efficacité statistique (moins de points pour estimer la covariance).
  • Une valeur plus élevée améliore la précision de l’estimation mais risque d’inclure des anomalies dans le sous-ensemble MCD.

random_state

Comme l’algorithme FAST-MCD utilise une initialisation aléatoire, random_state garantit la reproductibilité des résultats :

ee = EllipticEnvelope(contamination=0.05, random_state=42)

Fixer random_state est essentiel pour les environnements de production où la cohérence des résultats est critique.

assume_centered

Si vos données sont déjà centrées (moyenne nulle par construction), ce paramètre permet de gagner du temps de calcul :

ee = EllipticEnvelope(contamination=0.05, assume_centered=True)

Dans ce cas, l’algorithme ne réestime pas la moyenne et se concentre uniquement sur la covariance.


Avantages de l’Elliptic Envelope

  1. Rapidité d’exécution — L’algorithme est nettement plus rapide que le One-Class SVM, avec une complexité qui reste raisonnable même pour des milliers d’observations.
  2. Interprétabilité — La frontière de décision est une ellipsoïde définie par des paramètres statistiques clairs (moyenne, covariance). On peut analyser les axes principaux pour comprendre quelles directions sont les plus discriminantes.
  3. Pas besoin de données uniquement normales — Contrairement au One-Class SVM ou à l’Autoencodeur, l’Elliptic Envelope peut être entraîné sur des données mixtes (normales + anomalies) grâce à l’estimation robuste MCD.
  4. Score de décision continu — La distance de Mahalanobis fournit un score continu permettant de classer les anomalies par sévérité, pas seulement de les détecter binairement.
  5. Bien adapté à la multidimensionalité modérée — Fonctionne bien jusqu’à quelques dizaines de dimensions, tant que l’hypothèse gaussienne est respectée.

Limites de l’Elliptic Envelope

  1. Hypothèse gaussienne forte — C’est la limite principale. Si les données normales ne suivent pas une distribution gaussienne multivariée, les résultats seront médiocres. Vérifiez toujours cette hypothèse (tests de normalité multivariée, Q-Q plots) avant d’utiliser la méthode.
  2. Malédiction de la dimensionnalité — Au-delà de 30-50 dimensions, l’estimation de la matrice de covariance devient instable et le calcul de l’inverse est numériquement difficile. Une réduction de dimensionnalité (PCA) est souvent nécessaire.
  3. Sensibilité aux données multicolinéaires — Si les caractéristiques sont fortement corrélées, la matrice de covariance peut être singulière (non inversible), ce qui cause des erreurs numériques.
  4. Forme de décision rigide — La frontière est toujours une ellipsoïde. Elle ne peut pas capturer des clusters non connexes ou des formes complexes.
  5. Performance sur les données multimodales — Si les données normales forment plusieurs clusters séparés, l’ellipsoïde unique englobera nécessairement les régions vides entre les clusters, créant des faux positifs.

4 cas d’usage concrets

1. Détection de fraudes sur transactions financières

Les transactions légitimes tendent à suivre des distributions gaussiennes dans l’espace des caractéristiques (montant, heure, localisation, fréquence). Une transaction frauduleuse aura typiquement un profil atypique avec une grande distance de Mahalanobis. L’Elliptic Envelope est particulièrement adapté car les données de transactions contiennent naturellement des anomalies (les fraudes réelles) dans les données d’entraînement, et le MCD y résiste.

2. Contrôle qualité industriel en manufacture

Dans un processus de fabrication, les mesures de qualité suivent typiquement une distribution gaussienne centrée autour des spécifications cibles. Un produit défectueux se manifeste par un écart simultané sur plusieurs caractéristiques. L’Elliptic Envelope détecte ces déviations multivariées que des tests univariés individuels manqueraient — un produit peut être dans les tolérances sur chaque caractéristique individuellement mais anormal dans leur combinaison.

3. Surveillance de santé d’équipements (monitoring prédictif)

Les capteurs d’une machine (température, vibration, pression, courant) produisent en régime normal des signaux corrélés suivant une distribution gaussienne. L’apparition d’un défaut mécanique modifie simultanément plusieurs capteurs. L’Elliptic Envelope surveille la distance de Mahalanobis multivariée et alerte dès que le point de fonctionnement sort de l’enveloppe elliptique normale, permettant une maintenance prédictive.

4. Nettoyage de données avant entraînement de modèles

Avant d’entraîner un modèle de machine learning, il est crucial d’identifier et retirer les outliers qui pourraient biaiser l’apprentissage. L’Elliptic Envelope filtre efficacement les observations aberrantes dans les jeux de données de taille modérée. Le score de distance de Mahalanobis permet en outre de décider quelles observations sont suffisamment suspectes pour être exclues.


Bonnes pratiques

  1. Vérifiez l’hypothèse de normalité multivariée avant d’appliquer l’Elliptic Envelope. Utilisez le test de Mardia ou des Q-Q plots multivariés.
  2. Standardisez vos données — bien que l’Elliptic Envelope soit invariant par transformation linéaire, la standardisation facilite l’interprétation et la comparaison des résultats.
  3. Réduisez la dimensionnalité si vous avez plus de 30 variables. Une analyse en composantes principales (PCA) conservant 80-95 % de la variance est généralement suffisante.
  4. Comparez avec des méthodes non paramétriques sur un sous-ensemble de vos données pour valider que l’hypothèse gaussienne est appropriée.
  5. Ajustez soigneusement contamination — un taux mal estimé peut entraîner soit trop de faux positifs, soit trop de faux négatifs.

Voir aussi

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.