Détecter les anomalies avec le réseau neuronal

12

J'ai un grand ensemble de données multidimensionnelles qui est généré chaque jour.

Quelle serait une bonne approche pour détecter tout type d'anomalie par rapport aux jours précédents? Est-ce un problème approprié qui pourrait être résolu avec les réseaux de neurones?

Toutes les suggestions sont appréciées.

informations supplémentaires: il n'y a pas d'exemples, la méthode doit donc détecter elle-même les anomalies

Nickpick
la source

Réponses:

12

D'après la formulation de la question, je suppose qu'il n'y a aucun "exemple" d'anomalies (c'est-à-dire d'étiquettes). Avec cette hypothèse, une approche réalisable serait d'utiliser des auto - encodeurs : des réseaux de neurones qui reçoivent en entrée vos données et sont formés pour sortir ces mêmes données. L'idée est que la formation a permis au réseau d'apprendre des représentations des distributions de données d'entrée sous forme de variables latentes.

Il existe un type d'auto-encodeur appelé auto - encodeur de débruitage , qui est formé avec des versions corrompues des données d'origine en entrée et avec des données d'origine non corrompues en sortie. Cela fournit un réseau qui peut supprimer le bruit (c'est-à-dire la corruption des données) des entrées.

Vous pouvez former un encodeur automatique de débruitage avec les données quotidiennes. Ensuite, utilisez-le sur de nouvelles données quotidiennes; de cette façon, vous avez les données quotidiennes originales et une version non corrompue de ces mêmes données. Vous pouvez ensuite comparer les deux pour détecter des différences significatives .

La clé ici est la définition de la différence significative que vous choisissez. Vous pouvez calculer la distance euclidienne et supposer que si elle dépasse un certain seuil arbitraire, vous avez une anomalie. Un autre facteur important est le type de corruption que vous introduisez; ils doivent être aussi proches que possible des anomalies raisonnables.

Une autre option consisterait à utiliser les réseaux contradictoires génératifs . Le sous-produit de la formation est un réseau discriminateur qui distingue les données quotidiennes normales des données anormales.

ncasas
la source
4

Je pense que cela dépend fortement de la nature de vos données (catégoriques / continues). Je commencerais d'abord par des méthodes simples. Cela me vient à l'esprit:

  • Vous pouvez comparer la distribution de chaque variable en utilisant des quantiles ou tout autre test statistique pour voir si elles sont significativement différentes
  • Vous pouvez également compter l'occurrence de chaque étiquette / catégorie et les comparer
  • J'essaierais également d'employer n'importe quelle sorte de mesure de distance. Par exemple, vous pouvez calculer la distance des mahalanobis et rechercher de grands changements
  • Ou quelque chose de vraiment simple - juste une différence absolue entre les nouvelles et les anciennes données, définissez un seuil et tout ce qui dépasse le seuil sera signalé
  • Vous pouvez également mettre en place des techniques multidimensionnelles - comme la matrice de corrélation, les principaux composants, le clustering, etc. et rechercher des changements

Si aucun de ceux-ci ne convient, il existe une branche entière de modèles statistiques / ML spécialisés pour la détection d'anomalies. SVM, t-SNE, les forêts d'isolement, l' analyse par les pairs du groupe , Pause analyse des points , des séries chronologiques (où vous chercheriez aberrantes tendances à l' extérieur).

Ces méthodes ont l'avantage d'être en quelque sorte une boîte blanche, vous pouvez donc savoir pourquoi quelqu'un est une valeur aberrante. Si ce n'est pas ce que vous voulez, d'autres ont suggéré des approches ANN, qui fonctionneront également.

HonzaB
la source
0

J'essaie de résoudre un problème similaire. Votre ensemble de données contient-il un mélange de texte et d'entités numériques? Si c'est le cas, la complexité de la détection des anomalies augmente (je ne sais pas par quel facteur). Si votre ensemble de données est uniforme, ne contenant par exemple que des valeurs numériques, vous pouvez potentiellement utiliser un RNN qui a toujours besoin d'un ensemble de données étiqueté mais il peut détecter des séries chronologiques comme des modèles (puisque vous mentionnez la comparaison avec les valeurs de jour perméables par exemple)

Pradeep Banavara
la source
0

Un moyen simple de le faire en utilisant les encodeurs automatiques (sans les "encodeurs automatiques débruitants qui doivent être entraînés avec des" données corrompues ") consiste à former un encodeur automatique puis à inspecter le RMSE des lignes de l'entrée qui n'a pas bien décodé (celles que l'autoencodeur a eu du mal à reconstruire). Selon une certaine définition, les données représenteraient une anomalie (ce serait certainement le cas pour des choses comme les pics de trafic).

orcaman
la source