Detección de anomalías con la red neuronal.

12

Tengo un gran conjunto de datos multidimensionales que se genera cada día.

¿Cuál sería un buen enfoque para detectar cualquier tipo de 'anomalía' en comparación con los días anteriores? ¿Es este un problema adecuado que podría abordarse con redes neuronales?

Cualquier sugerencia es apreciada.

información adicional: no hay ejemplos, por lo que el método debe detectar las anomalías en sí

Nickpick
fuente

Respuestas:

12

A partir de la formulación de la pregunta, supongo que no hay "ejemplos" de anomalías (es decir, etiquetas) en absoluto. Con esa suposición, un enfoque factible sería utilizar autoencoders : redes neuronales que reciben como entrada sus datos y están capacitados para generar esos mismos datos. La idea es que la capacitación ha permitido a la red aprender representaciones de las distribuciones de datos de entrada en forma de variables latentes.

Hay un tipo de autoencoder llamado autoencoder denoising , que está entrenado con versiones corruptas de los datos originales como entrada y con los datos originales no corruptos como salida. Esto proporciona una red que puede eliminar el ruido (es decir, la corrupción de datos) de las entradas.

Puede entrenar un autoencoder de eliminación de ruido con los datos diarios. Luego úselo en nuevos datos diarios; de esta manera, tiene los datos diarios originales y una versión no corrompida de esos mismos datos. Luego puede comparar ambos para detectar diferencias significativas .

La clave aquí es qué definición de diferencia significativa eliges. Podría calcular la distancia euclidiana y asumir que si supera cierto umbral arbitrario, tiene una anomalía. Otro factor importante es el tipo de corrupciones que introduces; deben estar lo más cerca posible de anormalidades razonables.

Otra opción sería utilizar redes generativas adversas . El subproducto de la capacitación es una red discriminadora que separa los datos diarios normales de los datos anormales.

ncasas
fuente
4

Creo que eso depende en gran medida de la naturaleza de sus datos (categórico / continuo). Comenzaría con métodos simples primero. Los que vienen a mi mente:

  • Puede comparar la distribución de cada variable mediante el uso de cuantiles o cualquier prueba estadística para ver si son significativamente diferentes
  • También puede contar la aparición de cada etiqueta / categoría y compararlas
  • También trataría de emplear cualquier tipo de medida de distancia. Por ejemplo, podría calcular la distancia mahalanobis y buscar grandes cambios
  • O algo realmente simple: solo una diferencia absoluta entre datos nuevos y antiguos, establezca un umbral y se informará todo lo que exceda el umbral
  • También puede implementar algunas técnicas multidimensionales, como matriz de correlación, componentes principales, agrupación, etc. y buscar cambios

Si ninguno de estos es adecuado, existe una rama completa de modelos de estadísticas / ML especializados para la detección de anomalías. SVM, t-SNE, bosques de aislamiento, Análisis Peer Group , Análisis Point Break , la serie de tiempo (en el que buscaría valores atípicos tendencias externas).

Esos métodos tienen la ventaja de que son una especie de caja blanca, por lo que puede decir por qué alguien es un caso atípico. Si esto no fuera lo que desea, otros sugirieron enfoques ANN, que también funcionarán.

HonzaB
fuente
0

Estoy tratando de resolver un problema similar. ¿Su conjunto de datos contiene una combinación de texto y características numéricas? Si es así, la complejidad de detectar anomalías aumenta (no sé por qué factor). Si su conjunto de datos es uniforme, por ejemplo, que contiene solo valores numéricos, puede usar un RNN que todavía necesita un conjunto de datos etiquetado pero puede detectar series temporales como patrones (ya que menciona la comparación con los valores del día anterior para ex)

Pradeep Banavara
fuente
0

Una forma simple de hacer esto usando Autoencoders (sin "autoencoders desagradables" que necesitan ser entrenados con "datos corruptos") es entrenar un autoencoder y luego inspeccionar el RMSE de las filas desde la entrada que no decodificó bien (las que que el autoencoder tuvo dificultades para reconstruir). Según alguna definición, los datos representarían una anomalía (ciertamente este sería el caso para cosas como picos en el tráfico).

orcaman
fuente