Tło problemu: Pracuję nad projektem, który obejmuje pliki dziennika podobne do plików znalezionych w przestrzeni monitorowania IT (według mojego najlepszego zrozumienia przestrzeni IT). Te pliki dziennika są danymi szeregów czasowych, uporządkowanymi w setki / tysiące wierszy o różnych parametrach. Każdy parametr ma wartość liczbową (zmiennoprzecinkową) i dla każdego punktu czasowego istnieje wartość nietrywialna / bezbłędna. Moim zadaniem jest monitorowanie wspomnianych plików dziennika w celu wykrycia anomalii (skoki, upadki, nietypowe wzorce z niektórymi parametrami niezsynchronizowanymi, dziwne zachowanie 1/2 / itd. Pochodnej itp.).
Przy podobnym zadaniu wypróbowałem Splunk z Prelertem, ale obecnie badam opcje open source.
Ograniczenia: Ograniczam się do Pythona, ponieważ dobrze go znam i chciałbym opóźnić przejście na R i powiązaną krzywą uczenia się. O ile nie wydaje się, aby istniało przytłaczające wsparcie dla R (lub innych języków / oprogramowania), chciałbym trzymać się Pythona w tym zadaniu.
Ponadto na razie pracuję w środowisku Windows. Chciałbym kontynuować piaskownicę w systemie Windows na małych plikach dziennika, ale w razie potrzeby mogę przejść do środowiska Linux.
Zasoby: Sprawdziłem następujące z ślepymi zaułkami jako wyniki:
Python lub R do implementacji algorytmów uczenia maszynowego do wykrywania oszustw . Niektóre informacje tutaj są pomocne, ale niestety staram się znaleźć odpowiedni pakiet, ponieważ:
„AnomalyDetection” na Twitterze jest w R i chcę trzymać się Pythona. Co więcej, osobliwość portu Python wydaje mi się powodować problemy z implementacją w środowisku Windows.
Wydaje się, że Skyline, moja kolejna próba, została w zasadzie przerwana (z powodu problemów z githubem ). Nie zagłębiłem się głęboko w to, biorąc pod uwagę, jak mało wsparcia wydaje się być dostępne online.
scikit-learn Nadal badam, ale wydaje się, że jest to znacznie bardziej ręczne. Podejście do chwastów jest dla mnie OK, ale moje doświadczenie w narzędziach do nauki jest słabe, więc chciałbym coś w rodzaju czarnej skrzynki dla aspektów technicznych, takich jak algorytmy, podobne do Splunk + Prelert.
Definicja problemu i pytania: Szukam oprogramowania typu open source, które może mi pomóc w automatyzacji procesu wykrywania anomalii na podstawie plików dziennika szeregów czasowych w Pythonie za pomocą pakietów lub bibliotek.
- Czy istnieją takie rzeczy, które pomagają w moim bezpośrednim zadaniu, czy też są w mojej wyobraźni?
- Czy ktoś może pomóc w konkretnych krokach, które pomogą mi osiągnąć mój cel, w tym podstawowych podstaw lub koncepcji?
- Czy jest to najlepsza społeczność StackExchange, do której można się zwrócić, czy statystyki, matematyka, a nawet bezpieczeństwo lub Stackoverflow są lepszymi opcjami?
EDYCJA [2015-07-23] Należy pamiętać, że najnowsza aktualizacja osobliwości wydaje się być naprawiona w środowisku Windows! Muszę jeszcze potwierdzić, ale powinno być kolejnym przydatnym narzędziem dla społeczności.
EDYCJA [2016-01-19] Drobna aktualizacja. Nie miałem czasu na pracę nad tym i na badania, ale cofam się, aby zrozumieć podstawy tego problemu, zanim kontynuuję badania w konkretnych szczegółach. Na przykład dwa konkretne kroki, które podejmuję:
Począwszy od artykułów z Wikipedii dotyczących wykrywania anomalii [ https://en.wikipedia.org/wiki/Anomaly_detection ], pełne zrozumienie, a następnie przejście w górę lub w dół w hierarchii koncepcji innych powiązanych artykułów z Wikipedii, takich jak [ https: // en.wikipedia.org/wiki/K-nearest_neighbors_alameterm ], a następnie do [ https://en.wikipedia.org/wiki/Machine_learning ].
Badanie technik we wspaniałych ankietach przeprowadzonych przez Chandola i in. 2009 „Anomaly Detection: A Survey” [ http://www-users.cs.umn.edu/~banerjee/papers/09/anomaly.pdf ] oraz Hodge i in. 2004 „Badanie metod wykrywania wartości odstających” [ http://eprints.whiterose.ac.uk/767/1/hodgevj4.pdf ].
Po tym, jak pojęcia zostaną lepiej zrozumiane (mam nadzieję, że pobawię się przykładami zabawek, idę rozwinąć praktyczną stronę), mam nadzieję zrozumieć, które narzędzia Python open source są bardziej odpowiednie dla moich problemów.