Rilevare outlier multivariati

Rilevamento delle frodi in R

Tim Verdonck

Professor Data Science at KU Leuven

Dati Animals

  • Il dataset Animals del pacchetto MASS contiene pesi medi di cervello e corpo per 28 animali
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
  • Applica la trasformazione logaritmica a peso corporeo e cerebrale
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Rilevamento delle frodi in R

Dati Animals: rilevamento univariato di outlier

Boxplot dei log di peso corporeo e cerebrale

animalsbp

Rilevamento delle frodi in R

Dati Animals: scatterplot

scatteranimals_ggplot

Rilevamento delle frodi in R

Distanza di Mahalanobis

La distanza di Mahalanobis (o generalizzata) per un’osservazione è la distanza dal centro, tenendo conto della matrice di covarianza

mahalanobiseuclidean_ggplot

Rilevamento delle frodi in R

Distanza di Mahalanobis per rilevare outlier multivariati

  • Distanze classiche di Mahalanobis: media campionaria per la posizione e matrice di covarianza campionaria per la dispersione

  • Per rilevare outlier multivariati, si confronta la distanza di Mahalanobis con una soglia derivata dalla distribuzione chi-quadro

  • In due dimensioni si può costruire il $97.5\%$ ellissoide di tolleranza, definito dalle osservazioni la cui distanza di Mahalanobis non supera la soglia

Rilevamento delle frodi in R

Ellissoide di tolleranza basato sulla distanza di 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)
Rilevamento delle frodi in R

cltolanimals_ggplot

Rilevamento delle frodi in R

Stime robuste di posizione e dispersione

L’estimatore Minimum Covariance Determinant (MCD) di Rousseeuw è un metodo robusto per posizione e dispersione multivariata

  • L’MCD cerca le $h$ osservazioni la cui matrice di covarianza classica ha il determinante minimo
  • La posizione MCD è la media di queste $h$ osservazioni
  • La dispersione MCD è la matrice di covarianza campionaria di questi $h$ punti (moltiplicata per un fattore di consistenza)
  • Un passaggio di ripesatura migliora l’efficienza in dati normali
  • Il calcolo MCD è complesso, ma esistono algoritmi veloci
Rilevamento delle frodi in R

Distanza robusta

Stime robuste di posizione e dispersione con MCD

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

# Robust estimate of location
animals.mcd$center 

# Robust estimate of scatter
animals.mcd$cov

Inserendo queste stime robuste di posizione e dispersione nella definizione della distanza di Mahalanobis, otteniamo distanze robuste e possiamo creare un ellissoide di tolleranza robusto.

Rilevamento delle frodi in R

Animals: ellissoide di tolleranza robusto

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)
Rilevamento delle frodi in R

robtolanimals_ggplot_v3.png

Rilevamento delle frodi in R

Distance-distance plot

  • Quando $p>3$ non è possibile visualizzare l’ellissoide di tolleranza.
  • Il distance-distance plot mostra la distanza robusta di ogni osservazione rispetto alla sua distanza classica di Mahalanobis ottenuta direttamente dall’oggetto MCD
    plot(animals.mcd, which = "dd")
    
    animalsddplot
Rilevamento delle frodi in R

Animals: verifica outlier

animalsdetection

Rilevamento delle frodi in R

Passiamo alla pratica!

Rilevamento delle frodi in R

Preparing Video For Download...