Wizualizacja wykresu z Neo4j przy użyciu Neovis.js

Wykorzystanie algorytmów grafowych do wizualizacji danych

(William Lyon) (16 kwietnia 2018 r.)

Aktualizacja: Książka OReilly „Graph Algorithms on Apache Spark and Neo4j Book jest teraz dostępna jako darmowe pobieranie ebooków z neo4j.com

W tym poście użyjemy instancji Neo4j Sandbox , aby rozpocząć od zbioru danych Twittera, uruchomić PageRank i wykrywanie społeczności na danych. Następnie pokaż, jak osadzić wizualizację wykresu w aplikacji internetowej za pomocą Neovis.js .

W tym poście wyjaśniamy, jak tworzyć wizualizacje danych wykresów, które wykorzystują wyniki algorytmów grafowych, takich jak PageRank i wykrywanie społeczności . Po uruchomieniu niektórych algorytmów wykresów za pomocą biblioteki neo4j-graph -gorithms użyjemy biblioteki wizualizacji wykresów JavaScript Neovis.js do tworzenia wizualizacji, które można osadzić w aplikacji internetowej, pobierając dane bezpośrednio z Neo4j.

Cele wizualizacji wykresów

Istnieją różne motywacje i narzędzia do tworzenia wizualizacji wykresów. Obejmuje to narzędzia do eksploracji wykresu – rodzaj interaktywnych wizualizacji, które możesz zobaczyć w Przeglądarka Neo4j . Lub wizualizacje dla przedstawiające wyniki niektórych analiz . Mogą być interaktywne (osadzone w aplikacji internetowej lub nawet samodzielnej aplikacji) lub statyczne, mające na celu przekazanie określonego znaczenia , które można wykorzystać w druku lub w poście na blogu.

Ten post skupi się na jednym narzędziu, które zajmuje się niektórymi konkretnymi celami wizualizacji wykresów. To narzędzie to Neovis.js i służy do tworzenia wizualizacji wykresów opartych na JavaScript, które są osadzane w aplikacji internetowej. Używa sterownika JavaScript Neo4j do łączenia się i pobierania danych z Neo4j oraz biblioteki JavaScript do wizualizacji o nazwie vis .js do renderowania wizualizacji wykresów. Neovis.js może również wykorzystać wyniki algorytmów grafowych, takich jak PageRank i wykrywanie społeczności, do stylizacji wizualizacji poprzez powiązanie wartości właściwości z komponentami wizualnymi.

Ten zrzut ekranu pokazuje jak używać biblioteki Neovis.js do tworzenia wizualizacji danych wykresów stylizowanych na wyniki algorytmów grafowych z danymi z Neo4j.

Wizualizacja wykresu + algorytmy wykresu

Istnieją trzy wspólne sposoby ulepszania wizualizacji wykresów za pomocą algorytmów grafowych. W szczególności obejmuje to stylizowanie komponentów wizualnych proporcjonalnie do wyników tych algorytmów:

  1. Rozmiar węzła powiązania z algorytmem centralności , takie jak stopień, PageRank lub centralność pomiędzy. To pozwala nam na pierwszy rzut oka zobaczyć najważniejsze węzły w sieci.
  2. Wizualne grupowanie społeczności lub klastrów na wykresie odbywa się za pomocą koloru, dzięki czemu możemy szybko zidentyfikować te odrębne grupy.
  3. Stylizacja grubości relacji proporcjonalna do grubości krawędzi , w danych sieci społecznościowych może to być liczba interakcji między dwoma znakami, w danych logistycznych i routingu może to być odległość między dwoma centrami dystrybucji i jest to przydatne przy algorytmach znajdowania ścieżki (np. jako A * lub Dijkstras).

Pierwsze kroki z zestawem danych

Jako naszego zbioru danych użyjemy piaskownicy rosyjskich trolli Twittera. Ten zbiór danych zawiera tweety ze znanych rosyjskich kont Troll, opublikowane przez NBC News. Możesz utworzyć własną instancję Neo4j Sandbox tutaj.

Model danych dla zestawu danych Trolle na Twitterze obejmuje tweety , Użytkownicy, Hashtagi, adresy URL udostępnione w tweetach oraz wzmiankach i retweetach.

W danych wykresów często wywnioskowane są niektóre z najbardziej interesujących relacji , a nie bezpośrednio modelowane w danych. Przykładem tego jest wykres retweetów użytkownik-użytkownik. Którzy użytkownicy retweetują innych użytkowników?Kto jest najważniejszym użytkownikiem na tym wykresie retweetów? Czy są grupy użytkowników, którzy często przesyłają sobie dalej dalej tweet?

Tutaj mamy opublikowanego tweeta przez użytkownika, którego inny użytkownik przesłał dalej. To sugeruje relację między użytkownikiem a użytkownikiem. Naszym pierwszym krokiem będzie znalezienie tych wywnioskowanych relacji retweetów i uruchomienie naszych algorytmów wykresów.

Aby znaleźć najważniejszych użytkowników i społeczności korzystających z tej sieci retweetów, najpierw znajdź wszystkich użytkowników Trolla i utwórz RETWEETS relację łączącą bezpośrednio użytkowników na wykresie. Przechowujemy właściwość count w relacji reprezentującej, ile razy użytkownik przesłał dalej tweety:

Po utworzeniu tych RETWEETS relacji możemy uruchomić PageRank na tej części wykresu (możemy również użyć zapytania szyfrującego aby uruchomić PageRank na prognozowanym wykresie bez jawnego utworzenia relacji):

Ponieważ podajemy write: true powyżej nie tylko uruchomi PageRank, ale doda właściwość pagerank do węzłów zawierających ich wynik PageRank. Następnie możemy zapytać, używając tej wartości właściwości, aby znaleźć dziesięć najlepszych kont Troll według wyniku PageRank:

I wreszcie możemy uruchomić algorytm wykrywania społeczności w sieci retweetowej, w tym przypadku propagacja etykiet:

Spowoduje to dodanie właściwości community do węzłów, wskazującej, która społeczność algorytm ustalił, do którego węzła należy.

Uruchomiliśmy więc dwa algorytmy wykresów (PageRank i propagacja etykiet), ale jak nadać sens wynikom? Wizualizacja może pomóc nam znaleźć wgląd w dane.

Tworzenie wizualizacji wykresu za pomocą Neovis.js

Aby stworzyć wizualizację za pomocą Neovis.js, musimy najpierw połączyć się z Neo4j. Na karcie szczegółów naszej instancji Sandbox możemy znaleźć szczegóły połączenia dla naszej instancji Neo4j:

Parametry połączenia z serwerem, nazwa użytkownika i hasło zostaną zawarte w obiekcie konfiguracyjnym, który przekażemy do konstruktora Neovis. Będziemy również musieli określić, które etykiety węzłów chcemy wizualizować i jak powinny być stylizowane (które właściwości określają rozmiar i kolor węzła).

Neovis.js działa, wypełniając

z wizualizacją, więc będziemy musieli określić identyfikator tego elementu w obiekcie config, a także jak połączyć się z naszą instancją Neo4j i jakich właściwości użyć do określenia rozmiaru węzła, koloru i grubość relacji. Oto kod do generowania graficznej wizualizacji naszej sieci retweetowej z naszej instancji Neo4j Sandbox przy użyciu właściwości pagerank do określenia rozmiaru węzła, community dla koloru i właściwość relacji count dla grubości relacji:

A tak wygląda nasza wizualizacja:

Jest jeszcze kilka opcji konfiguracji, o których możesz przeczytać w dokumentacji projektu.

Zasoby

Bezpłatne pobieranie: OReilly „Graph Algorithms on Apache Spark and Neo4j”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *