Grafvisualisering med Neo4j ved brug af Neovis.js

Udnyttelse af grafalgoritmer til datavisualisering

(William Lyon) (16. apr. 2018)

Opdatering: OReilly-bogen “Grafalgoritmer på Apache Spark og Neo4j Book er nu tilgængelig som gratis download af e-bog fra neo4j.com

I dette indlæg bruger vi en Neo4j Sandbox -forekomst til at starte med et Twitter-datasæt, køre PageRank og community-registrering på dataene. Vis derefter, hvordan du integrerer en grafvisualisering i en webapp ved hjælp af Neovis.js .

I dette indlæg undersøger vi, hvordan man opretter grafdatavisualiseringer, der bruger resultaterne af grafalgoritmer som PageRank og registrering af samfund . Efter at have kørt nogle grafalgoritmer ved hjælp af neo4j-graph-algoritmer biblioteket bruger vi JavaScript-grafvisualiseringsbiblioteket Neovis.js for at oprette visualiseringer, der kan integreres i en webapp og hente data direkte fra Neo4j.

Mål for grafvisualisering

Der er forskellige motiver og værktøjer til at oprette grafvisualiseringer. Dette inkluderer værktøjer til udforskning af grafen – den type interaktive visualiseringer, du muligvis ser i Neo4j-browser . Eller visualiseringer for , der viser resultaterne af en eller anden analyse . Disse kan være interaktive (noget der skal integreres i en webapp eller endda en enkeltstående applikation) eller statisk, beregnet til at formidle specifik betydning der kan bruges i tryk eller i et blogindlæg.

Dette indlæg vil fokusere på et værktøj, der adresserer nogle specifikke mål for grafvisualisering. Dette værktøj er Neovis.js og bruges til at oprette JavaScript-baserede grafvisualiseringer, der er indlejret i en webapp. Det bruger JavaScript Neo4j-driver til at oprette forbindelse til og hente data fra Neo4j og et JavaScript-bibliotek til visualisering kaldet vis .js til gengivelse af grafvisualiseringer. Neovis.js kan også udnytte resultaterne af grafalgoritmer som PageRank og community-opdagelse til styling af visualiseringen ved at binde egenskabsværdier til visuelle komponenter.

Denne screencast viser hvordan man bruger Neovis.js biblioteket til at oprette grafdatavisualiseringer stylet til resultaterne af grafalgoritmer med data fra Neo4j.

Grafvisualisering + Grafalgoritmer

Der er tre almindelige måder, hvorpå grafvisualiseringer kan forbedres med grafalgoritmer. Specifikt involverer dette styling af visuelle komponenter proportionalt med resultaterne af disse algoritmer:

  1. Bindende nodestørrelse til en centralitetsalgoritme , som f.eks. grad, PageRank eller mellemværelsescentralitet. Dette giver os et overblik over de vigtigste noder i netværket.
  2. Visuel gruppering af samfund eller klynger i grafen udføres ved hjælp af farve, så vi hurtigt kan identificere disse forskellige grupperinger.
  3. Styling forholdstykkelse proportionalt med en kantvægt , i sociale netværksdata kan dette være antallet af interaktioner mellem to tegn, i logistik- og routingsdata kan det være afstanden mellem to distributionscentre og er nyttigt til pathfinding-algoritmer (f.eks. som A * eller Dijkstras.

Kom godt i gang med datasættet

Vi bruger den russiske Twitter Trolls sandkasse som vores datasæt. Dette datasæt indeholder tweets fra kendte russiske Troll-konti, som offentliggjort af NBC News. Du kan oprette din egen Neo4j Sandbox-forekomst her.

Datamodellen til Twitter Trolls-datasættet inkluderer tweets , Brugere, Hashtags, URLer delt i Tweets og nævner og retweets.

I grafdata er ofte nogle af de mest interessante relationer udledt , og ikke direkte modelleret i dataene. Bruger-bruger retweet-grafen er et eksempel på dette. Hvilke brugere retweeter hvilke andre brugere?Hvem er den vigtigste bruger i denne retweet-graf? Er der grupper af brugere, der ofte retweeter hinanden?

Her har vi et tweet, der blev sendt af en bruger, at en anden bruger retweetede. Dette indebærer et bruger-bruger retweets-forhold. Vores første skridt vil være at finde disse udledte retweets-forhold og køre vores grafalgoritmer.

For at finde de vigtigste brugere og samfund, der bruger dette retweet-netværk, vil vi først finde alle Troll-brugere og oprette et RETWEETS -forbindelse, der direkte forbinder brugerne i grafen. Vi gemmer en count egenskab i forholdet, der repræsenterer det antal gange, som brugeren har retweetet den anden:

Når vi har oprettet disse RETWEETS relationer, kan vi køre PageRank over denne del af grafen (vi kunne også bruge en Cypher-forespørgsel at køre PageRank over den projicerede graf uden eksplicit at oprette forholdet):

Da vi angiver write: true over dette vil ikke kun køre PageRank, men tilføje en pagerank -egenskab til noderne indeholder deres PageRank-score. Vi kan derefter spørge ved hjælp af denne egenskabsværdi for at finde de ti bedste Troll-konti efter PageRank-score:

Og til sidst kan vi køre en algoritme til detektion af fællesskabet på retweet-netværket, i dette tilfælde etiketformering:

Dette tilføjer en community egenskab til knudepunkterne, hvilket indikerer hvilket samfund algoritme har bestemt, at noden hører til.

Så vi har nu kørt to grafalgoritmer (PageRank og udbredelse af etiketter), men hvordan giver vi mening om resultaterne? En visualisering kan hjælpe os med at finde indsigt i dataene.

Oprettelse af en grafvisualisering med Neovis.js

For at skabe en visualisering med Neovis.js skal vi først oprette forbindelse til Neo4j. I fanen Detaljer i vores Sandbox-forekomst kan vi finde forbindelsesoplysningerne til vores Neo4j-forekomst:

Serverforbindelsesstrengen, brugernavnet og adgangskoden inkluderes i et konfigurationsobjekt, som vi sender til konstruktøren til Neovis. Vi bliver også nødt til at specificere, hvilke node-etiketter vi vil visualisere, og hvordan de skal designes (hvilke egenskaber der bestemmer node-størrelse og farve).

Neovis.js fungerer ved at udfylde en

-element med visualiseringen, så vi bliver nødt til at specificere idet for det element i config-objektet, samt hvordan vi opretter forbindelse til vores Neo4j-forekomst, og hvilke egenskaber der skal bruges til bestemmelse af node-størrelse, farve og forholdstykkelse. Her er koden til at generere en grafvisualisering af vores retweet-netværk fra vores Neo4j Sandbox-forekomst ved hjælp af pagerank egenskaben til at bestemme node-størrelse, community for farve og count forholdsegenskaben for forholdstykkelse:

Og sådan ser vores visualisering ud:

Der er et par flere konfigurationsindstillinger, som du kan læse om i projektdokumentationen.

Ressourcer

Gratis download: OReilly “Grafalgoritmer på Apache Spark og Neo4j”

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *