Lý lịch
Tôi đang làm việc trong Trung tâm điều hành mạng, chúng tôi giám sát các hệ thống máy tính và hiệu suất của chúng. Một trong những số liệu quan trọng cần theo dõi là một số khách truy cập \ khách hàng hiện đang kết nối với máy chủ của chúng tôi. Để hiển thị, chúng tôi (nhóm Ops) thu thập các số liệu như dữ liệu chuỗi thời gian và vẽ biểu đồ. Graphite cho phép chúng tôi làm điều đó, nó có một API khá phong phú mà tôi sử dụng để xây dựng hệ thống cảnh báo để thông báo cho nhóm của chúng tôi nếu giảm đột ngột (chủ yếu) và các thay đổi khác xảy ra. Hiện tại tôi đã đặt ngưỡng tĩnh dựa trên giá trị avg nhưng nó không hoạt động tốt (có rất nhiều lỗi sai) do tải khác nhau trong ngày và tuần (yếu tố mùa vụ).
Nó trông giống như thế này:
Dữ liệu thực tế (ví dụ cho một số liệu, phạm vi thời gian 15 phút; số đầu tiên là số người dùng, tem thời gian thứ hai):
[{"target": "metric_name", "datapoints": [[175562.0, 1431803460], [176125.0, 1431803520], [176125.0, 1431803580], [175710.0, 1431803640], [175710.0, 1431803700], [175733.0, 1431803760], [175733.0, 1431803820], [175839.0, 1431803880], [175839.0, 1431803940], [175245.0, 1431804000], [175217.0, 1431804060], [175629.0, 1431804120], [175104.0, 1431804180], [175104.0, 1431804240], [175505.0, 1431804300]]}]
Những gì tôi đang cố gắng thực hiện
Tôi đã tạo một tập lệnh Python nhận các biểu dữ liệu gần đây, so sánh chúng với mức trung bình lịch sử và cảnh báo nếu có sự thay đổi hoặc giảm đột ngột. Do ngưỡng "tĩnh" theo mùa không hoạt động tốt và tập lệnh tạo cảnh báo dương tính giả. Tôi muốn cải thiện một thuật toán cảnh báo để chính xác hơn và làm cho nó hoạt động mà không cần điều chỉnh ngưỡng cảnh báo liên tục.
Tôi cần lời khuyên gì và những điều tôi khám phá ra
Bằng cách googling tôi đã tìm ra rằng tôi đang tìm kiếm các thuật toán học máy để phát hiện sự bất thường (những thứ không được giám sát). Điều tra sâu hơn cho thấy có rất nhiều trong số họ và rất khó hiểu cái nào có thể áp dụng trong trường hợp của tôi. Do kiến thức toán học hạn chế của tôi, tôi không thể đọc các bài viết học thuật tinh vi và tôi đang tìm kiếm thứ gì đó đơn giản cho người mới bắt đầu trong lĩnh vực này.
Tôi thích Python và làm quen với R một chút, vì vậy tôi sẽ rất vui khi thấy các ví dụ cho các ngôn ngữ này. Xin giới thiệu một cuốn sách hay bài viết hay sẽ giúp tôi giải quyết vấn đề của mình. Cảm ơn bạn đã dành thời gian và xin lỗi vì đã mô tả dài như vậy
Liên kết hữu ích
Câu hỏi tương tự:
- Chuỗi thời gian và phát hiện bất thường
- Phát hiện dị thường chuỗi thời gian với Python
- Chuỗi thời gian dị thường
- Thuật toán phát hiện dị thường chuỗi thời gian
- Áp dụng sóng con cho thuật toán phát hiện dị thường dựa trên chuỗi thời gian
- Tôi nên sử dụng thuật toán nào?
Tài nguyên bên ngoài:
auto.arima
chức năng từ forecast
gói tuyệt vời của R (xem jstatsoft.org/v27/i03/apers ). Bạn có thể điều chỉnh các mức độ tin cậy bằng cách điều chỉnh level
tham số, ví dụ data.model <- auto.arima(data.zoo, ic = c("bic")); data.prediction.warningLimits <- forecast(data.model, h=1, level=0.99)
.