- Khi dữ liệu streaming và IoT gia tăng, phát hiện bất thường chuỗi thời gian đã trở thành một bài toán phân tích cốt lõi để phân biệt bình thường và bất thường trong các lĩnh vực như an ninh mạng, thị trường tài chính, thực thi pháp luật và y tế
- Khi các phương pháp phát hiện bất thường truyền thống thiên về thống kê hòa trộn với các cách tiếp cận học máy gần đây, cần có một hệ thống phân loại phản ánh thứ tự thời gian và cấu trúc của chuỗi thời gian
- Bất thường không chỉ xuất hiện ở một giá trị đơn lẻ mà còn trong các chuỗi con; bất thường điểm, bất thường theo ngữ cảnh, bất thường tập thể chỉ có thể được phân biệt khi xem cùng cả mẫu lân cận và ngữ cảnh thời gian
- Phần lớn phương pháp tuân theo pipeline tiền xử lý → mô hình phát hiện → chấm điểm → hậu xử lý; sau khi ma trận hóa chuỗi thời gian bằng sliding window, chúng tính điểm bất thường
- Bài tổng quan này sắp xếp các phương pháp thành dựa trên khoảng cách, dựa trên mật độ, dựa trên dự báo, nhằm giảm sự đứt gãy trong so sánh giữa các cộng đồng nghiên cứu vốn dùng các bộ dữ liệu, baseline và chỉ số đánh giá khác nhau
Vì sao phát hiện bất thường chuỗi thời gian khó
- Chuỗi thời gian là một dãy có thứ tự các giá trị thực được ghi lại theo thời gian; khi thứ tự phụ thuộc vào các chiều như góc, khối lượng hay vị trí thay vì thời gian, cũng có thể dùng các cách gọi như data series hoặc data sequence
- Phân tích chuỗi thời gian là cần thiết trong nhiều lĩnh vực như thiên văn học, sinh học, kinh tế học, khoa học năng lượng, kỹ thuật, khoa học môi trường, y học, khoa học thần kinh và khoa học xã hội
- Độ phức tạp của quá trình sinh dữ liệu, sự không hoàn hảo của hệ thống đo lường và tương tác với các tác nhân độc hại có thể tạo ra hiện tượng bất thường trong dữ liệu thu thập được
- Khi các chuỗi thời gian do sự phổ biến của ứng dụng IoT tạo ra ngày càng nhiều, số lượng bất thường cần phát hiện trong các bộ sưu tập chuỗi thời gian cũng được kỳ vọng sẽ tăng lên
- Bất thường là điểm dữ liệu hoặc nhóm điểm dữ liệu không phù hợp với tính bình thường hay hành vi kỳ vọng dựa trên dữ liệu quan sát trước đó
- Các thuật ngữ như outlier, novelty, exception, peculiarity, aberration, deviant, discord cũng được dùng cùng nhau
- Tùy ứng dụng, bất thường có thể là nhiễu cần loại bỏ hoặc sửa chữa, hoặc là sự kiện đáng quan tâm cần phân tích tiếp, như lỗi hay thay đổi hành vi
Định nghĩa và các loại bất thường
- Không tồn tại một định nghĩa duy nhất, phổ quát và chính xác về bất thường
- Theo truyền thống, bất thường là quan sát lệch đáng kể khỏi phần lớn mẫu trong phân phối, khiến người ta nghi ngờ rằng nó được tạo ra bởi một cơ chế khác với phần còn lại của dữ liệu
- Nếu chuyên gia hiểu chính xác cách hệ thống vận hành, họ có thể thiết lập phân phối và tham số của trạng thái bình thường, rồi đánh dấu các điểm lệch quá 3 độ lệch chuẩn so với trung bình là bất thường
- Trong các bài toán thực tế, rất khó biết chính xác phân phối sinh dữ liệu và các yếu tố đầu ra; phân phối ngoài thực tế cũng phức tạp nên khó nhận diện bất thường chỉ bằng khoảng cách tới giá trị trung bình do chuyên gia định nghĩa
- Nhờ năng lực tính toán phát triển, đã có thể ước lượng phân phối từ dữ liệu thô và để thuật toán phát hiện bất thường mà không cần tri thức chuyên gia
- Các phương pháp này phụ thuộc mạnh vào chất lượng và ngữ cảnh của bộ dữ liệu
-
Ba loại bất thường chuỗi thời gian
- Bất thường điểm (point anomaly): một điểm dữ liệu đơn lẻ lệch rõ rệt so với phần còn lại của dữ liệu
- Bất thường theo ngữ cảnh (contextual anomaly): một điểm dữ liệu nằm trong phạm vi kỳ vọng của toàn bộ phân phối, nhưng lại lệch khỏi phân phối kỳ vọng trong một ngữ cảnh như một cửa sổ cụ thể
- Bất thường tập thể (collective anomaly): một chuỗi điểm không lặp lại các mẫu thường được quan sát
- Bất thường điểm và bất thường theo ngữ cảnh được xếp vào point-based anomaly, còn bất thường tập thể được xếp vào sequence-based anomaly
- Phát hiện trên toàn bộ chuỗi là một trường hợp phát hiện bất thường chuỗi con, trong đó cả chuỗi thời gian được xem như một đối tượng đánh giá duy nhất; cách này được dùng trong bối cảnh làm sạch cảm biến để tìm cảm biến bất thường giữa các cảm biến bình thường
Chiều dữ liệu và thiết lập học
- Chuỗi thời gian đơn biến là dạng các giá trị thực được sắp theo thứ tự trong một chiều duy nhất, và bất thường được phát hiện dựa trên một đặc trưng đơn
- Chuỗi thời gian đa biến là tập hợp nhiều dãy có thứ tự cùng độ dài hoặc là một dãy có thứ tự của các vector thực
- Trong trường hợp đa biến, khi nhìn từng giá trị đặc trưng riêng lẻ thì có thể trông vẫn bình thường, nhưng toàn bộ chuỗi lại có thể là bất thường
- Chuỗi con có thể được biểu diễn thành vector trong đơn biến, còn trong đa biến là ma trận mà mỗi hàng là chuỗi con của một chiều
-
Phát hiện không giám sát, bán giám sát và có giám sát
- Cách tiếp cận không giám sát được dùng khi không có thông tin chuyên gia về loại bất thường cần phát hiện
- Có thể hoạt động mà không cần một bộ sưu tập lớn các bất thường đã biết
- Có thể tự động phát hiện các hành vi bất thường chưa từng biết
- Có thể dùng cho giám sát trạng thái hệ thống hoặc khai phá chuỗi thời gian lịch sử
- Cách tiếp cận bán giám sát phát hiện bất thường dựa trên các ví dụ chuỗi bình thường do chuyên gia cung cấp
- Nhiều tài liệu cũng gọi nhóm này là không giám sát
- Tuy nhiên, vì nó cần tri thức trước về các ví dụ bình thường, có quan điểm cho rằng khó gộp chung hoàn toàn với không giám sát thực thụ
- Cách tiếp cận có giám sát áp dụng khi chuyên gia biết chính xác mẫu cần phát hiện và có một bộ sưu tập chuỗi thời gian bất thường đã gắn nhãn
- Có thể dự đoán chuỗi con bất thường bằng cách dùng các chuỗi con xuất hiện trước nó
- Những chuỗi con đi trước như vậy có thể được gọi là tiền triệu chứng bất thường (precursor)
Pipeline phát hiện phổ biến
- Các thuật toán phát hiện bất thường chuỗi thời gian nhìn chung tuân theo luồng tiền xử lý → phương pháp phát hiện → chấm điểm → hậu xử lý
- Ở bước tiền xử lý, cách tiếp cận dựa trên cửa sổ xuất hiện phổ biến, trong đó chuỗi thời gian được chuyển thành một ma trận gồm các hàng là các mảnh sliding window
- Các bước tiền xử lý bổ sung sẽ khác nhau, như trích xuất đặc trưng thống kê, khớp mô hình học máy hoặc xây dựng mạng nơ-ron
- Ở bước phát hiện, các phương pháp như tính khoảng cách, khớp siêu phẳng phân loại, hoặc so sánh chuỗi con được sinh ra với chuỗi con gốc sẽ được áp dụng trên bộ dữ liệu đã xử lý
- Ở bước chấm điểm, kết quả phát hiện được chuyển thành điểm bất thường dạng số thực biểu thị mức độ bất thường của từng chuỗi con
- Điểm này được dùng để suy ra điểm cho từng điểm dữ liệu riêng lẻ
- Chuỗi thời gian điểm kết quả có cùng độ dài với chuỗi thời gian gốc
- Ở bước hậu xử lý, các điểm hoặc đoạn bất thường được trích xuất từ chuỗi thời gian điểm bất thường
- Thông thường sẽ đặt một ngưỡng và đánh dấu các điểm có điểm số vượt ngưỡng là bất thường
Hệ thống phân loại theo quy trình
- Các phương pháp phát hiện bất thường chuỗi thời gian được chia lớn thành dựa trên khoảng cách, dựa trên mật độ và dựa trên dự báo
- Phân loại ở cấp thứ hai không loại trừ lẫn nhau
- Một mô hình có thể vừa nén dữ liệu chuỗi thời gian vừa dùng chiến lược nhận diện dựa trên discord
-
Phương pháp dựa trên khoảng cách
- Các phương pháp dựa trên khoảng cách phát hiện bất thường bằng cách so sánh các giá trị số của chuỗi thời gian thô theo một thước đo khoảng cách
- Thông thường, người ta định nghĩa khoảng cách
d(A, B)giữa hai chuỗi có cùng độ dài; nếu hai chuỗi giống nhau thì khoảng cách bằng 0 - Các khoảng cách được dùng rộng rãi là Euclidean distance và Z-normalized Euclidean distance
- Dynamic Time Warping(DTW) thường được dùng để xử lý vấn đề lệch căn chỉnh
- Các nhóm con chính là dựa trên lân cận, dựa trên phân cụm và dựa trên discord
- Dựa trên lân cận (proximity-based): xác định bất thường dựa trên mức độ cô lập của chuỗi con so với các láng giềng gần nhất
- Dựa trên phân cụm (clustering-based): mức độ không thuộc về các cụm đã học, khoảng cách tới cụm hoặc dung lượng cụm có thể được dùng để tính điểm bất thường
- Dựa trên discord (discord-based): tìm hiệu quả discord, tức chuỗi con có khoảng cách tới láng giềng gần nhất là lớn nhất trong toàn bộ các chuỗi con
-
Phương pháp dựa trên mật độ
- Các phương pháp dựa trên mật độ không chỉ xem chuỗi thời gian như một dãy số đơn thuần, mà xử lý nó trên các biểu diễn có thể đo mật độ của không gian điểm hoặc không gian chuỗi con
- Biểu diễn có thể rất đa dạng như đồ thị, cây, histogram hay các quy tắc suy diễn ngữ pháp
- Các nhóm con chính là dựa trên phân phối, dựa trên đồ thị, dựa trên cây và dựa trên mã hóa
- Dựa trên phân phối (distribution-based): tạo phân phối từ các đặc trưng thống kê của điểm hoặc chuỗi con, rồi khôi phục mô hình thống kê liên quan thông qua phân phối đặc trưng của các chuỗi con bình thường để suy ra tính bất thường
- Dựa trên đồ thị (graph-based): biểu diễn chuỗi thời gian và chuỗi con thành đồ thị, rồi phát hiện bất thường từ các đặc tính đồ thị như trọng số nút/cạnh hoặc bậc của nút
- Dựa trên cây (tree-based): chia điểm hoặc chuỗi con bằng cây, rồi đánh giá bất thường bằng các thống kê và đặc tính như độ sâu của cây
- Dựa trên mã hóa (encoding-based): diễn giải chuỗi thời gian thành chuỗi ký hiệu hoặc trạng thái rời rạc phi ngữ cảnh, rồi dùng các quy tắc ngữ pháp của ký hiệu đã trích xuất để phát hiện bất thường
-
Phương pháp dựa trên dự báo
- Các phương pháp dựa trên dự báo phát hiện bất thường bằng cách dự đoán hành vi bình thường kỳ vọng từ chuỗi thời gian hoặc chuỗi con huấn luyện
- Chúng dựa trên giả định rằng dữ liệu bình thường dễ dự đoán, còn bất thường thì nằm ngoài dự kiến nên có sai số dự đoán lớn
- Giả định này có hiệu lực khi tập huấn luyện không có hoặc chỉ có rất ít bất thường
- Các phương pháp dựa trên dự báo thường phù hợp hơn trong thiết lập bán giám sát
- Các nhóm con chính là dựa trên forecasting và dựa trên tái tạo
- Dựa trên forecasting (forecasting-based): nhận các điểm hoặc chuỗi con trước một thời điểm nhất định làm đầu vào để dự đoán giá trị tiếp theo hoặc chuỗi con tiếp theo, rồi dùng chênh lệch giữa giá trị thực và giá trị dự đoán làm điểm bất thường
- Dựa trên tái tạo (reconstruction-based): nén chuỗi thời gian hoặc chuỗi con đầu vào vào một không gian tiềm ẩn nhỏ hơn rồi tái tạo lại, sau đó dùng sai khác giữa đầu vào và kết quả tái tạo làm điểm bất thường
Đánh giá và sự đứt gãy trong so sánh nghiên cứu
- Nhiều lĩnh vực nghiên cứu phần lớn tách rời nhau vì sử dụng các bộ dữ liệu, baseline và thước đo đánh giá khác nhau
- Các thuật toán mới thường chỉ được so sánh với một vài cách tiếp cận thiếu tính đại diện, nên khó tìm được cách tiếp cận đạt trình độ tốt nhất cho một trường hợp sử dụng cụ thể
- Hệ thống phân loại theo quy trình cho phép gom nhiều phương pháp phát hiện thành các nhóm thuật toán có cách tiếp cận tương tự để so sánh
- Thống kê tài liệu cho thấy xu hướng của các loại cách tiếp cận và các lĩnh vực nghiên cứu theo thời gian
- Bài viết cũng tổng hợp các benchmark hiện có có thể dùng làm nền tảng đánh giá chung, cùng ưu điểm, nhược điểm và giới hạn của các thước đo đánh giá phát hiện bất thường chuỗi thời gian
1 bình luận
Ý kiến trên Hacker News
Matrix Profile là một trong những công cụ bị đánh giá thấp trong phân tích chuỗi thời gian, và rất hiệu quả. Nó phù hợp để tìm motif và ngoại lệ mà không cần tinh chỉnh quá nhiều kích thước cửa sổ và ngưỡng như các kỹ thuật truyền thống, đồng thời hoạt động vững chắc trong nhiều lĩnh vực như dữ liệu cảm biến sản xuất, phân tích điện tâm đồ, phát hiện động đất
https://www.cs.ucr.edu/~eamonn/MatrixProfile.html
Tài liệu giới thiệu này của cùng nhóm nghiên cứu tốt hơn
https://matrixprofile.org/
Mức sử dụng hệ thống có tính mùa vụ theo tuần rất mạnh, nên tôi lấy trung bình các giá trị của một chỉ số ở 1 tuần, 2 tuần, 3 tuần, 4 tuần trước rồi so sánh với giá trị hiện tại. Cách này cho phép đặt ngưỡng cảnh báo động phù hợp với ngày/đêm, ngày thường/cuối tuần, và so sánh với trung bình theo ngày trong tuần hoặc khung giờ
Phía GitLab có một bài giải thích chi tiết hơn về cách này
https://about.gitlab.com/blog/2019/07/23/anomaly-detection-u...
Khi vướng ngày lễ thì phức tạp hơn một chút, nhưng có thể lập trình được trong Prometheus
https://promcon.io/2019-munich/slides/improved-alerting-with...
Tôi không phải người quá rành lĩnh vực này, nhưng dự báo và phát hiện bất thường có vẻ khá liên quan. Có thể tôi sai
Ví dụ, các mô hình dựa trên chuỗi thời gian như Granite TS do các đồng nghiệp cũ của tôi tạo ra khi thử nghiệm thì hoạt động khá tốt
Điều khiến tôi vỡ ra về cách nghĩ về mô hình phát hiện bất thường là: cuối cùng thì cũng là dự đoán N bước tiếp theo rồi xem giá trị đo thực tế có “đủ khác” so với giá trị kỳ vọng hay không. Với một tín hiệu đơn thì dễ vẽ lên bảng trắng, nhưng việc nó cũng hoạt động trong trường hợp đa biến khá thú vị
[1] https://huggingface.co/ibm-granite/granite-timeseries-ttm-r1
[0] https://scikit-learn.org/stable/modules/generated/sklearn.en...
Những thiết bị này có thể phát hiện rò rỉ và ước tính lượng nước sử dụng ở cấp thiết bị. Phát hiện rò rỉ rốt cuộc là việc xác định ngoại lệ trong chuỗi thời gian, và phát hiện bất thường dựa trên phân phối được nhắc đến trong bài có liên quan ở đây. Điều thú vị là không gian nhà ở có thể cần nhiều phân phối do thay đổi nhiệt độ đường ống giữa mùa ấm và mùa lạnh
Đến giờ thì không quá tệ, nhưng có vài khiếm khuyết khá lớn
Tôi tưởng có thể làm bằng thư viện C# của Microsoft, nhưng nó thật sự rất tệ. Giá mà có ai đó có thời gian và ý chí để triển khai một thư viện tử tế
Mảng này rất hợp để xuất hiện một SaaS có thể cấu hình hoặc công cụ mã nguồn mở với cơ chế báo cáo nâng cao và cảnh báo tốt. Datadog cũng có sản phẩm ổn, nhưng khá đắt
Đặc biệt, về cơ bản chúng tôi đang làm cho nó hoạt động offline. Chúng tôi tích hợp AI vào thiết bị và không gửi dữ liệu tới máy chủ của bên thứ ba, thậm chí cả máy chủ của chúng tôi. Lý do là chúng tôi cho rằng có nhiều cơ hội khách hàng bị bỏ lỡ vì không thể kết nối online. Nếu bạn đang tìm giải pháp giám sát máy móc công nghiệp, hoặc quan tâm đến phần mềm công nghiệp nhạy cảm về bảo mật, chúng tôi muốn trao đổi. Chúng tôi cũng đang phát triển data historian: www.sentineldevices.com
Tôi đã xây dựng một hệ thống phát hiện và phản ứng trước khi ngoại lệ xảy ra; ví dụ, chủ động giảm tốc độ request trước khi dẫn đến cạn kiệt cơ sở dữ liệu, với kỳ vọng cách đó thực sự tốt hơn là cứ để ngoại lệ phát sinh
Khi đó tôi cảm thấy lĩnh vực này còn rất nhiều việc phải làm, và hơi tiếc vì đã không thể quay lại làm tiếp
Một vấn đề cốt lõi khác là định nghĩa một cách chặt chẽ và chính xác đâu là bất thường và đâu không phải
Dù không phải sản phẩm cốt lõi, nó hầu như luôn hữu ích cho việc tối ưu hóa vận hành. Trong sản xuất, có thể dùng computer vision để loại ra sản phẩm bất thường trên dây chuyền lắp ráp; trong vận hành, có thể dùng gia tốc kế/cảm biến nhiệt độ và phân tích tần số để phát hiện dấu hiệu hỏng hóc nhằm bảo trì dự đoán. Trong bán hàng, phân tích chuỗi thời gian của các chỉ số hoặc yêu cầu hỗ trợ có thể cho thấy tín hiệu tăng/giảm của dòng tiền, mức độ hài lòng của khách hàng, v.v.
https://youtu.be/vzPgHF7gcUQ?si=rKQvOjK_qjiSSvKE