05 · Bez nadzoru · 4 min czytania · aktualizacja
Jak działa wykrywanie anomalii i jakie metody stosuje się w praktyce?
W skrócie
Wykrywanie anomalii szuka obserwacji, które nie pasują do reszty danych, zwykle bez etykiet. Działa tylko wtedy, gdy anomalie są rzadkie i naprawdę odmienne.
Co to jest
Wykrywanie anomalii (anomaly detection) to zadanie znalezienia obserwacji, które istotnie różnią się od większości danych: podejrzanej transakcji kartą, awarii czujnika, nietypowego ruchu w sieci, wadliwej części na taśmie. Zwykle odbywa się bez etykiet albo z bardzo nielicznymi, bo anomalie są rzadkie, różnorodne i często nowe — jutrzejsze oszustwo nie musi przypominać wczorajszego.
Model uczy się, jak wyglądają dane „normalne”, i każdej obserwacji przypisuje wynik nietypowości. Duży wynik oznacza: ten punkt leży tam, gdzie danych jest mało. O tym, czy to błąd pomiaru, ciekawe odkrycie, czy oszustwo, decyduje już człowiek albo dalszy proces.
Mechanizm — dlaczego tak działa
Wszystkie metody opierają się na jednym założeniu: anomalie są rzadkie i odmienne. Jeśli któryś warunek nie zachodzi — anomalii jest dużo albo wyglądają jak normalne dane — żadna metoda bez nadzoru ich nie znajdzie. Różnią się tym, jak formalizują „odmienność”.
Statystyczne i gęstościowe. Dopasuj rozkład do danych (np. wielowymiarowy normalny albo mieszaninę gaussowską) i oznacz punkty o niskiej gęstości. Odległość Mahalanobisa mierzy, ile „odchyleń standardowych” punkt leży od środka, z uwzględnieniem korelacji cech. Ponieważ same anomalie zniekształcają średnią i kowariancję, stosuje się odporne estymatory (np. minimalny wyznacznik kowariancji).
Odległościowe i lokalne. LOF (Local Outlier Factor) porównuje gęstość wokół punktu z gęstością wokół jego sąsiadów. Punkt w rzadkim miejscu otoczony gęstymi sąsiadami dostaje wysoki wynik. Dzięki temu LOF wykrywa anomalie lokalne — punkty dziwne względem swojej okolicy, nawet jeśli globalnie nie są skrajne.
Izolacyjne. Isolation Forest buduje wiele losowych drzew, które dzielą dane losowymi cięciami po losowych cechach. Pomysł jest odwrotny niż zwykle: zamiast modelować normalność, mierzy, jak łatwo punkt odizolować. Anomalia leżąca z dala od reszty zostaje odcięta po kilku cięciach, punkt w gęstym tłumie wymaga wielu. Średnia głębokość w drzewach to wynik. Metoda jest szybka, skaluje się i nie wymaga liczenia odległości.
Rekonstrukcyjne. PCA lub autoenkoder uczy się kompresować normalne dane; anomalia źle się odtwarza, więc duży błąd rekonstrukcji ją zdradza.
Najtrudniejsza część to ocena i próg. Przy 1% anomalii dokładność 99% osiąga model, który niczego nie zgłasza, więc liczy się precyzję i czułość na górze rankingu albo średnią precyzję (AP). Próg ustala się według kosztów: ile fałszywych alarmów zespół jest w stanie sprawdzić dziennie.
Na przykładzie
Breast Cancer Wisconsin: 569 guzów opisanych 30 cechami, 357 łagodnych i 212 złośliwych. Budujemy scenariusz detekcji: wszystkie łagodne plus 20 losowo wybranych złośliwych (5,3% danych), cechy standaryzowane, etykiety ukryte. Isolation Forest osiąga ROC AUC 0,945 i średnią precyzję 0,58; wśród 20 najbardziej podejrzanych przypadków 11 to guzy złośliwe. LOF: AUC 0,921, 10 w pierwszej dwudziestce. Odporna odległość Mahalanobisa: AUC 0,953, też 10.
Pokorna lekcja: pojedyncza cecha „największe pole guza” (worst area) daje AUC 0,943, średnią precyzję 0,73 i 13 złośliwych w pierwszej dwudziestce — lepiej niż każda wyrafinowana metoda w precyzji. Złośliwe guzy są po prostu duże. Drugi test: na pełnym zbiorze, gdzie złośliwych jest 37,3%, Isolation Forest spada do AUC 0,793. Gdy „anomalii” jest ponad jedna trzecia, przestają być anomaliami — tworzą własną gęstą grupę.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- W scikit-learn:
IsolationForest,LocalOutlierFactor,EllipticEnvelope(odporna kowariancja),OneClassSVM; wynik nietypowości zscore_sampleslubdecision_function. - Parametr
contaminationustala tylko próg zgłoszeń, nie zmienia rankingu; dobieraj go do budżetu na sprawdzanie alarmów. - Standaryzuj cechy przed metodami odległościowymi; Isolation Forest jest na skalę niewrażliwy.
- Oceniaj na choćby małym zbiorze z etykietami: średnia precyzja (
average_precision_score), precyzja w top-k, nie dokładność. - Zawsze porównaj z prostą regułą (pojedyncza cecha, z-score) — bywa zaskakująco mocna.
- Gdy masz sporo oznaczonych anomalii, rozważ zwykły klasyfikator z wagami klas; metody bez nadzoru są na sytuacje, gdy etykiet nie ma.
Najczęstsze pytania
- Czym różni się anomalia od wartości odstającej?
- Pojęcia mocno się pokrywają. Wartość odstająca to zwykle pojedyncza skrajna liczba w jednej zmiennej, często traktowana jak błąd do usunięcia. Anomalia to obserwacja nietypowa w całym wielowymiarowym kontekście, często właśnie ta interesująca — oszustwo, awaria, nowe zjawisko.
- Który algorytm wykrywania anomalii wybrać?
- Na start Isolation Forest — szybki, odporny na skalę i dobry na danych tabelarycznych. LOF, gdy anomalie są lokalne, a gęstość danych nierówna. Metody rekonstrukcyjne (autoenkodery) dla obrazów, sygnałów i innych danych wysokowymiarowych.
- Jak ustawić próg alarmu?
- Na podstawie kosztów i zasobów, nie domyślnych wartości. Jeśli zespół może sprawdzić 50 przypadków dziennie, zgłaszaj 50 najbardziej podejrzanych. Gdy masz trochę etykiet, wybierz próg z krzywej precyzja–czułość na danych walidacyjnych.
Źródła
- Liu F. T., Ting K. M., Zhou Z.-H., „Isolation Forest”, Proceedings of the IEEE International Conference on Data Mining (ICDM), 2008.
- Breunig M. M., Kriegel H.-P., Ng R. T., Sander J., „LOF: Identifying Density-Based Local Outliers”, Proceedings of ACM SIGMOD 2000.
- Chandola V., Banerjee A., Kumar V., „Anomaly Detection: A Survey”, ACM Computing Surveys 41(3), 2009.
- Rousseeuw P. J., Van Driessen K., „A Fast Algorithm for the Minimum Covariance Determinant Estimator”, Technometrics 41(3), 1999.
- Dokumentacja scikit-learn, „Novelty and Outlier Detection”: https://scikit-learn.org/stable/modules/outlier_detection.html