Pracuję z szeregiem czasowym wyników anomalii (tłem jest wykrywanie anomalii w sieciach komputerowych). Co minutę otrzymuję wynik anomalii który mówi mi, jak „nieoczekiwany” lub nienormalny jest obecny stan sieci. Im wyższy wynik, tym bardziej nienormalny jest obecny stan. Wyniki bliskie 5 są teoretycznie możliwe, ale prawie nigdy nie występują.
Teraz chcę wymyślić algorytm lub formułę, która automatycznie określa próg dla tego szeregu czasowego anomalii. Gdy tylko wynik anomalii przekroczy ten próg, uruchamiany jest alarm.
Poniższy rozkład częstotliwości jest przykładem szeregu czasowego anomalii w ciągu 1 dnia. Nie można jednak zakładać, że każda anomalia szeregów czasowych będzie tak wyglądać. W tym szczególnym przykładzie sensowny byłby próg anomalii, taki jak kwantyla .99, ponieważ kilka wyników po prawej stronie można uznać za anomalie.
I taki sam rozkład częstotliwości jak szeregi czasowe (waha się tylko od 0 do 1, ponieważ w szeregach czasowych nie ma wyższych wyników anomalii):
Niestety rozkład częstotliwości może mieć kształty, w których kwantyl .99 nie jest użyteczny . Przykład jest poniżej. Prawy ogon jest bardzo niski, więc jeśli jako próg zostanie użyty kwantyl .99, może to spowodować wiele fałszywych trafień. Ten rozkład częstotliwości nie wydaje się zawierać anomalii, dlatego próg powinien znajdować się poza rozkładem na poziomie około 0,25.
Podsumowując, różnica między tymi dwoma przykładami polega na tym, że pierwszy wydaje się wykazywać anomalie, podczas gdy drugi nie.
Z mojego naiwnego punktu widzenia algorytm powinien rozważyć te dwa przypadki:
- Jeśli rozkład częstotliwości ma duży prawy ogon (tj. Kilka nieprawidłowych wyników), kwantyla .99 może być dobrym progiem.
- Jeśli rozkład częstotliwości ma bardzo krótki prawy ogon (tj. Brak nienormalnych wyników), wówczas próg powinien znajdować się poza rozkładem.
/ edit: Nie ma też żadnej podstawowej prawdy, tj. dostępne zestawy danych oznaczone. Algorytm jest więc „ślepy” na naturę wyników anomalii.
Teraz nie jestem pewien, jak te obserwacje można wyrazić za pomocą algorytmu lub formuły. Czy ktoś ma sugestię, jak rozwiązać ten problem? Mam nadzieję, że moje wyjaśnienia są wystarczające, ponieważ moje zaplecze statystyczne jest bardzo ograniczone.
Dzięki za pomoc!
źródło
Odpowiedzi:
Można znaleźć ten papier interesów. Zobacz także bardziej szczegółową prezentację podobnych modeli w West & Harrison . Są też inne przykłady tego rodzaju monitorowania, wiele z nich jest nowszych, ale to nie jest dokładnie moja sterówka :). Niewątpliwie istnieją odpowiednie implementacje tych modeli, ale nie wiem, co mogą być od razu ...
Podstawową ideą jest to, że masz model przełączający, w którym niektóre obserwacje / sekwencje obserwacji są przypisywane nieprawidłowym stanom sieci, podczas gdy pozostałe są uważane za normalne. Taka mieszanka może stanowić długi prawy ogon na pierwszym poletku. Model dynamiczny może również ostrzegać o nietypowych skokach, takich jak o 8:00 i 4:00 w czasie rzeczywistym, przypisując duże prawdopodobieństwo nowym obserwacjom należącym do stanu problemowego. Można go również łatwo rozszerzyć o takie elementy, jak predyktory, komponenty okresowe (być może twój wynik rośnie / spada wraz z aktywnością) i tego rodzaju rzeczy.
Edycja: Powinienem również dodać, że tego rodzaju model jest „bez nadzoru” w tym sensie, że anomalie są wychwytywane przez pokazywanie dużej średniej zmiany lub wzrostu wariancji. Podczas zbierania danych możesz ulepszyć model dzięki bardziej informacyjnym wcześniejszym dystrybucjom. Być może jednak, gdy będziesz mieć wystarczającą ilość danych (i ciężko zdobytych przykładów szkolenia, radząc sobie z problemami z siecią!), Możesz opracować proste reguły monitorowania (progi itp.)
źródło
Czy masz jakieś „oznaczone” przykłady tego, co stanowi anomalię? tzn. wartości związane z awarią sieci, czy coś takiego?
Jednym z pomysłów, który możesz rozważyć zastosowanie, jest krzywa ROC, która jest przydatna do wybierania progów, które spełniają określone kryteria, takie jak maksymalizacja prawdziwych wyników dodatnich lub minimalizacja fałszywych wyników ujemnych.
Oczywiście, aby użyć krzywej ROC, musisz w jakiś sposób oznaczyć swoje dane.
źródło
Wykres „oryginalnej serii” nie musi wykazywać żadnej z góry określonej struktury. Najważniejsze jest to, że wykres „reszt z odpowiedniej serii modeli” musi wykazywać strukturę gaussowską. Tę „strukturę gaussowską” zwykle można uzyskać przez włączenie jednej lub więcej z następujących „transformacji” 1. model ARIMA 2. Korekty lokalnych zmian poziomu lub lokalnych trendów czasowych lub pulsów sezonowych lub zwykłych 3. ważona analiza wykorzystująca udowodnioną niejednorodność wariancji 4. możliwa transformacja mocy (logi itp.) W celu uporania się z heterogenicznością określonej wariancji 5. wykrycie punktów w czasie, w których model / parametry mogły ulec zmianie.
Wykrywanie interwencji dostarczy oświadczenie o statystycznym znaczeniu ostatniego zdarzenia sugerującego normalność lub anomalię
źródło
W odpowiedzi PO na moją poprzednią odpowiedź opublikował swoje dane w Internecie. 60 odczytów na godzinę przez 24 godziny przez 6 dni . Ponieważ są to narzędzia przekrojowe szeregów czasowych, takie jak DBSCAN, mają ograniczone znaczenie, ponieważ dane są zależne czasowo. Przy takich danych zwykle szuka się struktury w ciągu godziny i w ciągu dnia. Oprócz tego rodzaju struktur można dążyć do wykrycia anomalii, które mogą mieć charakter jednorazowy (puls) lub systematyczny (przesunięcie poziomu) za pomocą dobrze udokumentowanych metod (patrz literatura Tsay, Tiao, Chen i in. al.) Procedury te doprowadziły do następujących „anomalii”. Należy zauważyć, że przesunięcie poziomu zasadniczo sugeruje oddzielne „klastry”.
źródło
Po tym, jak mój przyjaciel skierował mnie w stronę algorytmów klastrowania , natknąłem się na DBSCAN, który buduje klastry w przestrzeni n-wymiarowej zgodnie z dwoma predefiniowanymi parametrami. Podstawową ideą jest klastrowanie oparte na gęstości, tj. Gęste regiony tworzą klastry. Wartości odstające są zwracane osobno przez algorytm. Tak więc po zastosowaniu do mojego 1-wymiarowego histogramu DBSCAN jest w stanie powiedzieć mi, czy moje wyniki anomalii zawierają jakieś wartości odstające. Uwaga: W DBSCAN wartość odstająca jest tylko punktem, który nie należy do żadnego klastra. Podczas normalnych operacji oczekuję, że algorytm da tylko jeden klaster (i żadnych wartości odstających).
Po kilku eksperymentach odkryłem, że parametry działają dobrze. Oznacza to, że punkty muszą wykazywać odległość co najmniej 0,1 do „normalnej” gromady, aby mogły być postrzegane jako odstające.ϵ≈0.1
Po zidentyfikowaniu wartości odstających znalezienie progu sprowadza się do prostych zasad, takich jak:
W każdym razie dziękuję za wszystkie pomocne odpowiedzi!
źródło