Multivariate uitschieters detecteren

Fraudedetectie in R

Tim Verdonck

Professor Data Science at KU Leuven

Animals-data

  • De dataset Animals in het pakket MASS bevat gemiddelde hersen- en lichaamsgewichten voor 28 dieren
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
  • Pas een logaritmische transformatie toe op zowel lichaams- als hersengewicht
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Fraudedetectie in R

Animals-data: univariate detectie van uitschieters

Boxplot van logaritmen van lichaams- en hersengewicht

animalsbp

Fraudedetectie in R

Animals-data: scatterplot

scatteranimals_ggplot

Fraudedetectie in R

Mahalanobis-afstand

De Mahalanobis- (of gegeneraliseerde) afstand van een observatie is de afstand tot het centrum, rekening houdend met de covariantiematrix

mahalanobiseuclidean_ggplot

Fraudedetectie in R

Mahalanobis-afstand om multivariate uitschieters te vinden

  • Klassieke Mahalanobis-afstanden: steekproefgemiddelde als locatieschatting en steekproef-covariantiematrix als spreidingsschatting

  • Om multivariate uitschieters te detecteren vergelijken we de Mahalanobis-afstand met een afkapwaarde uit de chikwadraatverdeling

  • In twee dimensies kunnen we een $97{.}5\%$-tolerantie-ellipsoïde construeren, gedefinieerd door observaties waarvan de Mahalanobis-afstand de afkapwaarde niet overschrijdt

Fraudedetectie in R

Tolerantie-ellipsoïde op basis van Mahalanobis-afstand

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)
Fraudedetectie in R

cltolanimals_ggplot

Fraudedetectie in R

Robuuste schattingen van locatie en spreiding

De schatter Minimum Covariance Determinant (MCD) van Rousseeuw is een populaire robuuste schatter voor meervoudige locatie en spreiding

  • MCD zoekt die $h$ observaties waarvan de klassieke covariantiematrix de kleinst mogelijke determinant heeft
  • MCD-locatieschatting is daarna het gemiddelde van deze $h$ observaties
  • MCD-spreidingsschatting is de steekproef-covariantiematrix van deze $h$ punten (vermenigvuldigd met een consistentiefactor)
  • Een herweegstap wordt toegepast om de efficiëntie bij normale data te verhogen
  • De berekening van MCD is lastig, maar er zijn snelle algoritmen voorgesteld
Fraudedetectie in R

Robuuste afstand

Robuuste schattingen van locatie en spreiding met MCD

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

# Robuuste locatieschatting
animals.mcd$center 

# Robuuste spreidingsschatting
animals.mcd$cov

Door deze robuuste schattingen in de definitie van de Mahalanobis-afstanden te gebruiken, krijgen we robuuste afstanden en kunnen we een robuuste tolerantie-ellipsoïde maken.

Fraudedetectie in R

Animals: robuuste tolerantie-ellipsoïde

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)
Fraudedetectie in R

robtolanimals_ggplot_v3.png

Fraudedetectie in R

Distance-distance-plot

  • Als $p>3$ kun je de tolerantie-ellipsoïde niet visualiseren.
  • De distance-distance-plot toont de robuuste afstand van elke observatie tegenover de klassieke Mahalanobis-afstand direct uit het MCD-object
    plot(animals.mcd, which = "dd")
    
    animalsddplot
Fraudedetectie in R

Animals: controleer uitschieters

animalsdetection

Fraudedetectie in R

Laten we oefenen!

Fraudedetectie in R

Preparing Video For Download...