Poszukuję dobrego pakietu do wykrywania anomalii w szeregach czasowych

17

Czy istnieje kompleksowy pakiet open source (najlepiej w Pythonie lub R), który może być wykorzystywany do wykrywania anomalii w szeregach czasowych?

W scikit-learn znajduje się pakiet SVM jednej klasy, ale nie dotyczy on danych szeregów czasowych. Szukam bardziej wyrafinowanych pakietów, które na przykład wykorzystują sieci bayesowskie do wykrywania anomalii.

pythinker
źródło
musimy napisać jeden, stary !! : P
Arpit Sisodia

Odpowiedzi:

19

Wiem, że jestem tu trochę spóźniony, ale tak, jest pakiet do wykrywania anomalii wraz z odstającymi kombinacjami ram.

Wciąż jest na wczesnym etapie rozwoju na github i wkrótce zostanie opublikowany w JMLR.

Pakiet jest w języku python, a nazwa pakietu to pyod ( https://github.com/yzhao062/Pyod ).

Ma wiele algorytmów dla następujących indywidualnych podejść:

  1. Modele liniowe do wykrywania wartości odstających ( PCA, vMCD, vOne-Class i SVM )
  2. Modele detekcji wartości odstających oparte na bliskości ( LOF, CBLOF, HBOS, KNN, AverageKNN i MedianKNN )
  3. Modele probabilistyczne do wykrywania wartości odstających ( ABOD i FastABOD )
  4. Zestawy odstające i ramy kombinacyjne ( IsolationForest i FeatureBagging )
  5. Sieci neuronowe i modele głębokiego uczenia się ( autokoder z całkowicie podłączoną siecią neuronową )

Wreszcie, jeśli szukasz szeregów czasowych per se, wtedy ten link github będzie przydatny.

Ma następujące pakiety list do wykrywania wartości odstających od szeregów czasowych:

datastream.io

sylwetka na tle nieba

banpei

Wykrywanie anomalii

Shankar Chavan
źródło
jakikolwiek sposób pracy nad nieprawidłowościami kontekstowymi?
Arpit Sisodia
mówisz o wykrywaniu anomalii lub wykrywaniu wartości odstających? Jest różnica.
Arpit Sisodia
6

Istnieje wiele sposobów radzenia sobie z nieprawidłowościami szeregów czasowych

1) Jeśli znane są nieprawidłowości , zbuduj model klasyfikacji. Ten model służy do wykrywania tego samego rodzaju nieprawidłowości dla danych szeregów czasowych.

2) Jeśli nieprawidłowości są nieznane , to, co zrobiliśmy w naszej organizacji - jest kombinacją grupowania i klasyfikacji -

Najpierw użyj LOF / K-średnich / odległości Cooka, aby zidentyfikować wartości odstające. Przekształć całe dane w problem klasyfikacji, ponieważ mamy teraz 2 klasy - wartości odstające i normalne. Teraz zbuduj model klasyfikacji i uzyskaj reguły (model klasyfikacji) w celu identyfikacji nieprawidłowości w czasie wykonywania (dane szeregów czasowych).

3) Jeśli anomalie są nieznane , podczas moich badań najczęstszym sposobem identyfikacji anomalii jest zbudowanie normalnego modelu, a wszelkie odchylenia od normalnego modelu (błędu) są nieprawidłowe, więc w twoim przypadku prognozujesz swoje szeregi czasowe na następną godzinę, a następnie porównujesz z rzeczywistymi wartościami. Jeśli błąd jest większy niż oczekiwano, dzieje się coś nienormalnego.

Nie byłem w stanie znaleźć żadnego bezpośredniego pakietu w Pythonie lub R, aby to zrobić, ponieważ nikt nie wiedział, co jest naprawdę nienormalne: P, we wszystkich przypadkach było to związane z wykrywaniem wartości odstających.

kilka przydatnych linków

https://machinelearningstories.blogspot.com/2018/12/easiest-way-of-detection-abnormality.html

https://machinelearningstories.blogspot.com/2018/07/anomaly-detection-anomaly-detection-by.html

Arpit Sisodia
źródło
2

Spróbuj Biblii Proroka

Prorok to procedura prognozowania danych szeregów czasowych w oparciu o model addytywny, w którym trendy nieliniowe są dopasowane do sezonowości rocznej, tygodniowej i dziennej oraz efektów wakacyjnych. Działa najlepiej z szeregami czasowymi, które mają silne efekty sezonowe i kilka sezonów danych historycznych. Prorok jest odporny na brakujące dane i zmiany trendu i zazwyczaj dobrze radzi sobie z wartościami odstającymi.

Więcej na: Wykrywanie anomalii w szeregach czasowych z biblioteką Proroka

Kryszna
źródło