Tự động xác định ngưỡng để phát hiện bất thường


9

Tôi đang làm việc với một chuỗi thời gian của điểm bất thường (nền là phát hiện bất thường trong mạng máy tính). Mỗi phút, tôi nhận được số điểm bất thường cho tôi biết mức độ "bất ngờ" hoặc bất thường của trạng thái hiện tại của mạng. Điểm càng cao, trạng thái hiện tại càng bất thường. Điểm gần với 5 về mặt lý thuyết là có thể nhưng xảy ra gần như không bao giờ.xt[0,5]

Bây giờ tôi muốn đưa ra một thuật toán hoặc một công thức tự động xác định ngưỡng cho chuỗi thời gian bất thường này. Ngay khi điểm số bất thường vượt quá ngưỡng này, một báo động sẽ được kích hoạt.

Phân phối tần số dưới đây là một ví dụ cho chuỗi thời gian bất thường trong hơn 1 ngày. Tuy nhiên, sẽ không an toàn khi cho rằng mọi chuỗi thời gian dị thường sẽ trông như thế. Trong ví dụ đặc biệt này, một ngưỡng bất thường như .99-quantile sẽ có ý nghĩa vì một vài điểm ở bên phải có thể được coi là dị thường.

nhập mô tả hình ảnh ở đây

Và phân phối tần số giống như chuỗi thời gian (nó chỉ nằm trong khoảng từ 0 đến 1 do không có điểm bất thường cao hơn trong chuỗi thời gian):

chuỗi thời gian

Thật không may, phân phối tần số có thể có hình dạng, trong đó .99-quantile không hữu ích . Một ví dụ dưới đây. Đuôi bên phải rất thấp, do đó, nếu định lượng 0,99 được sử dụng làm ngưỡng, điều này có thể dẫn đến nhiều kết quả dương tính giả. Phân phối tần số này dường như không chứa bất thường, vì vậy ngưỡng nên nằm ngoài phân phối ở khoảng 0,25.

nhập mô tả hình ảnh ở đây

Tóm lại, sự khác biệt giữa hai ví dụ này là cái đầu tiên dường như thể hiện sự bất thường trong khi cái thứ hai thì không.

Theo quan điểm ngây thơ của tôi, thuật toán nên xem xét hai trường hợp sau:

  • Nếu phân phối tần số có đuôi phải lớn (nghĩa là một vài điểm bất thường), thì định lượng 0,99 có thể là một ngưỡng tốt.
  • Nếu phân phối tần số có đuôi phải rất ngắn (nghĩa là không có điểm bất thường), thì ngưỡng nên nằm ngoài phân phối.

/ chỉnh sửa: Cũng không có sự thật cơ bản, tức là bộ dữ liệu được dán nhãn có sẵn. Vì vậy, thuật toán là "mù" so với bản chất của điểm số dị thường.

Bây giờ tôi không chắc làm thế nào những quan sát này có thể được thể hiện dưới dạng thuật toán hoặc công thức. Có ai có một đề nghị làm thế nào vấn đề này có thể được giải quyết? Tôi hy vọng rằng những lời giải thích của tôi là đủ vì nền tảng thống kê của tôi rất hạn chế.

Cảm ơn bạn đã giúp đỡ!


Chỉ cần một lưu ý, biểu đồ đầu tiên không giống bất cứ điều gì bình thường đối với tôi.
mpiktas

1
@cryptron, câu hỏi chính là ngưỡng âm thanh là gì . Ví dụ: nếu mỗi báo động tăng và báo động không tăng phát sinh chi phí nhất định, ngưỡng có thể được chọn sao cho tối thiểu hóa tổng chi phí. Cho rằng chúng ta cần dữ liệu chi phí. Không có định nghĩa chính xác của âm thanh , không thể đo lường cách đánh giá phương pháp được chọn để chọn ngưỡng.
mpiktas

@mpiktas: Tôi phải thừa nhận, từ "âm thanh" thật đáng tiếc trong bối cảnh này vì tôi không có cách nào để đánh giá chặt chẽ ngưỡng này (do đó, tôi đã chỉnh sửa nó đi). Về cơ bản, ngưỡng được cho là để giảm thiểu dương tính giả vì chúng tốn kém hơn nhiều so với phủ định sai trong phát hiện bất thường mạng.
tiền điện tử

@cryptron, bạn có dữ liệu nào về dương tính giả không?
mpiktas

1
Tôi bối rối bởi âm mưu của bạn. Đây là chuỗi thời gian đơn biến lấy giá trị trong ? Hay nó phải là ? (từ việc nhìn vào trục x trong âm mưu đầu tiên của bạn). Một traceplot cũng sẽ hữu ích hơn. Ví dụ, bạn có đạt được điểm cao trong một khoảng thời gian duy trì hoặc trong các đợt ngắn (hoặc cả hai) không? Nếu cả hai, là một rắc rối hơn so với người khác? Nếu bạn có thể đưa ra một mô hình hợp lý cho dữ liệu, bạn có thể sử dụng các lượng tử lý thuyết từ phân phối được trang bị, điều này sẽ giải quyết vấn đề bạn đã xác định với các lượng tử mẫu. 0 < x t5 0 < x t0,5{xt}0<xt50<xt0.5
JMS

Câu trả lời:


2

Bạn có thể tìm thấy giấy quan tâm này. Xem thêm trình bày chi tiết hơn về các mô hình tương tự ở West & Harrison . Cũng có những ví dụ khác về loại giám sát này, nhiều ví dụ gần đây hơn, nhưng đây không chính xác là nhà xe của tôi :). Không còn nghi ngờ gì nữa, có những triển khai phù hợp của các mô hình này, nhưng tôi không biết chúng có thể là gì ...

Ý tưởng cơ bản là bạn có một mô hình chuyển mạch trong đó một số quan sát / trình tự quan sát được quy cho các trạng thái mạng bất thường trong khi phần còn lại được coi là bình thường. Một hỗn hợp như thế này có thể chiếm phần đuôi dài bên phải trong cốt truyện đầu tiên của bạn. Một mô hình động cũng có thể cảnh báo bạn về các bước nhảy bất thường như vào lúc 8:00 và 4:00 theo thời gian thực bằng cách gán xác suất cao cho các quan sát mới thuộc về trạng thái vấn đề. Nó cũng có thể dễ dàng được mở rộng để bao gồm những thứ như dự đoán, các thành phần định kỳ (có lẽ điểm số của bạn tăng / giảm một chút với hoạt động) và loại điều đó.

Chỉnh sửa: Tôi cũng nên thêm, loại mô hình này là "không được giám sát" theo nghĩa là sự bất thường được bắt gặp bằng cách hiển thị một sự thay đổi trung bình lớn hoặc tăng phương sai. Khi bạn thu thập dữ liệu, bạn có thể cải thiện mô hình với các bản phân phối trước nhiều thông tin hơn. Nhưng có lẽ một khi bạn có đủ dữ liệu (và các ví dụ đào tạo khó thắng bằng cách xử lý các sự cố mạng!) Bạn có thể nghĩ ra một số quy tắc giám sát đơn giản (ngưỡng, v.v.)


1

Bạn có bất kỳ ví dụ 'được dán nhãn' nào về sự bất thường không? tức là các giá trị liên quan đến lỗi mạng, hoặc một cái gì đó tương tự?

Một ý tưởng bạn có thể cân nhắc áp dụng là đường cong ROC, rất hữu ích để chọn các ngưỡng đáp ứng một tiêu chí cụ thể, như tối đa hóa dương tính thật hoặc giảm thiểu âm tính giả.

Tất nhiên, để sử dụng đường cong ROC, bạn cần gắn nhãn dữ liệu của mình theo một cách nào đó.


1
Thật không may, tôi không có bộ dữ liệu được dán nhãn. Chỉ có giả định, rằng đuôi dài hoặc ngoại lệ cho thấy sự bất thường trong tập dữ liệu.
tiền điện tử

@cryptron Tôi thấy. Vì vậy, những gì bạn cần là một cách để xác định động các ngoại lệ.
Zach

Điều đó sẽ giải quyết một phần của vấn đề, vâng.
tiền điện tử

1

Biểu đồ của "chuỗi gốc" không phải thể hiện bất kỳ cấu trúc được xác định trước nào. Điều quan trọng là đồ thị của "phần dư từ một chuỗi mô hình phù hợp" cần thể hiện cấu trúc gaussian. "Cấu trúc gaussian" này thường có thể thu được bằng cách kết hợp một hoặc nhiều "biến đổi" sau 1. MÔ HÌNH 2. Điều chỉnh cho dịch chuyển cấp cục bộ hoặc Xu hướng thời gian cục bộ hoặc Xung theo mùa hoặc Xung thông thường 3. phân tích trọng số khai thác tính không đồng nhất đã được chứng minh 4. một phép biến đổi công suất có thể (các bản ghi, v.v.) để đối phó với sự không đồng nhất phương sai cụ thể 5. việc phát hiện các điểm trong thời gian mà mô hình / tham số có thể đã thay đổi.

Phát hiện can thiệp sẽ đưa ra một tuyên bố về ý nghĩa thống kê của sự kiện gần đây nhất cho thấy sự bình thường hoặc sự bất thường


0

Trong phản hồi của OP trước câu trả lời trước của tôi, anh ấy đã đăng dữ liệu của mình lên web. 60 bài đọc mỗi giờ trong 24 giờ trong 6 ngày . Vì đây là công cụ cắt ngang chuỗi thời gian như DBSCAN có mức độ liên quan hạn chế vì dữ liệu có sự phụ thuộc theo thời gian. Với dữ liệu như thế này thường tìm kiếm cấu trúc trong giờ và trong ngày. Ngoài các loại cấu trúc này, người ta có thể theo đuổi việc phát hiện các dị thường có thể chỉ là một lần (xung) hoặc có tính hệ thống (thay đổi cấp độ) bằng các phương pháp được ghi chép tốt (xem tài liệu của Tsay, Tiao, Chen et. al.) Các thủ tục này mang lại "sự bất thường" sau đây. Lưu ý rằng sự thay đổi cấp độ về cơ bản là gợi ý cho các "cụm" riêng biệt. dị thường được xác định hàng đầu

                                HOUR/MINUTE     TIME

-1

Sau khi một người bạn của tôi chỉ cho tôi hướng của các thuật toán phân cụm , tôi tình cờ thấy DBSCAN xây dựng các cụm trong không gian n chiều theo hai tham số được xác định trước. Ý tưởng cơ bản là phân cụm dựa trên mật độ, tức là các vùng dày đặc tạo thành các cụm. Các ngoại lệ được trả lại riêng bằng thuật toán. Vì vậy, khi áp dụng vào biểu đồ 1 chiều của tôi, DBSCAN có thể cho tôi biết, liệu điểm số dị thường của tôi có bất kỳ ngoại lệ nào không. Lưu ý: Trong DBSCAN, ngoại lệ chỉ là một điểm không thuộc về bất kỳ cụm nào. Trong các hoạt động bình thường, tôi hy vọng thuật toán chỉ mang lại một cụm duy nhất (và không có ngoại lệ).

ϵ0.1

Sau khi có thể xác định các ngoại lệ, việc tìm ngưỡng sẽ rút gọn các quy tắc đơn giản như:

  • Nếu tập hợp thể hiện các ngoại lệ, hãy đặt ngưỡng giữa cụm "bình thường" và "ngoại lệ" để lề cho cả hai được tối đa hóa.
  • Nếu tập hợp không thể hiện bất kỳ ngoại lệ nào, hãy đặt ngưỡng một độ lệch chuẩn khỏi điểm ngoài cùng bên phải.

Dù sao, cảm ơn cho tất cả các trả lời hữu ích!


@crypton Làm thế nào để DBSCAN đối phó với loạt tự động tương quan. Ví dụ: chuỗi thời gian 1,9,1,9,1,9,5 sẽ có giá trị sớm hơn / bất thường. Liệu nó có đối phó với sự thay đổi cấp độ trong chuỗi hoặc một số xu hướng có thể? Làm thế nào để nó đối phó với dữ liệu tự phát theo mùa trong khi khác với tháng Sáu mỗi tháng, chuỗi là "thường xuyên" trong khi mỗi tháng sáu là chuỗi "lớn". Các "giá trị tháng sáu lớn" có được phát hiện là ngoại lệ không? Chỉ tò mò thôi!
IrishStat

2
@IrishStat Về cơ bản, cụm DBSCAN chỉ điểm trong không gian n chiều. Vì vậy, sự phù hợp của nó để phân tích chuỗi thời gian là rất hạn chế. Nó hoạt động cho trường hợp đặc biệt của tôi vì tôi chỉ mong đợi một cụm duy nhất trong biểu đồ (1 chiều) của mình. Để trả lời câu hỏi của bạn: Khi sử dụng các tham số thích hợp, giá trị 5 của ví dụ của bạn sẽ được phát hiện là ngoại lệ. Tôi cho rằng nó có thể đối phó với các xu hướng, nhưng trong chuỗi thời gian '1, 2, 3, 4, 5, 6, 7, 2', giá trị 2 sẽ không được coi là ngoại lệ! Tôi hy vọng, điều đó cho một ý tưởng sơ bộ về các khả năng và hạn chế của DBSCAN.
tiền điện tử

1
@crypton Cảm ơn thông tin. Tôi nhận thấy rằng khi bạn đề cập đến 1 cụm, bạn có nghĩa là 1 và chỉ 1 trung bình. Mặc dù không có sự thay đổi trong tự động tương quan trung bình trong dữ liệu của bạn, nó hiển thị "chuỗi thời gian" cho thấy DBSCAN có thể không hữu ích như bạn nghĩ để tách tín hiệu khỏi nhiễu dẫn đến nhận dạng hiệu quả dữ liệu anamolous.
IrishStat

1
@crypton Tôi thấy rằng một cụm ngụ ý trung bình 1 so với chuỗi thời gian có 1,1,1,1,2,2,2,2 với một số sai lệch nhỏ xung quanh các giá trị này.
IrishStat

2
@crpton Tôi nghĩ rằng bạn đang sử dụng một công cụ cắt ngang cho một vấn đề chuỗi thời gian. Đăng dữ liệu thực tế và tôi sẽ cố gắng chứng minh phát hiện bất thường cho bạn bằng phân tích chuỗi thời gian
IrishStat
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.