Buscando un buen paquete para la detección de anomalías en series de tiempo


17

¿Existe un paquete completo de código abierto (preferiblemente en python o R) que pueda usarse para la detección de anomalías en series de tiempo?

Hay un paquete SVM de una clase en scikit-learn, pero no es para datos de series temporales. Estoy buscando paquetes más sofisticados que, por ejemplo, utilicen redes bayesianas para la detección de anomalías.


¡Necesitamos escribir uno, hermano! : P
Arpit Sisodia

Respuestas:


19

Sé que llego un poco tarde aquí, pero sí, hay un paquete para la detección de anomalías junto con marcos de combinación atípicos.

Todavía está en su etapa inicial de desarrollo en github y pronto se publicará en JMLR.

El paquete está en lenguaje python y el nombre del paquete es pyod ( https://github.com/yzhao062/Pyod ).

Tiene múltiples algoritmos para los siguientes enfoques individuales:

  1. Modelos lineales para detección de valores atípicos ( PCA, vMCD, vOne-Class y SVM )
  2. Modelos de detección de valores atípicos basados ​​en la proximidad ( LOF, CBLOF, HBOS, KNN, AverageKNN y MedianKNN )
  3. Modelos probabilísticos para detección de valores atípicos ( ABOD y FastABOD )
  4. Conjuntos atípicos y marcos de combinación ( IsolationForest y FeatureBagging )
  5. Redes neuronales y modelos de aprendizaje profundo ( codificador automático con red neuronal totalmente conectada )

Finalmente, si está buscando específicamente series de tiempo per se, entonces este enlace github será útil.

Tiene los siguientes paquetes de listas para la detección de valores atípicos de series de tiempo:

datastream.io

horizonte

banpei

Detección de anomalías


alguna forma de trabajar en anormalidades basadas en el contexto?
Arpit Sisodia

¿Estás hablando de detección de anomalías o detección de valores atípicos? Hay una diferencia.
Arpit Sisodia

6

Hay múltiples formas de manejar las anormalidades de series de tiempo.

1) Si se conocen anormalidades , construya un modelo de clasificación. Use este modelo para detectar el mismo tipo de anomalías para datos de series temporales.

2) Si se desconocen las anomalías , lo que hemos hecho en nuestra organización es una combinación de agrupamiento y clasificación.

Primero use LOF / K-means / Distancia de Cook para identificar valores atípicos. Convierta datos completos en problemas de clasificación, ya que ahora tenemos 2 clases: valores atípicos y normales. Ahora construya un modelo de clasificación y obtenga reglas (modelo de clasificación) para identificar anormalidades en el tiempo de ejecución (datos de series de tiempo).

3) Si se desconocen las anomalías , durante mi investigación, la forma más común de identificar anomalías es construir un modelo normal y cualquier desviación del modelo normal (error) es anormal, por lo que en su caso pronostique su serie de tiempo para la próxima hora y luego compare con valores reales Si el error es más de lo esperado, está sucediendo algo anormal.

No pude encontrar ningún paquete directo en Python o R para hacerlo, ya que nadie sabía lo que es realmente anormal: P, en todos los casos se ha relacionado con la detección de valores atípicos.

algunos enlaces útiles

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

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


2

Prueba Prophet Library

Prophet es un procedimiento para pronosticar datos de series temporales basados ​​en un modelo aditivo donde las tendencias no lineales se ajustan a la estacionalidad anual, semanal y diaria, más los efectos de vacaciones. Funciona mejor con series de tiempo que tienen fuertes efectos estacionales y varias temporadas de datos históricos. Prophet es robusto ante los datos faltantes y los cambios en la tendencia, y generalmente maneja bien los valores atípicos.

Más en: Detección de anomalías en series de tiempo con la biblioteca Prophet

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.