Visualisation de graphes avec Neo4j avec Neovis.js

Exploitation des algorithmes graphiques pour la visualisation des données

(William Lyon) (16 avril 2018)

Mise à jour: Le livre OReilly « Graph Algorithms on Apache Spark et Neo4j Book est désormais disponible sous le nom téléchargement gratuit de livres électroniques, sur neo4j.com

Dans cet article, nous allons utiliser une instance de Neo4j Sandbox pour commencer avec un ensemble de données Twitter, exécuter le PageRank et la détection de la communauté sur les données. Montrez ensuite comment intégrer une visualisation graphique dans une application Web à laide de Neovis.js .

Dans cet article, nous explorons comment créer des visualisations de données graphiques qui utilisent les résultats dalgorithmes graphiques tels que PageRank et détection de la communauté . Après avoir exécuté quelques algorithmes de graphes à laide de la bibliothèque neo4j-graph-algorithms , nous utiliserons la bibliothèque de visualisation de graphes JavaScript Neovis.js pour créer des visualisations qui peuvent être intégrées dans une application Web, en récupérant des données directement à partir de Neo4j.

Objectifs de la visualisation graphique

Il existe différentes motivations et outils pour créer des visualisations de graphiques. Cela inclut des outils pour explorer le graphique – le type de visualisations interactives que vous pourriez voir dans Navigateur Neo4j . Ou des visualisations pour montrant les résultats de certaines analyses . Ceux-ci peuvent être interactifs (quelque chose à intégrer dans une application Web ou même une application autonome), ou statiques, destinés à transmettre une signification spécifique qui pourrait être utilisé dans limpression ou dans un article de blog.

Cet article se concentrera sur un outil qui répond à certains objectifs spécifiques de la visualisation graphique. Cet outil est Neovis.js et est utilisé pour créer des visualisations de graphes basées sur JavaScript qui sont intégrées dans une application Web. Il utilise le pilote JavaScript Neo4j pour se connecter et récupérer les données de Neo4j et une bibliothèque JavaScript pour la visualisation appelée vis .js pour le rendu des visualisations graphiques. Neovis.js peut également tirer parti des résultats des algorithmes graphiques tels que le PageRank et la détection de communauté pour styliser la visualisation en liant les valeurs de propriété aux composants visuels.

Ce screencast montre comment utiliser la bibliothèque Neovis.js pour créer des visualisations de données graphiques adaptées aux résultats dalgorithmes graphiques avec des données de Neo4j.

Visualisation de graphes + algorithmes de graphes

Il y en a trois façons dont les visualisations graphiques peuvent être améliorées avec des algorithmes graphiques. Plus précisément, cela implique de styliser les composants visuels proportionnellement aux résultats de ces algorithmes:

  1. Lier la taille du nœud à un algorithme de centralité , comme le degré, le PageRank ou la centralité entre les deux. Cela nous permet de voir en un coup dœil les nœuds les plus importants du réseau.
  2. Regroupement visuel communautés ou clusters dans le graphique se fait par lutilisation de la couleur, afin que nous puissions identifier rapidement ces groupements distincts.
  3. Le style de lépaisseur de la relation proportionnellement à un poids darête , dans les données de réseaux sociaux, cela peut être le nombre dinteractions entre deux caractères, dans les données de logistique et de routage, cela peut être la distance entre deux centres de distribution et est utile pour les algorithmes comme A * ou Dijkstra).

Premiers pas avec le jeu de données

Nous allons utiliser le bac à sable russe Twitter Trolls comme jeu de données. Cet ensemble de données contient des tweets provenant de comptes de trolls russes connus, publiés publiquement par NBC News. Vous pouvez créer votre propre instance Neo4j Sandbox ici.

Le modèle de données de lensemble de données Twitter Trolls comprend des Tweets , Utilisateurs, Hashtags, URL partagées dans les Tweets et les mentions et les retweets.

Dans les données graphiques, certaines des relations les plus intéressantes sont souvent déduites , et non directement modélisé dans les données. Le graphique de retweet utilisateur-utilisateur en est un exemple. Quels utilisateurs retweetent quels autres utilisateurs?Qui est lutilisateur le plus important dans ce graphique de retweet? Y a-t-il des groupes dutilisateurs qui se retweetent fréquemment?

Voici un tweet qui a été publié par un utilisateur, quun autre utilisateur a retweeté. Cela implique une relation de retweets utilisateur-utilisateur. Notre première étape sera de trouver ces relations de retweets inférées et dexécuter nos algorithmes graphiques.

Pour trouver les utilisateurs et les communautés les plus importants utilisant ce réseau de retweet, nous allons trouvez dabord tous les utilisateurs Troll et créez une relation RETWEETS connectant directement les utilisateurs dans le graphique. Nous stockons une propriété count sur la relation représentant le nombre de fois que lutilisateur a retweeté lautre:

Une fois que nous avons créé ces RETWEETS relations, nous pouvons exécuter PageRank sur cette partie du graphique (nous pourrions également utiliser une requête Cypher pour exécuter le PageRank sur le graphique projeté sans créer explicitement les relations):

Puisque nous spécifions write: true ci-dessus exécutera non seulement le PageRank, mais ajoutera une propriété pagerank aux nœuds contenant leur score de PageRank. Nous pouvons ensuite effectuer une requête en utilisant cette valeur de propriété pour trouver les dix meilleurs comptes Troll par score de PageRank:

Et enfin nous pouvons exécuter un algorithme de détection de communauté sur le réseau de retweet, dans ce cas propagation détiquette:

Cela ajoutera une propriété community aux nœuds, indiquant quelle communauté le algorithme a déterminé le nœud auquel appartient.

Nous avons donc maintenant exécuté deux algorithmes de graphes (PageRank et propagation détiquettes), mais comment donner un sens aux résultats? Une visualisation peut nous aider à trouver des informations dans les données.

Création dune visualisation graphique avec Neovis.js

Afin de créer une visualisation avec Neovis.js, nous devons dabord nous connecter à Neo4j. Dans longlet Détails de notre instance Sandbox, nous pouvons trouver les détails de connexion pour notre instance Neo4j:

La chaîne de connexion au serveur, le nom dutilisateur et le mot de passe seront inclus dans un objet de configuration que nous passerons au constructeur pour Neovis. Nous devrons également spécifier les étiquettes de nœuds que nous voulons visualiser et comment elles doivent être stylisées (quelles propriétés déterminent la taille et la couleur des nœuds).

Neovis.js fonctionne en remplissant un

avec la visualisation, nous devrons donc spécifier lid de cet élément dans lobjet de configuration, ainsi que comment se connecter à notre instance Neo4j, et quelles propriétés utiliser pour déterminer la taille du nœud, la couleur et lépaisseur de la relation. Voici le code pour générer une visualisation graphique de notre réseau de retweet à partir de notre instance Neo4j Sandbox, en utilisant la propriété pagerank pour déterminer la taille du nœud, community pour la couleur et la propriété de relation count pour lépaisseur de la relation:

Et voici à quoi ressemble notre visualisation:

Il y a quelques autres options de configuration que vous pouvez lire dans la documentation du projet.

Ressources

Téléchargement gratuit: OReilly «Algorithmes graphiques sur Apache Spark et Neo4j»

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *