R로 배우는 사기 탐지
Tim Verdonck
Professor Data Science at KU Leuven
MASS 패키지의 Animals 데이터셋에는 28종 동물의 평균 뇌·체중이 있습니다.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
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
몸무게와 뇌무게 로그의 박스플롯


관측치의 마할라노비스(일반화) 거리는 공분산행렬을 고려하여 중심까지의 거리를 측정합니다.

고전적 마할라노비스 거리: 위치는 표본평균, 산포는 표본 공분산행렬을 사용합니다.
다변량 이상치를 찾기 위해 마할라노비스 거리를 카이제곱 분포에서 유도된 임계값과 비교합니다.
2차원에서는 $97.5\%$ 허용 타원체를 만들 수 있으며, 이는 마할라노비스 거리가 임계값을 넘지 않는 점들로 정의됩니다.
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)

루세우의 MCD(Minimum Covariance Determinant) 추정량은 위치와 산포의 강건한 다변량 추정량입니다.
MCD로 강건한 위치와 산포 추정
library(robustbase)
animals.mcd <- covMcd(X)
# Robust estimate of location
animals.mcd$center
# Robust estimate of scatter
animals.mcd$cov
이 강건한 위치·산포 추정치를 마할라노비스 거리 정의에 대입하면 강건 거리를 얻고, 강건 허용 타원체를 만들 수 있습니다.
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)

MCD 객체에서 얻은 고전적 마할라노비스 거리를 비교해 보여줍니다.plot(animals.mcd, which = "dd")


R로 배우는 사기 탐지