Détecter les valeurs aberrantes multivariées

Détection de fraude en R

Tim Verdonck

Professor Data Science at KU Leuven

Données Animals

  • Le jeu de données Animals du package MASS contient les poids moyens du cerveau et du corps pour 28 animaux
library(MASS)
data("Animals")
                    body brain
Mountain beaver     1.35   8.1
Cow               465.00 423.0
Grey wolf          36.33 119.5
Goat               27.66 115.0
  • Appliquez une transformation logarithmique sur les poids du corps et du cerveau
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Détection de fraude en R

Données Animals : détection univariée des valeurs aberrantes

Boîtes à moustaches des logarithmes du poids corporel et du poids du cerveau

animalsbp

Détection de fraude en R

Données Animals : nuage de points

scatteranimals_ggplot

Détection de fraude en R

Distance de Mahalanobis

La distance de Mahalanobis (ou généralisée) pour une observation est la distance de cette observation au centre, en tenant compte de la matrice de covariance

mahalanobiseuclidean_ggplot

Détection de fraude en R

Distance de Mahalanobis pour détecter les valeurs aberrantes multivariées

  • Distances de Mahalanobis classiques : moyenne empirique comme estimation de la position et matrice de covariance empirique comme estimation de la dispersion

  • Pour détecter des valeurs aberrantes multivariées, on compare la distance de Mahalanobis à une valeur seuil, dérivée de la loi du khi deux

  • En deux dimensions, on peut construire l'ellipsoïde de tolérance à $97,5\%$, défini par les observations dont la distance de Mahalanobis ne dépasse pas ce seuil

Détection de fraude en R

Ellipsoïde de tolérance basé sur la distance de Mahalanobis

animals.clcenter <- colMeans(X)
animals.clcov <- cov(X)
rad <- sqrt(qchisq(0.975, df = ncol(X)))

library(car) ellipse.cl <- data.frame(ellipse(center = animals.clcenter, shape = animals.clcov,radius = rad, segments = 100, draw = FALSE)) colnames(ellipse.cl) <- colnames(X)
fig <- fig + geom_polygon(data=ellipse.cl, color = "dodgerblue", fill = "dodgerblue", alpha = 0.2) + geom_point(aes(x = animals.clcenter[1], y = animals.clcenter[2]), color = "blue", size = 6)
Détection de fraude en R

cltolanimals_ggplot

Détection de fraude en R

Estimations robustes de position et de dispersion

L'estimateur Minimum Covariance Determinant (MCD) de Rousseeuw est un estimateur robuste populaire de la position et de la dispersion multivariées

  • MCD cherche les $h$ observations dont la matrice de covariance classique a le déterminant le plus faible
  • L'estimation MCD de la position est alors la moyenne de ces $h$ observations
  • L'estimation MCD de la dispersion est alors la matrice de covariance empirique de ces $h$ points (multipliée par un facteur de cohérence)
  • Une étape de repondération est appliquée pour améliorer l'efficacité sous normalité
  • Le calcul du MCD est difficile, mais plusieurs algorithmes rapides ont été proposés
Détection de fraude en R

Distance robuste

Estimations robustes de position et de dispersion avec le MCD

library(robustbase)
animals.mcd <- covMcd(X)

# Estimation robuste de la position
animals.mcd$center 

# Estimation robuste de la dispersion
animals.mcd$cov

En injectant ces estimations robustes de position et de dispersion dans la définition des distances de Mahalanobis, on obtient des distances robustes et on peut créer un ellipsoïde de tolérance robuste.

Détection de fraude en R

Animals : ellipsoïde de tolérance robuste

library(robustbase)
animals.mcd <- covMcd(X)
ellipse.mcd <- data.frame(ellipse(center = animals.mcd$center, 
                                   shape = animals.mcd$cov,
                                   radius = rad, segments = 100, draw = FALSE))
colnames(ellipse.mcd) <- colnames(X)

fig2 <- fig + geom_polygon(data = ellipse.mcd, color = "red", fill = "red", alpha = 0.3) + geom_point(aes(x = animals.mcd$center[1], y = animals.mcd$center[2]), color = "red", size = 6)
Détection de fraude en R

robtolanimals_ggplot_v3.png

Détection de fraude en R

Distance-distance plot

  • Quand $p>3$, il n'est pas possible de visualiser l'ellipsoïde de tolérance.
  • Le distance-distance plot affiche la distance robuste de chaque observation face à sa distance de Mahalanobis classique obtenue directement à partir de l'objet MCD
    plot(animals.mcd, which = "dd")
    
    animalsddplot
Détection de fraude en R

Animals : vérifier les valeurs aberrantes

animalsdetection

Détection de fraude en R

Passons à la pratique !

Détection de fraude en R

Preparing Video For Download...