PLATFORM

À la poursuite du trésor enfoui : analyse de graphes grâce au Machine Learning Toolkit de Splunk

Les diamantsEst-ce que vous aimez les trésors ? Les diamants parfaitement taillés ? Les structures limpides à la beauté infinie ? C’est vrai ? Alors joignez-vous à moi pendant 10 minutes pour découvrir la quête des trésors qui se cachent dans vos données : les graphes ! 

Je vous préviens tout de suite, vous allez prendre part à un voyage mystérieux au cœur de la philosophie des données. Mais vous découvrirez des artefacts que vous pourrez utiliser pour débuter votre recherche de pierres précieuses dès aujourd’hui. Et croyez-le ou non, si vous possédez la dernière version du Machine Learning Toolkit de Splunk, les joyaux sont pratiquement à portée de main, alors commençons sans plus attendre !

Crédit photo : Commonwikimedia.org

De l’autre côté du miroir

Si vous n’avez jamais entendu parler de graphes, imaginez un réseau d’éléments connectés. Au cours des dernières décennies, de nombreuses publications sont apparues, de la théorie des graphes aux sciences des réseaux (sociaux) appliquées en passant par la dynamique des systèmes complexes. Cependant, peu de personnes ont conscience de la puissance des graphes, malgré le fait que la plupart d’entre nous profitent de leurs applications dans le monde réel au quotidien, par exemple : 

  • votre système de navigation qui vous permet d’arriver à l’heure à votre rendez-vous ;
  • votre boutique en ligne préférée qui vous recommande des produits qui vous intéressent ;
  • votre fournisseur de carte de crédit qui vous protège contre la fraude ;
  • et enfin, vous lisez probablement cet article sur un appareil connecté à une structure de graphe gigantesque appelée Internet.

Pour faire court, les graphes peuvent s’avérer très précieux, au même titre que les joyaux. Où pouvez-vous donc les trouver ? Et qu’est-ce que tout cela a à voir avec Splunk ? 

Un exercice d’extraction du charbon

Presque toutes les données dans Splunk sont visibles sous forme de graphes, et c’est peut-être une fonctionnalité qui vous avait échappée auparavant. Dans vos données de trafic réseau, une IP source se connecte à une IP de destination avec des attributs tels que les octets entrants/sortants, les paquets, les ports et d’autres propriétés. Les utilisateurs se connectent à une pile de systèmes, services, appareils et applications interconnectés. Les transactions vont du point A, au point B, au point C et peuvent suivre un processus qui vous aide à analyser les parcours des utilisateurs et les processus métier de manière plus générale. 

Curieusement, vous pouvez facilement extraire beaucoup de ces relations à partir de vos données brutes à l’aide d’un modèle SPL de base :

... | stats count by source destination

Analyse de graphes avec MLTK

Et voilà, comme vous pouvez le constater ci-dessus, vous venez d’extraire votre premier graphe à partir de vos données brutes dans Splunk. Avec un peu de SPL, vous avez récupéré une représentation sous forme de liste de bords qui peut être élégamment visualisée directement dans Splunk. Merci à Erica qui a créé ce superbe utilitaire personnalisé de visualisation de graphe 3D téléchargeable gratuitement sur splunkbase !

Après ce petit exercice d’extraction de charbon, vous vous dites peut-être : « C’était trop simple. Et je ne vois toujours pas le diamant que vous m’avez promis, juste une grosse boule de poils ! » Et vous avez bien raison. Nous devons traiter encore davantage le diamant brut, alors mettons-nous au travail !

Découpe du diamant

En règle générale, vous voulez extraire des informations bien précises d’un graphe, ce sont les véritables diamants que nous recherchons :

  • Qui est l’acteur le plus influent au sein d’un réseau ?
  • Qui a une fonction d’unification entre les groupes et est plus susceptible de connecter les entités entre elles ?
  • Quelles communautés existent dans le graphe et qui les compose ? 
  • Quels sont les chemins les plus courts entre elles ?
  • Que se passe-t-il si les nœuds ou les liens se brisent ?
  • Et comment toutes ces propriétés évoluent-elles au fil du temps ?

À l’aide d’algorithmes de graphes, vous pouvez répondre à chacune de ces questions et obtenir des résultats particulièrement importants en matière d’analyse de sécurité, de détection des fraudes ou d’analyse liée aux réseaux sociaux. Vous pensez toujours que c’est trop abstrait ? D’accord, parlons des algorithmes.

Danse avec les algorithmes

Afin de vous proposer un exemple plus tangible, penchons-nous sur un ensemble de données simple fourni avec le Machine Learning Toolkit de Splunk : les transactions de Bitcoin. En gros, un utilisateur (source) transfère une valeur vers un autre utilisateur (destination). Peu à peu, toutes les transactions finissent par créer un graphe.

Imaginons maintenant qu’il existe une entité trop influente dans le graphe ? Peut-être un courtier caché qui profite d’un avantage injuste ou un fraudeur lié à un réseau de fraude ? Pour répondre à ces questions, les caractéristiques typiques des graphes telles que les mesures de centralité, l’analyse de chemin, les coefficients de clustering ou la détection de communautés peuvent révéler des informations utiles. Un autre élément à garder à l’esprit est que ces caractéristiques liées aux graphes peuvent grandement améliorer les approches classiques de machine learning si vous les utilisez en plus des fonctionnalités habituelles.

Mesures de centralité

Analyse de graphes avec NetworkX

L’exemple ci-dessus montre un sous-ensemble des transactions de Bitcoin et met l’accent sur ses 5 plus grands nœuds, dont la centralité de vecteur propre, la centralité intermédiaire ou le coefficient de clustering est élevé. Manifestement, le nœud 7122, indiqué en rose, se démarque car il affiche une centralité intermédiaire élevée mais il relie également la structure graphique sur la gauche à une autre structure hors de l’écran sur la droite, ce qui entraîne aussi le niveau de centralité intermédiaire le plus élevé. Voilà les diamants que les analystes recherchent car ils révèlent d’importants motifs dans un grand ensemble de données et fournissent des informations utiles pour mener des investigations plus poussées.

Communautés et composants connectés

Analyse de graphes : composants connectés

Une autre question peut être : y a-t-il des parties à l’écart dans le graphe ? En règle générale, elles révèlent des groupes isolés d’entités uniquement reliées à leur propre groupe et pas aux autres dans le graphe. À l’aide de l’algorithme des composants connectés, ces groupes peuvent être détectés et étiquetés automatiquement. Cette technique a été utilisée dans le cadre d’un scénario de sécurité présenté par Siemens l’année dernière lors de .conf19 afin de calculer les scores d’anomalie dans le contexte d’entités et de systèmes connectés.

Une autre approche intéressante est la propagation d’étiquettes. Il s’agit d’un algorithme de machine semi-supervisé. Il génère des étiquettes pour identifier des communautés dans un graphe et fournit une structure à l’analyste. Celle-ci peut ensuite être traitée et analysée de manière plus approfondie.

Analyse de graphes : propagation d’étiquettes

Commencez à extraire vos joyaux

Maintenant, vous devriez commencer à apercevoir les trésors cachés dans vos données et vous enthousiasmer pour ce nouveau type d’analyse que vous pouvez appliquer à vos données dans Splunk. Vous vous demandez probablement où trouver ces algorithmes et ces fonctions. La bonne nouvelle, c’est qu’avec la dernière version (2.0) du package Python for Scientific Computing, vous disposez directement de NetworkX, une bibliothèque pour l’analyse de graphes, et vous pouvez tout simplement l’utiliser directement dans Splunk ! Vous avez juste à intégrer les algorithmes de votre choix avec l’API MLSPL dans le Machine Learning Toolkit et vous êtes fin prêt. Pour accélérer le processus, j’ai utilisé l’interface Jupyter Notebook fournie dans le Deep Learning Toolkit pour dessiner rapidement les algorithmes indiqués ci-dessus et les réimporter dans MLTK en quelques minutes. À des fins pratiques, vous trouverez des exemples de tableaux de bord et 3 algorithmes de graphes fournis avec l’appli de visualisation de graphes 3D Graph Network Topology Visualization sur splunkbase.

Deep Learning Toolkit pour Splunk

Qu’en est-il de l’échelle ?

Enfin, vous pourriez rencontrer un problème majeur dans les graphes : l’échelle. 

Lorsque les graphes s’agrandissent, la complexité de calcul peut devenir gigantesque. Dans ces cas-là, vous faites généralement face à 3 scénarios : 

  1. Vous souhaitez utiliser des algorithmes nécessitant une très grande puissance de calcul, la puissance de calcul est donc votre facteur limitant. 
  2. Votre graphe est tellement volumineux que vous devez le répartir sur plusieurs nœuds, la mémoire est donc votre facteur limitant.
  3. Une combinaison de ces deux scénarios, la puissance de calcul et la mémoire sont donc les facteurs limitants.

Pour le premier scénario, vous pourrez peut-être résoudre le problème en accélérant les puissances de calcul, par exemple par la parallélisation de GPU avec des frameworks tels que rapids.ai. Si c’est le cas, consultez l’article de blog d’Anthony qui explique comment construire un conteneur personnalisé accéléré par un GPU avec rapids.ai pour le Deep Learning Toolkit. Pour les deux autres cas, vous aurez probablement besoin d’architectures de calcul distribué plus évoluées, telles que GraphX du framework Spark, pour ensuite les connecter à Splunk. Pour ce faire, reportez-vous à cette présentation de .conf17 par Raanan et Andrew.

Enfin, si les conditions nécessaires pour réaliser votre graphe sont réunies, vous choisirez probablement une base de données de graphes comme Neo4j que vous pouvez connecter à Splunk, par exemple à l’aide de l’appli neo4s de splunkbase. Compte tenu de toutes ces possibilités, j’espère que vous êtes paré à exploiter un nouveau type de scénario d’analyse, maintenant réalisable avec Splunk.

Bon Splunking,

Philipp Drieger

*Cet article est une traduction de celui initialement publié sur le blog Splunk anglais.

Splunk
Posted by

Splunk

TAGS
Show All Tags
Show Less Tags