Exécution de l’algorithme RCF d’Amazon sur l’analyse des anomalies de Numenta

Écrit par Joanne Cua, associée marketing, et l'architecte logiciel Luiz Scheinkman

L’automne dernier, nous avons rencontré un blog publié par AWS, la filiale de cloud computing d’Amazon, qui annonçait Amazon Kinesis Analytics pour la détection des anomalies, qui utilise l’algorithme Random Cut Forest (RCF) pour identifier les anomalies dans les données en continu.

Voir un nouvel algorithme pour la détection des anomalies a suscité notre intérêt, car nous avons développé notre propre référentiel pour la détection des anomalies chez Numenta, appelé Benchmark Anomaly Benchmark (NAB). Pour ceux qui ne sont pas familiers avec NAB, il s'agit du premier repère conçu pour évaluer les données de séries chronologiques. Il est doté d'un système de notation unique qui crédite les algorithmes capables de détecter les anomalies plus tôt tout en pénalisant les faux résultats.

Le référentiel open source de NAB contient plus de 50 flux de données étiquetés provenant d’un large éventail de sources du monde réel. En lisant l’article d’AWS sur l’utilisation de l’algorithme RCF pour la détection des anomalies, nous avons été agréablement surpris de voir que les auteurs ont démontré leur algorithme en utilisant l’un des exemples de données du NAB consistant en un volume d’accès en taxi de six mois à New York.

Par curiosité, nous avons demandé à Luiz Scheinkman, l’un de nos ingénieurs, d’exécuter RCF sur NAB pour déterminer le score du nouvel algorithme par rapport aux autres algorithmes de détection d’anomalies que nous avons évalués à l’aide de NAB, y compris notre propre algorithme HTM.

… Et les résultats sont en

Le RCF d’Amazon est arrivé au cinquième rang des algorithmes de détection d’anomalies testés sur NAB. La plupart de ces algorithmes sont des algorithmes de détection d'anomalies disponibles en open source, alors que quelques-uns d'entre eux ont été soumis au concours NAB 2016.

Afin de mieux comprendre comment Luiz a évalué RCF sur NAB, je l'ai rencontré et lui ai posé quelques questions sur le processus.

Pouvez-vous donner plus de détails sur la manière dont vous avez intégré RCF dans NAB?

Il existe 3 façons différentes de tester des algorithmes personnalisés sur NAB:
1. Créer un détecteur personnalisé à l'aide de l'API NAB
2. Donner les scores d’anomalie NAB avant la phase d’optimisation du seuil
3. Donner à NAB les détections d'anomalies

Étant donné que l'algorithme était déjà implémenté dans AWS Kinesis Data Analytics, j'ai choisi l'option 2, qui consiste simplement à transmettre des données NAB directement à AWS Kinesis et à calculer les scores d'anomalie à l'aide de la fonction intégrée RANDOM_CUT_FOREST.

Combien d'ajustements avez-vous dû faire à l'algorithme pour obtenir ces résultats?

J'ai utilisé le modèle par défaut AWS Kinesis Data Analytics pour la détection des anomalies tel quel; le seul ajustement était de normaliser le score d'anomalie.

Avez-vous essayé de changer les paramètres de l'algorithme pour voir si vous obtiendriez des résultats différents?

J’ai essayé d’utiliser différentes valeurs pour les paramètres «shingleSize» et «numberOfTrees» et de publier les résultats générant les meilleurs scores que j’ai trouvés, qui étaient en réalité les valeurs par défaut de la fonction RANDOM_CUT_FOREST. Les résultats sont faciles à reproduire et les paramètres sont faciles à modifier. Il serait donc intéressant que quiconque dans la communauté Open Source puisse essayer différents paramètres et me laisser savoir si cela améliore les scores.

Comment quelqu'un d'autre peut-il reproduire ces résultats?

J'ai expliqué comment vous pouvez le faire en sept étapes. Vous pouvez également trouver ces instructions dans notre référentiel NAB Random Cut Forest.

1. Cloner le référentiel NAB
Cette commande va cloner le référentiel:

Clone git https://github.com/numenta/NAB.git

2. Configurez vos informations d'identification AWS
 Utilisez l'outil d'interface de ligne de commande AWS et entrez la commande suivante:

aws configurer

3. Créer une structure de dossier de résultats NAB
Cette commande créera les répertoires et les entrées nécessaires dans le fichier config / thresholds.json:

python scripts / create_new_detector.py --detector randomCutForest

4. Créer une application AWS Kinesis Analytics
Cette commande crée et configure une nouvelle application AWS Kinesis Analytics prête à recevoir les données NAB du flux d'entrée et les scores d'anomalie de sortie appropriés pour NAB dans le flux de sortie:

nab python / détecteurs / random_cut_forest / random_cut_forest.py --create

5. Stream tous les fichiers
Pour diffuser tous les fichiers de données NAB, utilisez la commande suivante:

nab python / détecteurs / random_cut_forest / random_cut_forest.py --stream

6. Nettoyer
À la fin de l'évaluation, il est recommandé de supprimer toutes les ressources utilisées pour calculer les scores d'anomalie. Utilisez la commande suivante pour supprimer toutes les ressources AWS créées par ce script:

nab python / détecteurs / random_cut_forest / random_cut_forest.py --delete

7. Calculer les scores NAB
Une fois que vous avez calculé les scores d’anomalie pour toutes les données NAB, vous pouvez utiliser les commandes standard du NAB pour calculer les scores NAB. Par exemple, utilisez la commande suivante du répertoire racine du NAB pour optimiser le seuil de score d'anomalie pour les détections de votre algorithme, exécutez l'algorithme de score et normalisez les scores bruts pour obtenir vos scores NAB finaux.

python run.py -d randomCutForest --optimize --score --normalize

Si vous avez des questions ou des commentaires ou souhaitez partager vos résultats, n'hésitez pas à laisser un commentaire ci-dessous ou à créer un fil de discussion sur la section NAB du forum HTM.

Si vous avez aimé lire cet article, veuillez cliquer sur l’icône «Clap» ci-dessous pour le recommander à vos abonnés. Pour en savoir plus sur la façon dont notre travail contribue à faire progresser l’état de la théorie du cerveau et de l’intelligence artificielle, visitez notre site Web ou suivez-nous sur Facebook et Twitter.

Publié à l'origine sur numenta.com le 29 juin 2018.