Chúng ta có thể sử dụng để lại một giá trị trung bình và độ lệch chuẩn để tiết lộ các ngoại lệ không?


17

Giả sử tôi có dữ liệu phân phối bình thường. Đối với mỗi yếu tố của dữ liệu tôi muốn kiểm tra xem nó có bao nhiêu SD so với giá trị trung bình. Có thể có một ngoại lệ trong dữ liệu (có thể chỉ có một, nhưng cũng có thể là hai hoặc ba) hoặc không, nhưng về cơ bản, đây là những gì tôi đang tìm kiếm. Liệu có ý nghĩa để tạm thời loại trừ yếu tố tôi hiện đang xem xét khỏi tính toán giá trị trung bình và SD không? Suy nghĩ của tôi là nếu nó gần với giá trị trung bình, nó không có bất kỳ tác động nào. Nếu đó là một ngoại lệ, nó có thể sai lệch tính toán trung bình và SD và hạ thấp xác suất mà nó được phát hiện. Tôi không phải là một nhà thống kê, vì vậy bất kỳ trợ giúp được đánh giá cao!


7
Nó có ý nghĩa hoàn hảo và là cơ sở cho nhiều kỹ thuật phát hiện ngoại lệ. Nhưng thay vì phát minh ra phương pháp của riêng bạn, có thể có hoặc không hoạt động (và phương pháp này rất có thể ngay cả với các phương pháp mới được các nhà thống kê phát minh, đó là lý do tại sao họ cần nghiên cứu cẩn thận), tại sao bạn không sử dụng một phương pháp đã được lý thuyết kiểm tra và thử nghiệm thực nghiệm?
whuber

Cảm ơn đã chỉ ra rằng. Tôi sẽ tra cứu những kỹ thuật đó và xem liệu chúng có hoạt động tốt trên dữ liệu của tôi không!
Oliver

1
Kiểm tra trang này về Chẩn đoán xóa hồi quy trong R: stat.ethz.ch/R-manual/R-patched/l Library / stat / html / khăn
Ben Ogorek

.... Và câu trả lời này để minh họa lý do tại sao họ không thể phụ thuộc vào việc tìm kiếm nhiều hơn một ngoại lệ duy nhất.
user603

Những suy nghĩ tuyệt vời ở trên về ý tưởng gắn cờ ngoại lệ. Thỉnh thoảng, tôi đã viết một bài báo về ý tưởng của các bộ lọc loss-pass về việc đánh dấu các dị thường. Hy vọng điều này sẽ giúp mở rộng ý tưởng trình bày ở trên. Liên kết đến bài viết: datascience.com/blog/python-anomaly-detection
Pramit

Câu trả lời:


25

Nó có vẻ phản trực giác, nhưng sử dụng cách tiếp cận mà bạn mô tả không có ý nghĩa (để hiểu từ ngữ của bạn, tôi thà viết "có thể dẫn đến kết quả rất khác so với dự định") và người ta không bao giờ nên làm điều đó: những rủi ro của nó không hoạt động là hệ quả và bên cạnh đó, tồn tại một giải pháp thay thế đơn giản hơn, an toàn hơn và được thiết lập tốt hơn mà không phải trả thêm phí.

Đầu tiên, đúng là nếu có một ngoại lệ duy nhất , thì cuối cùng bạn sẽ tìm thấy nó bằng cách sử dụng thủ tục mà bạn đề xuất. Nhưng, nói chung (khi có thể có nhiều hơn một ngoại lệ trong dữ liệu), thuật toán bạn đề xuất bị phá vỡ hoàn toàn, theo nghĩa có khả năng dẫn đến việc bạn từ chối một điểm dữ liệu tốt như một ngoại lệ hoặc giữ ngoài các điểm dữ liệu tốt với những hậu quả thảm khốc.

Dưới đây, tôi đưa ra một ví dụ bằng số đơn giản trong đó quy tắc bạn đề xuất bị phá vỡ và sau đó tôi đề xuất một giải pháp thay thế an toàn hơn và thiết lập hơn nhiều, nhưng trước đây tôi sẽ giải thích a) điều gì sai với phương pháp bạn đề xuất và b) điều gì thường được ưa thích thay thế cho nó là.

Về bản chất, bạn không thể sử dụng khoảng cách quan sát từ mức trung bình và độ lệch chuẩn của dữ liệu để phát hiện các ngoại lệ một cách đáng tin cậy vì các ước tính bạn sử dụng (bỏ qua một giá trị trung bình và độ lệch chuẩn) vẫn có thể bị kéo về phía còn lại outliers: đây được gọi là hiệu ứng mặt nạ.

Tóm lại, một cách đơn giản để phát hiện các ngoại lệ một cách đáng tin cậy là sử dụng ý tưởng chung mà bạn đề xuất (khoảng cách từ ước tính vị trí và tỷ lệ) nhưng thay thế các công cụ ước tính bạn đã sử dụng (bỏ qua một nghĩa trung bình, sd) bằng các ước tính mạnh mẽ - nghĩa là ước tính được thiết kế để ít bị ảnh hưởng bởi các ngoại lệ.

Xem xét ví dụ này, trong đó tôi thêm 3 ngoại lệ vào 47 quan sát chính hãng được rút ra từ 0,1 Bình thường:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

Mã dưới đây tính toán chỉ số ngoại lệ dựa trên độ lệch trung bình và độ lệch chuẩn (ví dụ: phương pháp bạn đề xuất).

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

và mã này tạo ra cốt truyện bạn nhìn thấy bên dưới.

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

Hình 1 mô tả giá trị của chỉ số ngoại lệ của bạn như là một hàm của giá trị của các quan sát (cách xa nhất của các ngoại lệ nằm ngoài phạm vi của âm mưu này nhưng hai phần còn lại được hiển thị dưới dạng các chấm đỏ). Như bạn có thể thấy, ngoại trừ trường hợp cực đoan nhất, chỉ số ngoại lệ được xây dựng như bạn đề xuất sẽ không tiết lộ các ngoại lệ: thực sự các ngoại lệ thứ hai và thứ ba (nhẹ hơn) thậm chí còn có giá trị (về chỉ số ngoại lệ của bạn) nhỏ hơn tất cảnhững quan sát chân thực! ... Theo cách tiếp cận mà bạn đề xuất, người ta sẽ giữ hai ngoại lệ cực đoan này trong tập hợp các quan sát chân thực, dẫn bạn sử dụng 49 quan sát còn lại như thể chúng đến từ cùng một quá trình đồng nhất, cho bạn một kết quả cuối cùng ước tính giá trị trung bình và sd dựa trên 49 điểm dữ liệu 0,45 và 2,32 này, một mô tả rất kém về một phần của mẫu của bạn!

hình ảnh 2

xTôiX

Ôi(xTôi,X)= =|xTôi-trung gian(X)|điên(X)

trung gian(X)Xđiên(X)

Trong R, chỉ số ngoại lệ thứ hai này có thể được tính là:

out_2 <- abs( x-median(x) )/mad(x)

và vẽ (như trước) bằng cách sử dụng:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

hình ảnh 2

Hình 2 vẽ giá trị của chỉ số ngoại lệ thay thế này cho cùng một tập dữ liệu. Như bạn có thể thấy, bây giờ cả ba ngoại lệ đều được tiết lộ rõ ​​ràng như vậy. Hơn nữa, quy tắc phát hiện ngoại lệ này có một số thuộc tính thống kê được thiết lập. Điều này dẫn đến, trong số những thứ khác, các quy tắc cắt có thể sử dụng. Ví dụ: nếu phần chính của dữ liệu có thể được giả sử được rút ra từ phân phối đối xứng với giây thứ hai hữu hạn, bạn có thể từ chối tất cả các điểm dữ liệu

|xTôi-trung gian(X)|điên(X)>3,5

như ngoại lệ. Trong ví dụ trên, việc áp dụng quy tắc này sẽ dẫn bạn đánh dấu chính xác quan sát 1,2 và 3. Từ chối các giá trị này, giá trị trung bình và sd của các quan sát còn lại là 0,021 và 0,93, mô tả chính xác hơn về phần chính hãng của mẫu !


2
+1 mặc dù câu đầu tiên mà bạn lập tức mâu thuẫn (đề xuất của OP ý nghĩa khi nhiều nhất một ngoại lệ được giả định; sự phản đối của bạn liên quan đến vấn đề với thủ tục này khi giả định đó bị vi phạm).
whuber

1
Cảm ơn bạn. Trong khi đó, tôi đã xóa nhận xét trước đó của mình, dự đoán nó sẽ trở nên lỗi thời sau các chỉnh sửa của bạn.
whuber

3
Hiện tượng một số ngoại lệ làm cho mù phát hiện đơn lẻ đối với bất kỳ trong số chúng thường được gọi là mặt nạ . Điều này có thể giúp mọi người xác định thêm thông tin liên quan đến vấn đề.
Glen_b -Reinstate Monica

1
@ user603 Công việc tuyệt vời tạo ra một kịch bản minh họa nhưng tôi nghĩ rằng bạn đang ném em bé bằng nước tắm. Chẩn đoán xóa hồi quy không hoàn hảo nhưng chúng được áp dụng rộng rãi và đã đứng trước thử thách của thời gian. Lấy trung vị là tốt nhưng tôi tự hỏi làm thế nào bạn mở rộng cách tiếp cận của bạn đến các mô hình dựa trên khả năng phức tạp hơn.
Ben Ogorek

2
+6, Đây là một câu trả lời thực sự tuyệt vời - được giải thích rõ ràng & kỹ lưỡng, được minh họa bằng mã, số liệu & công thức. Tôi tinh chỉnh định dạng mã một chút để dễ đọc hơn một chút. Nếu bạn không thích nó, hãy quay lại với lời xin lỗi của tôi.
gung - Phục hồi Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.