Dị ThườngWiki
Tìm
Phát hiện bất thường trong dữ liệu

Phát hiện bất thường (anomaly detection) là gì và hoạt động ra sao

Phát hiện bất thường là tìm điểm dữ liệu lệch khỏi khuôn mẫu bình thường; có ba loại bất thường và nhiều họ phương pháp, từ ngưỡng thống kê tới Isolation Forest.

Phát hiện bất thường (anomaly detection) là gì và hoạt động ra sao

Phát hiện bất thường (anomaly detection) là việc tìm ra những điểm dữ liệu, sự kiện hay chuỗi hành vi lệch hẳn khỏi khuôn mẫu thông thường của một hệ thống. Ngân hàng dùng nó để bắt giao dịch thẻ lạ, nhà máy dùng để nghe máy móc sắp hỏng, kỹ sư mạng dùng để thấy kẻ lạ đột nhập. Cốt lõi của mọi phương pháp đều giống nhau: trước hết phải mô tả được "bình thường" trông ra sao, rồi mới đo được cái gì đi lệch và lệch bao xa.

Bất thường không phải là "sai", mà là "khác"

Một con số bất thường chưa chắc đã là con số sai. Nó chỉ là con số không khớp với điều ta đang chờ đợi. Đôi khi đó là lỗi nhập liệu, đôi khi là cảm biến hỏng, đôi khi là gian lận, và đôi khi là một phát hiện thật sự mà chưa ai nghĩ tới. Việc của hệ thống phát hiện bất thường là đánh dấu, còn việc kết luận cái lệch ấy là gì thuộc về con người đi kiểm tra.

Trong giới thống kê, khái niệm này có lịch sử dài. Từ thế kỷ 19, các nhà thiên văn đã tranh luận có nên bỏ những phép đo vị trí sao "lạc loài" hay không. Năm 1852, nhà toán học Mỹ Benjamin Peirce công bố một tiêu chuẩn để loại bỏ quan sát đáng ngờ, một trong những quy tắc chính thức sớm nhất. Ngày nay chủ đề này gắn với máy tính và dữ liệu lớn, nhưng câu hỏi gốc vẫn vậy: điểm này lạ thật, hay chỉ là nhiễu?

Ba kiểu bất thường mà dân dữ liệu phân biệt

Một bài tổng quan được trích dẫn rất nhiều của Varun Chandola, Arindam Banerjee và Vipin Kumar đăng trên ACM Computing Surveys năm 2009 chia bất thường thành ba loại. Cách chia này đến nay vẫn là khung nhập môn chuẩn.

LoạiÝ nghĩaVí dụ đời thường
Bất thường điểmMột giá trị đơn lẻ lệch xa toàn bộ phần còn lạiHoá đơn tiền điện một tháng gấp mười lần mọi tháng khác
Bất thường theo ngữ cảnhGiá trị chỉ lạ khi đặt vào hoàn cảnh cụ thểNhiệt độ 35 °C bình thường vào tháng Sáu ở Hà Nội nhưng rất lạ vào tháng Một
Bất thường tập thểTừng điểm đều bình thường, nhưng cả chuỗi xếp cạnh nhau thì lạMười lần rút 500.000 đồng liên tiếp trong năm phút, mỗi lần đều nhỏ

Phân biệt ba loại này quan trọng vì mỗi loại cần một cách nhìn khác. Một ngưỡng cố định bắt được bất thường điểm, nhưng hoàn toàn mù trước bất thường theo ngữ cảnh. Muốn thấy bất thường tập thể thì phải nhìn theo thời gian, theo chuỗi, chứ không nhìn từng con số riêng lẻ.

Các họ phương pháp chính, từ đơn giản đến phức tạp

Ngưỡng và quy tắc

Cách lâu đời nhất: con người đặt luật. "Nhiệt độ lò vượt 900 °C thì báo động", "giao dịch ở nước ngoài trên 20 triệu đồng thì hỏi lại". Ưu điểm là dễ hiểu, dễ giải thích với người dùng. Nhược điểm là cứng nhắc và chỉ bắt được những gì người viết luật đã nghĩ tới trước.

Thống kê

Mô tả dữ liệu bình thường bằng một phân phối, rồi đo mỗi điểm cách trung tâm bao nhiêu. Điểm z (số độ lệch chuẩn tính từ trung bình) là công cụ quen nhất; hàng rào Tukey, dựa trên khoảng tứ phân vị, ít bị chính điểm lạ làm méo hơn. Biểu đồ kiểm soát trong nhà máy, ra đời ở phòng thí nghiệm Bell từ năm 1924, cũng thuộc họ này.

Khoảng cách và mật độ

Ý tưởng: điểm bình thường có nhiều "hàng xóm" ở gần, điểm bất thường đứng lẻ loi. Thuật toán LOF (Local Outlier Factor), do Markus Breunig và cộng sự giới thiệu năm 2000, so mật độ quanh một điểm với mật độ quanh các hàng xóm của nó. Nhờ vậy nó bắt được điểm lẻ loi ngay cả khi dữ liệu có nhiều cụm đậm nhạt khác nhau.

Cô lập

Isolation Forest (Fei Tony Liu, Kai Ming Ting và Zhi-Hua Zhou, 2008) lật ngược câu hỏi. Thay vì mô tả cái bình thường, nó cắt dữ liệu ngẫu nhiên nhiều lần và đếm xem cần bao nhiêu nhát để tách riêng một điểm. Điểm bất thường vốn ít và khác biệt nên bị tách ra rất sớm. Phương pháp này nhanh và hiện được dùng rộng rãi trong công nghiệp.

Học sâu và tái tạo

Mạng nơ-ron kiểu autoencoder được dạy nén rồi dựng lại dữ liệu bình thường. Gặp dữ liệu lạ, nó dựng lại kém, và sai số tái tạo lớn chính là tín hiệu báo động. Cách này mạnh với dữ liệu phức tạp như tín hiệu rung, ảnh, nhật ký máy chủ, nhưng khó giải thích vì sao một điểm bị đánh dấu.

Cái khó thật sự: hầu như không có nhãn

Trong nhiều bài toán máy học, ta có sẵn hàng nghìn ví dụ đã gắn nhãn đúng sai để dạy máy. Phát hiện bất thường thì khác. Gian lận, hỏng hóc, xâm nhập là chuyện hiếm, và kiểu mới thì chưa từng xuất hiện để mà gắn nhãn. Vì vậy phần lớn hệ thống thực tế học "bình thường" là gì từ dữ liệu không nhãn, rồi coi mọi thứ lệch xa là đáng ngờ.

Điều này kéo theo ba khó khăn mà người làm nghề nào cũng gặp:

  • Mất cân bằng cực độ. Nếu chỉ một trong mười nghìn giao dịch là gian lận, một hệ thống luôn trả lời "bình thường" vẫn đúng 99,99%, mà vô dụng hoàn toàn. Độ chính xác chung vì thế gần như không nói lên gì.
  • "Bình thường" trôi dần. Thói quen mua sắm thay đổi theo Tết, theo mùa; máy móc mòn dần; mạng thêm thiết bị mới. Giới nghiên cứu gọi là trôi khái niệm (concept drift). Mô hình không cập nhật sẽ báo động loạn hoặc ngủ quên.
  • Đối thủ biết thích nghi. Với gian lận và tấn công mạng, bên kia cố tình làm cho hành vi của mình trông bình thường. Đây là lý do các hệ thống này phải được theo dõi và chỉnh liên tục, không phải lắp một lần là xong.

Quy trình một kỹ sư dữ liệu thường đi qua

  1. Hiểu nghiệp vụ trước khi nhìn số. Hỏi người vận hành: dấu hiệu hỏng thường là gì, mùa nào cao điểm, dữ liệu đo bằng máy gì. Không hiểu ngữ cảnh thì không phân biệt được bất thường theo ngữ cảnh.
  2. Làm sạch có ghi chép. Đánh dấu giá trị thiếu, đơn vị lẫn lộn, cảm biến kẹt cùng một con số. Nhiều "bất thường" ồn ào nhất thực chất là lỗi đường ống dữ liệu.
  3. Bắt đầu bằng phương pháp đơn giản. Một ngưỡng thống kê hợp lý thường là mốc so sánh tốt. Nếu mô hình phức tạp không vượt được nó rõ rệt thì không đáng triển khai.
  4. Chọn ngưỡng theo chi phí. Bỏ sót một lần hỏng máy nén giá bao nhiêu, mỗi lần báo nhầm tốn bao nhiêu giờ công? Ngưỡng là quyết định kinh doanh, không phải con số kỹ thuật thuần tuý.
  5. Đưa con người vào vòng lặp. Mỗi cảnh báo được người kiểm tra xác nhận đúng hay sai, rồi phản hồi đó quay lại làm giàu dữ liệu cho mô hình.
  6. Theo dõi chính hệ thống phát hiện. Số cảnh báo mỗi ngày đột ngột tăng gấp ba hoặc tụt về không cũng là một bất thường đáng điều tra.

Những nơi phát hiện bất thường đang làm việc quanh ta

Danh sách dài hơn nhiều người nghĩ. Hộp thư tự gom thư rác. Ứng dụng ngân hàng hỏi lại khi đăng nhập từ máy lạ. Đồng hồ thông minh báo nhịp tim bất thường. Mạng lưới địa chấn nhận ra sóng P đầu tiên của một trận động đất giữa hàng nghìn rung động do xe cộ. Kiểm toán viên soi chữ số đầu trong sổ sách. Nhà khí tượng loại bỏ số đo của một trạm có nhiệt kế bị nắng chiếu trực tiếp.

Lịch sử khoa học cũng có những bất thường được giữ lại đúng lúc. Năm 1985, nhóm Khảo sát Nam Cực của Anh (Joseph Farman, Brian Gardiner, Jonathan Shanklin) công bố trên tạp chí Nature mức ôzôn mùa xuân trên Nam Cực giảm mạnh, mở đầu cho hiểu biết về lỗ thủng tầng ôzôn. Họ tin vào số đo lạ của mình thay vì vội coi nó là lỗi máy, và kiểm tra lại nhiều năm trước khi công bố.

Góc nhìn hôm nay: tập con mắt "thấy cái lệch"

Bạn không cần là kỹ sư mới dùng được tư duy này. Vài thói quen nhỏ:

  • Trước khi nói một con số "lạ", hãy hỏi: lạ so với cái gì? Tháng trước, cùng kỳ năm ngoái, hay nhà bên cạnh?
  • Vẽ dữ liệu ra trước khi tính. Một biểu đồ điểm đơn giản trên bảng tính lộ ra nhiều thứ hơn mọi chỉ số trung bình.
  • Khi thấy một điểm lệch, đi tìm nguyên nhân trước khi xoá. Ghi lại mình đã làm gì với nó.
  • Với tài chính cá nhân, bật thông báo biến động số dư: chính bạn là hệ thống phát hiện bất thường nhạy nhất cho tài khoản của mình.

Muốn học sâu hơn, có thể tìm bài tổng quan của Chandola và cộng sự (2009), cuốn Outlier Analysis của Charu Aggarwal, và các bộ dữ liệu mở trên kho UCI Machine Learning Repository để tự tay thử. Thư viện scikit-learn của Python có sẵn Isolation Forest và LOF, chạy được trên máy tính cá nhân.

Câu hỏi thường gặp

Phát hiện bất thường là gì?

Đó là việc tìm những điểm dữ liệu hoặc sự kiện lệch hẳn khỏi khuôn mẫu thông thường của một hệ thống. Ứng dụng phổ biến gồm phát hiện gian lận thẻ, hỏng hóc máy móc, xâm nhập mạng và lỗi đo đạc. Hệ thống chỉ đánh dấu điểm lạ, còn kết luận nguyên nhân thuộc về người kiểm tra.

Anomaly detection khác outlier detection thế nào?

Hai thuật ngữ thường được dùng gần như thay thế nhau. Outlier (giá trị ngoại lai) hay dùng trong thống kê cổ điển, chỉ những điểm đứng xa trong một tập dữ liệu tĩnh. Anomaly detection rộng hơn, bao gồm cả bất thường theo ngữ cảnh và theo chuỗi thời gian.

Có những phương pháp phát hiện bất thường nào?

Các họ chính gồm ngưỡng và quy tắc, thống kê (điểm z, hàng rào Tukey, biểu đồ kiểm soát), khoảng cách và mật độ (LOF), cô lập (Isolation Forest) và học sâu (autoencoder). Thực tế người ta thường bắt đầu bằng phương pháp đơn giản rồi mới thử mô hình phức tạp.

Vì sao phát hiện bất thường khó hơn phân loại thông thường?

Vì sự kiện bất thường rất hiếm, thường không có nhãn và kiểu mới chưa từng xuất hiện. Dữ liệu bình thường lại thay đổi theo thời gian. Với gian lận và tấn công mạng, đối phương còn chủ động bắt chước hành vi bình thường.

Bất thường có phải lúc nào cũng là lỗi không?

Không. Một điểm lạ có thể là lỗi nhập liệu, cảm biến hỏng, gian lận, nhưng cũng có thể là phát hiện thật. Lỗ thủng tầng ôzôn được công bố năm 1985 chính nhờ các nhà khoa học tin và kiểm tra lại những số đo bất thường của họ.

Mở app Dị Thường

Trực ca trạm giữ đồ Việt hoá lạ — giữ yên tới sáng

Mở app Dị Thường

Bài viết liên quan

Mở app Dị Thường

Trực ca trạm giữ đồ Việt hoá lạ — giữ yên tới sáng

Mở app Dị Thường Xem app khác