Phát hiện ngoại lệ đa biến

Phát hiện gian lận với R

Tim Verdonck

Professor Data Science at KU Leuven

Dữ liệu Animals

  • Bộ dữ liệu Animals trong gói MASS chứa trọng lượng não và cơ thể trung bình của 28 loài
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
  • Áp dụng biến đổi log cho cả trọng lượng cơ thể và não
X <- data.frame(log_body = log(Animals$body), log_brain = log(Animals$brain))
Phát hiện gian lận với R

Dữ liệu Animals: phát hiện ngoại lệ đơn biến

Boxplot của log trọng lượng cơ thể và não

animalsbp

Phát hiện gian lận với R

Dữ liệu Animals: biểu đồ phân tán

scatteranimals_ggplot

Phát hiện gian lận với R

Khoảng cách Mahalanobis

Khoảng cách Mahalanobis (hay tổng quát) của một quan sát là khoảng cách từ quan sát tới trung tâm, có xét đến ma trận hiệp phương sai

mahalanobiseuclidean_ggplot

Phát hiện gian lận với R

Dùng khoảng cách Mahalanobis để phát hiện ngoại lệ đa biến

  • Khoảng cách Mahalanobis cổ điển: dùng trung bình mẫu để ước lượng vị trí và ma trận hiệp phương sai mẫu để ước lượng phân tán

  • Để phát hiện ngoại lệ đa biến, so sánh khoảng cách Mahalanobis với ngưỡng cắt lấy từ phân phối khi bình phương

  • Trong 2 chiều, có thể dựng elip dung sai $97{.}5\%$, gồm các quan sát có khoảng cách Mahalanobis không vượt ngưỡng

Phát hiện gian lận với R

Elip dung sai dựa trên khoảng cách 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)
Phát hiện gian lận với R

cltolanimals_ggplot

Phát hiện gian lận với R

Ước lượng vững cho vị trí và phân tán

Bộ ước lượng Minimum Covariance Determinant (MCD) của Rousseeuw là ước lượng vững phổ biến cho vị trí và phân tán đa biến

  • MCD tìm $h$ quan sát có ma trận hiệp phương sai cổ điển với định thức nhỏ nhất
  • Ước lượng vị trí MCD là trung bình của $h$ quan sát này
  • Ước lượng phân tán MCD là ma trận hiệp phương sai mẫu của $h$ điểm này (nhân hệ số hiệu chỉnh)
  • Bước tái gán trọng số được áp dụng để tăng hiệu quả với dữ liệu chuẩn
  • Tính toán MCD khó, nhưng đã có các thuật toán nhanh
Phát hiện gian lận với R

Khoảng cách vững

Ước lượng vững cho vị trí và phân tán bằng MCD

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

# Robust estimate of location
animals.mcd$center 

# Robust estimate of scatter
animals.mcd$cov

Thay các ước lượng vững này vào định nghĩa khoảng cách Mahalanobis, ta được khoảng cách vững và có thể tạo elip dung sai vững.

Phát hiện gian lận với R

Animals: elip dung sai vững

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)
Phát hiện gian lận với R

robtolanimals_ggplot_v3.png

Phát hiện gian lận với R

Đồ thị distance-distance

  • Khi $p>3$ không thể trực quan hóa elip dung sai.
  • Đồ thị distance-distance hiển thị khoảng cách vững của mỗi quan sát so với khoảng cách Mahalanobis cổ điển, lấy trực tiếp từ đối tượng MCD
    plot(animals.mcd, which = "dd")
    
    animalsddplot
Phát hiện gian lận với R

Animals: kiểm tra ngoại lệ

animalsdetection

Phát hiện gian lận với R

Ayo berlatih!

Phát hiện gian lận với R

Preparing Video For Download...