Vizualizace grafů pomocí Neo4j pomocí Neovis.js

Využití grafových algoritmů pro vizualizaci dat

(William Lyon) (16. dubna 2018)

Aktualizace: Kniha OReilly „Graph Algorithms on Apache Spark and Neo4j Book je nyní k dispozici jako stahování e-knih zdarma z neo4j.com

V tomto příspěvku použijeme instanci Neo4j Sandbox , abychom mohli začít s datovou sadou Twitter, spustit PageRank a detekci komunity na datech. Poté ukažte, jak vložit vizualizaci grafu do webové aplikace pomocí Neovis.js .

V tomto příspěvku prozkoumáme, jak vytvořit vizualizace dat grafu, které využívají výsledky grafových algoritmů jako PageRank a detekce komunity . Po spuštění některých algoritmů grafů pomocí knihovny neo4j-graph-algorithms použijeme knihovnu vizualizace grafů JavaScriptu Neovis.js k vytváření vizualizací, které lze vložit do webové aplikace, načítání dat přímo z Neo4j.

Cíle vizualizace grafu

K vytváření grafických vizualizací existují různé motivace a nástroje. To zahrnuje nástroje pro zkoumání grafu – typ interaktivních vizualizací, které můžete vidět v Prohlížeč Neo4j . Nebo vizualizace pro zobrazující výsledky nějaké analýzy . Mohou být interaktivní (něco, co má být vloženo do webové aplikace nebo dokonce samostatné aplikace), nebo statické, určené k vyjádření konkrétního významu , které lze použít v tisku nebo v blogovém příspěvku.

Tento příspěvek se zaměří na jeden nástroj, který řeší některé konkrétní cíle vizualizace grafu. Tento nástroj je Neovis.js a slouží k vytváření vizualizací grafů založených na JavaScriptu, které jsou vloženy do webové aplikace. Využívá ovladač JavaScript Neo4j pro připojení a načítání dat z Neo4j a knihovnu JavaScriptu pro vizualizaci nazvanou vis .js pro vykreslování vizualizací grafů. Neovis.js může také využít výsledky grafových algoritmů, jako je PageRank a detekce komunity, pro stylizaci vizualizace vazbou hodnot vlastností na vizuální komponenty.

Tento screencast ukazuje jak používat knihovnu Neovis.js k vytváření vizualizací dat grafů ve stylu výsledků algoritmů grafů s daty z Neo4j.

Graph Visualization + Graph Algorithms

Existují tři běžné způsoby, jak lze vizualizace grafů vylepšit pomocí grafových algoritmů. Konkrétně jde o stylování vizuálních komponent úměrně s výsledky těchto algoritmů:

  1. Vazba velikosti uzlu na algoritmus ústřednosti , jako je stupeň, hodnocení PageRank nebo centrality mezi. To nám umožňuje na první pohled vidět nejdůležitější uzly v síti.
  2. Vizuální seskupování komunit nebo klastrů v grafu se provádí pomocí barvy, abychom mohli rychle identifikovat tato odlišná seskupení.
  3. Tloušťka stylového vztahu úměrně k hmotnosti hrany , v datech sociální sítě to může být počet interakcí mezi dvěma znaky, v logistických a směrovacích datech to může být vzdálenost mezi dvěma distribučními centry a je užitečný pro algoritmy hledání cest (například jako A * nebo Dijkstras).

Začínáme s datovou sadou

Jako datovou sadu budeme používat sandbox ruských twitterů. Tato datová sada obsahuje tweety ze známých ruských účtů Troll, jak jsou zveřejněny zprávami NBC. Můžete si vytvořit vlastní instanci Neo4j Sandbox zde.

Datový model datové sady Twitter Trolls obsahuje tweety „Uživatelé, hashtagy, adresy URL sdílené ve tweetech a zmínky a retweety.

V datech grafů jsou často odvozené ěkteré z nejzajímavějších vztahů a není přímo modelován v datech. Příkladem je graf retweetů mezi uživatelem a uživatelem. Kteří uživatelé retweetují, kteří další uživatelé?Kdo je nejdůležitějším uživatelem v tomto grafu retweetů? Existují skupiny uživatelů, kteří se často navzájem opakují?

Zde máme tweet, který byl zveřejněn uživatelem, který jiný uživatel retweetnul. To znamená vztah retweetů mezi uživatelem a uživatelem. Naším prvním krokem bude nalezení těchto odvozených vztahů retweetů a spuštění našich grafických algoritmů.

Abychom našli nejdůležitější uživatele a komunity využívající tuto síť retweet, nejprve najděte všechny uživatele Trollu a vytvořte RETWEETS vztah, který přímo propojí uživatele v grafu. Uchováváme vlastnost count ve vztahu představujícím počet opakování retweetů uživatele druhou:

Jakmile vytvoříme tyto RETWEETS vztahy, můžeme přes tuto část grafu spustit PageRank (můžeme také použít Cypherův dotaz spustit PageRank nad projektovaným grafem bez výslovného vytvoření vztahů):

Protože zadáme write: true nad tím se nejen spustí PageRank, ale přidá se vlastnost pagerank do uzlů, která obsahuje skóre PageRank. Poté můžeme pomocí této hodnoty vlastnosti vyhledat první desítku účtů Troll podle skóre PageRank:

A konečně můžeme spustit algoritmus detekce komunity v síti retweet, v tomto případě šíření štítku:

Tím se do uzlů přidá vlastnost community, která označuje, ve které komunitě je Algoritmus určil, že uzel patří.

Takže jsme nyní spustili dva grafové algoritmy (PageRank a šíření štítků), ale jak dáváme smysl výsledkům? Vizualizace nám může pomoci najít statistiky v datech.

Vytvoření vizualizace grafu pomocí Neovis.js

Aby bylo možné vytvořit vizualizaci pomocí Neovis.js, musíme se nejprve připojit k Neo4j. Na kartě podrobností naší instance Sandbox najdete podrobnosti o připojení pro naši instanci Neo4j:

Řetězec připojení k serveru, uživatelské jméno a heslo budou zahrnuty do konfiguračního objektu, který předáme konstruktoru pro Neovis. Budeme také muset určit, jaké štítky uzlů chceme vizualizovat a jak by se měly stylovat (které vlastnosti určují velikost a barvu uzlu).

Neovis.js funguje tak, že vyplní

prvek s vizualizací, takže v konfiguračním objektu budeme muset zadat ID tohoto prvku a také způsob připojení k naší instanci Neo4j a vlastnosti, které se mají použít pro určení velikosti uzlu, barvy a tloušťka vztahu. Tady je kód pro generování grafické vizualizace naší sítě retweetů z naší instance Neo4j Sandbox pomocí vlastnosti pagerank k určení velikosti uzlu, community pro barvu a count vlastnost vztahu pro tloušťku vztahu:

A naše vizualizace vypadá takto:

Existuje několik dalších možností konfigurace, o kterých si můžete přečíst v projektové dokumentaci .

Zdroje

Stažení zdarma: OReilly „Grafové algoritmy na Apache Spark a Neo4j“

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *