Histórico do problema: Estou trabalhando em um projeto que envolve arquivos de log semelhantes aos encontrados no espaço de monitoramento de TI (para minha melhor compreensão do espaço de TI). Esses arquivos de log são dados de séries temporais, organizados em centenas / milhares de linhas de vários parâmetros. Cada parâmetro é numérico (flutuante) e há um valor não trivial / sem erro para cada ponto no tempo. Minha tarefa é monitorar os arquivos de log para detecção de anomalias (picos, quedas, padrões incomuns com alguns parâmetros fora de sincronia, comportamento derivado estranho do 1º / 2º / etc., Etc.).
Em uma tarefa semelhante, tentei o Splunk com a Prelert, mas estou explorando opções de código aberto no momento.
Restrições: Estou me limitando ao Python porque o conheço bem e gostaria de atrasar a mudança para R e a curva de aprendizado associada. A menos que pareça haver um suporte esmagador ao R (ou outras línguas / software), eu gostaria de me ater ao Python para esta tarefa.
Além disso, estou trabalhando em um ambiente Windows no momento. Gostaria de continuar com o sandbox no Windows em arquivos de log de tamanho pequeno, mas posso passar para o ambiente Linux, se necessário.
Recursos: Verifiquei o seguinte com becos sem saída como resultados:
Python ou R para implementar algoritmos de aprendizado de máquina para detecção de fraudes . Algumas informações aqui são úteis, mas infelizmente estou lutando para encontrar o pacote certo porque:
"AnomalyDetection" do Twitter está em R, e eu quero me ater ao Python. Além disso, a pyculiarity da porta Python parece causar problemas na implementação no ambiente Windows para mim.
Skyline, minha próxima tentativa, parece ter sido praticamente descontinuada (devido a problemas no github ). Eu não mergulhei nisso, dado o pouco apoio que parece estar online.
Ainda estou explorando o scikit-learn, mas isso parece ser muito mais manual. A abordagem básica é aceitável para mim, mas minha formação em ferramentas de aprendizado é fraca, por isso gostaria de algo parecido com uma caixa preta para aspectos técnicos, como algoritmos, semelhantes ao Splunk + Prelert.
Definição e perguntas dos problemas: Estou procurando um software de código aberto que possa me ajudar a automatizar o processo de detecção de anomalias de arquivos de log de séries temporais no Python por meio de pacotes ou bibliotecas.
- Essas coisas existem para ajudar na minha tarefa imediata ou são imaginárias em minha mente?
- Alguém pode ajudar com medidas concretas para me ajudar a alcançar minha meta, incluindo conceitos ou fundamentos básicos?
- Essa é a melhor comunidade do StackExchange para perguntar, ou Estatísticas, Matemática ou mesmo Segurança ou Stackoverflow são as melhores opções?
EDIT [2015-07-23] Observe que a atualização mais recente da pyculiarity parece estar corrigida para o ambiente Windows! Ainda tenho que confirmar, mas deve ser outra ferramenta útil para a comunidade.
EDIT [2016-01-19] Uma pequena atualização. Não tive tempo de trabalhar nisso e pesquisar, mas estou dando um passo para trás para entender os fundamentos desse problema antes de continuar pesquisando em detalhes específicos. Por exemplo, duas etapas concretas que estou tomando são:
Começando com os artigos da Wikipedia para detecção de anomalias [ https://en.wikipedia.org/wiki/Anomaly_detection ], entendendo completamente e, em seguida, subindo ou descendo na hierarquia de conceitos de outros artigos vinculados da Wikipedia, como [ https: // pt.wikipedia.org/wiki/K-nearest_neighbors_algorithm ] e, em seguida, para [ https://en.wikipedia.org/wiki/Machine_learning ].
Explorando técnicas nas grandes pesquisas realizadas por Chandola et al 2009 "Anomaly Detection: A Survey" [ http://www-users.cs.umn.edu/~banerjee/papers/09/anomaly.pdf ] e Hodge et al 2004 "Um levantamento das metodologias de detecção de outlier" [ http://eprints.whiterose.ac.uk/767/1/hodgevj4.pdf ].
Uma vez que os conceitos sejam melhor compreendidos (espero brincar com exemplos de brinquedos à medida que desenvolvo o lado prático), espero entender quais ferramentas Python de código aberto são mais adequadas para meus problemas.