Phát hiện bất thường: sử dụng thuật toán nào?


10

Bối cảnh: Tôi đang phát triển một hệ thống phân tích dữ liệu lâm sàng để lọc ra những dữ liệu có thể là lỗi chính tả.

Những gì tôi đã làm cho đến nay:

Để định lượng tính hợp lý, nỗ lực của tôi cho đến nay là bình thường hóa dữ liệu và sau đó tính giá trị hợp lý cho điểm p dựa trên khoảng cách của nó với các điểm dữ liệu đã biết trong tập D (= tập huấn luyện):

plausibility(p)=qDGauss(distance(p,q))

Với định lượng đó, sau đó tôi có thể chọn ngưỡng phân tách dữ liệu hợp lý khỏi dữ liệu hợp lý. Tôi đang sử dụng python / numpy.

Vấn đề của tôi:

  1. Thuật toán này không thể phát hiện các kích thước độc lập. Lý tưởng nhất là tôi có thể đưa bất cứ điều gì tôi biết về bản ghi vào thuật toán và để nó tự tìm ra rằng chiều X không ảnh hưởng đến tính hợp lý của bản ghi.
  2. Thuật toán không thực sự hoạt động đối với các giá trị rời rạc như booleans hoặc chọn đầu vào. Chúng có thể được ánh xạ trên các giá trị liên tục, nhưng điều ngược lại là Chọn 1 gần với Chọn 2 hơn là Chọn 3.

Câu hỏi:

Những loại thuật toán nào tôi nên xem xét cho nhiệm vụ này? Dường như có rất nhiều lựa chọn bao gồm các phương pháp thống kê, dựa trên cụm và dựa trên lân cận gần nhất. Ngoài ra, tôi gặp khó khăn khi tìm các bài báo liên quan đến việc phát hiện sự bất thường của sự phức tạp này.

Bất kỳ lời khuyên được đánh giá cao.

[Chỉnh sửa] Ví dụ:

Giả sử dữ liệu bao gồm Chiều cao của một người, Trọng lượng của một người và Dấu thời gian - vì vậy đó là Dữ liệu 3D. Trọng lượng và Chiều cao tương quan, nhưng dấu thời gian là hoàn toàn độc lập. Nếu tôi chỉ xem xét khoảng cách euclide, tôi sẽ phải chọn một ngưỡng nhỏ để phù hợp với hầu hết dữ liệu xác thực chéo của mình. Lý tưởng nhất là thuật toán sẽ bỏ qua kích thước dấu thời gian, bởi vì nó không liên quan để xác định xem một bản ghi có hợp lý hay không, bởi vì dấu thời gian không tương quan với các kích thước khác theo bất kỳ cách nào. Bất kỳ dấu thời gian là hợp lý.

Mặt khác, người ta có thể tạo nên các ví dụ trong đó dấu thời gian có vấn đề. Ví dụ: giá trị Y cho tính năng X có thể hợp lý khi được đo trước một ngày nhất định, nhưng không phải sau một ngày nhất định.


Vui lòng xem câu trả lời của tôi cho stats.stackexchange.com/questions/97946/changepoints-in-r vì nó xử lý câu hỏi bực tức này (với một số!).
IrishStat

Sẽ stats.stackexchange.com/questions/213 là loại điều bạn đang tìm kiếm?
whuber

Tôi nghi ngờ bạn có thể làm cho công việc này cho booleans.
Aksakal

@whuber Tôi không chắc chắn, nó dường như không bao gồm các kích thước không liên quan có thể bị bỏ qua.
Georg

1
Nhân tiện, tôi cũng đang vật lộn để tìm cách chính thức hóa cho cách tiếp cận mà tôi đã mô tả. Nếu tôi biết thuật ngữ chính thức, nó cũng sẽ giúp tôi với nghiên cứu của mình. Có thể có một biến thể của thuật toán này giải quyết ít nhất là vấn đề kích thước độc lập / không liên quan.
Georg

Câu trả lời:


7

Một công thức điển hình của Phát hiện dị thường là tìm giá trị trung bình và phương sai cho từng tính năng của dữ liệu không dị thường và nếu là vectơ của các tính năng đó có các thành phần thì xác định xác suất của sự kết hợp các tính năng nhưmxxip(x)

p(x)=i=1mp(xi;μi,σi2)

trong đó mỗi được phân phối gaussian:xixiN(μi,σi2)

bất thường xảy ra bất cứ khi nàop(x)<ϵ

Phân phối của mỗi không cần phải thực sự bình thường, nhưng sẽ tốt hơn nếu ít nhất là giống như bình thường. Nhưng các tính năng bạn sử dụng là tùy ý; chúng có thể được lấy trực tiếp từ dữ liệu thô hoặc được tính toán, vì vậy, ví dụ nếu bạn nghĩ rằng một tính năng được mô hình hóa tốt hơn bằng cách sử dụng thì hãy đặt tính năng thành thay vì .xixiloglog(xi)xi

Điều này dường như rất giống với những gì bạn đang làm nếu bạn lấy .q=μ

Xác địnhϵ

Thuật toán phù hợp với các ví dụ tiêu cực (không dị thường). Nhưng được xác định từ bộ xác thực chéo và thường được chọn là giá trị cung cấp điểm tốt nhấtϵF1

F1=2PrecisionRecallPrecision+Recall

Nhưng để tính toán F1 bạn cần biết cái gì là dị thường và cái gì không; đó là sự tích cực thực sự là khi hệ thống dự đoán sự bất thường và nó thực sự là một sự bất thường, sự tích cực giả được dự đoán là sự bất thường thực sự không xảy ra và v.v. Vì vậy, trừ khi bạn có điều đó, sau đó bạn có thể phải quay lại phỏng đoán.

Vấn đề về các tính năng tương quan

Ở trên có một nhược điểm mặc dù nếu các tính năng có tương quan. Nếu chúng là như vậy thì tính toán ở trên có thể không gắn cờ một cái gì đó bất thường mà thực sự là. Một sửa chữa cho điều này là sử dụng gaussian đa biến cho các tính năng trong đó là ma trận hiệp phương sai.mΣ

p(x)=1(2π)m2(detΣ)1/2e12(xμ)TΣ1(xμ)

Điều tương tự cũng xảy ra với việc tìm kiếm và cách tiếp cận này cũng có một nhược điểm là bạn phải tính toán nghịch đảo của . Vì vậy, phải có ít nhất nhiều mẫu như các tính năng và nếu số lượng tính năng lớn, quy trình sẽ được tính toán chuyên sâu và bạn phải bảo vệ lại các tính năng phụ thuộc tuyến tính. Hãy ghi nhớ những điều đó, nhưng có vẻ như bạn không phải là vấn đề.ϵΣ


Tôi đã thử cách tiếp cận này rồi, bao gồm phân phối gaussian đa biến. Thật vậy, các tính năng không liên quan không phải là vấn đề với cách tiếp cận này. Những gì tôi tìm thấy là cách tiếp cận này không phù hợp với các mô hình phức tạp. Ví dụ: nếu tôi có bộ dữ liệu 2D có các tính năng F1, F2 trong trường hợp đó là trường hợp khoảng F2 = F1 ^ 3, phân phối gaussian đa biến sẽ chỉ vẽ một hình elip xung quanh dữ liệu và mô hình hóa dữ liệu rất thô. Đó là lý do tại sao tôi đi theo cách tiếp cận được mô tả trong câu hỏi (trong đó không có một q mà nhiều qs).
Georg

Vì vậy, có cách nào để sử dụng phương pháp gaussian đa biến và áp dụng nó để thu thập các mô hình dữ liệu phức tạp hơn không? Ví dụ, các mô hình hỗn hợp có thể giúp tôi trong trường hợp này? Tôi đã đọc một chút về những người trong nghiên cứu của tôi, nhưng chưa hiểu đầy đủ về cách áp dụng chúng.
Georg

@Georg Hmm Tôi tự hỏi liệu vấn đề của bạn không phải là vấn đề của các mô hình phức tạp, mà là dữ liệu phức tạp và các mô hình quá đơn giản. Hay nói cách khác là không phù hợp. Trong trường hợp trên, điều gì xảy ra nếu thay vì sử dụng bạn sử dụng ? Các tính năng có thể được lấy từ dữ liệu hoặc được tính toán. (F1,F2)(F1,F21/3)
waTeim

Vâng, ý nghĩa của tôi là. Và vâng, nó sẽ hoạt động, nhưng tôi muốn có thuật toán phát hiện tự động. Tôi không thể tự sửa đổi các tính năng, nó sẽ hoạt động cho mọi trường hợp.
Georg

Dưới đây là một ví dụ: Hai ô hiển thị dữ liệu cho chiều cao (trục x) và trọng số (trục y) (Xin lỗi cho chú thích của Đức;)). Biểu đồ đầu tiên cho thấy kết quả của phương pháp gaussian đa biến, phần thứ hai của phương pháp được mô tả trong câu hỏi. Trong cả hai trường hợp, ngưỡng được chọn sao cho 97% dữ liệu CV được coi là hợp lý. Cách tiếp cận thứ hai có thể nắm bắt tốt hơn sự phức tạp của dữ liệu. 1: dl.dropboxusercontent.com/u/26034024/anomaly/gauss.png 2: dl.dropboxusercontent.com/u/26034024/anomaly/distance.png
Georg

3

Tôi gần như đã hoàn thành dự án mà tôi cần để giải quyết những vấn đề này và tôi muốn chia sẻ giải pháp của mình, trong trường hợp có ai gặp vấn đề tương tự.

Trước hết, cách tiếp cận mà tôi mô tả rất giống với Ước tính Mật độ Hạt nhân . Vì vậy, đó là điều tốt để biết cho nghiên cứu ...

Tính năng độc lập

Các tính năng độc lập có thể được lọc ra bằng cách đo Hệ số tương quan của nó . Tôi so sánh tất cả các tính năng theo cặp và đo lường mối tương quan. Sau đó, tôi lấy hệ số tương quan tuyệt đối tối đa của từng tính năng làm hệ số tỷ lệ. Theo cách đó, các tính năng không tương quan với bất kỳ tính năng nào khác được nhân với một giá trị gần bằng 0 và do đó ảnh hưởng của chúng đến khoảng cách Euclide(còn gọi là ) là không đáng kể.||x1x2||distance(x1,x2)

Được cảnh báo: hệ số tương quan chỉ có thể đo lường tương quan tuyến tính. Xem trang wiki được liên kết để biết chi tiết. Nếu mối tương quan trong dữ liệu có thể được xấp xỉ tuyến tính, thì điều này hoạt động tốt. Nếu không, bạn nên xem trang cuối của bài viết này và xem liệu bạn có thể sử dụng phép đo tương quan của chúng để đưa ra hệ số tỷ lệ hay không.

Giá trị rời rạc

Tôi chỉ sử dụng thuật toán được mô tả cho các giá trị continuos. Các giá trị riêng biệt được sử dụng để lọc tập huấn luyện. Vì vậy, nếu tôi có chiều cao và cân nặng của một người và tôi biết rằng cô ấy là nữ, tôi sẽ chỉ nhìn vào các mẫu từ những người phụ nữ khác để kiểm tra sự bất thường.

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.