Phát hiện dị thường chuỗi thời gian với Python


9

Tôi cần thực hiện phát hiện bất thường trên một số bộ dữ liệu chuỗi thời gian. Tôi chưa bao giờ làm điều này trước đây và hy vọng cho một số lời khuyên. Tôi rất thoải mái với python, vì vậy tôi thích giải pháp được thực hiện trong đó (hầu hết mã của tôi là python cho các phần khác trong công việc của tôi).

Mô tả dữ liệu: Đó là dữ liệu chuỗi thời gian hàng tháng chỉ mới bắt đầu được thu thập trong 2 năm qua hoặc lâu hơn (tức là chỉ khoảng 24-36 khoảng thời gian). Về cơ bản, có một số số liệu được theo dõi hàng tháng cho một số khách hàng.

time_period    client    metric    score
01-2013        client1   metric1   100
02-2013        client1   metric1   119
01-2013        client2   metric1   50
02-2013        client2   metric2   500
...

Đây là những gì tôi nghĩ: kéo dữ liệu vào một khung dữ liệu (gấu trúc), sau đó tính trung bình 6 tháng cho mỗi cặp khách hàng / số liệu. Nếu giá trị của khoảng thời gian hiện tại vượt quá một số ngưỡng dựa trên thời gian 6 tháng, sau đó tăng cờ. Vấn đề có vẻ khá đơn giản. Tôi chỉ muốn chắc chắn rằng tôi đang thực hiện một cách tiếp cận vững chắc.

Bất kỳ lời khuyên để xác thịt ý tưởng này một chút sẽ được đánh giá rất cao. Tôi biết câu hỏi hơi trừu tượng và tôi xin lỗi vì điều đó.


Tôi không biết cách trăn, nhưng câu hỏi này chứa đầy ý tưởng liên quan đến các cách tiếp cận chung: stats.stackexchange.com/questions/26688/ trộm
rapaio

pypi.org/project/anomaly-detection Điều này được xây dựng trong thư viện để phát hiện sự bất thường trong python, tương tự như phát hiện dị thường twitter. Vì mã phát hiện dị thường twitter là ngôn ngữ R. Vấn đề của bạn là bất thường theo ngữ cảnh. Mô hình Auto.arima cũng vậy
saravanan saminathan

Câu trả lời:


1

Tôi nghĩ rằng một cách tiếp cận tương tự như kiểm soát quá trình thống kê , với các biểu đồ kiểm soát, vv có thể hữu ích ở đây.


Tôi sẽ đọc cái này. Phương pháp này có tốt cho chuỗi thời gian với lượng dữ liệu nhỏ (tức là 24 tháng) không?
Eric Miller

đọc xong hầu hết Theo phương pháp này, tôi nên tính độ lệch chuẩn thứ 3 cho chuỗi thời gian và vẽ đồ thị một đường trên các giới hạn này. Nếu một giá trị vượt quá các giới hạn này, thì hãy gắn cờ nó. Đây là một phương pháp tôi đã xem xét.
Eric Miller

1

Có rất nhiều tùy chọn để phát hiện dị thường, từ độ lệch chuẩn sử dụng hàm độ lệch chuẩn Pandas, đến phương pháp Bayes và nhiều phương pháp học máy ở giữa như: phân cụm, SVM, Quy trình Gaussian, Mạng thần kinh.

Hãy xem hướng dẫn này: https://www.datascience.com/blog/python-anomaly-detection

Từ góc độ Bayes, tôi giới thiệu Facebook Prophet. Nó cho kết quả rất tiên tiến mà không cần phải là chuyên gia về chuỗi thời gian. Nó có các tùy chọn để làm việc theo tháng, ngày, v.v. và "khoảng thời gian không chắc chắn" giúp đỡ với sự bất thường.

Cuối cùng, tôi giới thiệu blog Uber này về việc sử dụng mạng lưới thần kinh (LSTM) để phát hiện sự bất thường, nó có thông tin chi tiết về hàng hóa: https://eng.uber.com/neural-networks/


0

Nếu bạn sẵn sàng cho rằng tập dữ liệu của bạn được phân phối bình thường, thì bạn có thể ước tính số lượng của phân phối này và xem liệu nó có nằm ngoài ví dụ như định lượng 95%, 80%, v.v. Tôi không quá quen thuộc với các thư viện Python nhưng tôi chắc chắn đã có các hàm được xây dựng cho nó.


Có một xu hướng tăng lên cho hầu hết các khách hàng. Tôi không chắc bạn có thể gọi dữ liệu ngẫu nhiên.
Eric Miller

2
Sau đó, không trong trường hợp này. Tôi tin rằng phương pháp dưới đây của tôi và của bạn sẽ hoạt động tốt trong tình huống này. Tôi đã làm một cái gì đó tương tự như trước đây: lấy trung bình di chuyển trong giai đoạn X, trừ đi giá trị số liệu hiện tại khỏi trung bình di chuyển. Tìm các giới hạn độ lệch chuẩn (hoặc sử dụng đầu vào chủ quan nếu bạn tình cờ biết trong kịch bản này) của các phần dư này và bất cứ điều gì ở trên hoặc dưới các giới hạn này đều có thể được coi là bất thường. Phương pháp này sẽ hoạt động tốt nếu khách hàng đột nhiên thấy tăng điểm.
Kevin Pei
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.