Neovis.js를 사용한 Neo4j 그래프 시각화

데이터 시각화를위한 그래프 알고리즘 활용

(William Lyon) (2018 년 4 월 16 일)

업데이트 : OReilly 책“Apache Spark 및 Neo4j Book의 그래프 알고리즘은 이제 neo4j.com에서 무료 eBook 다운로드

이 게시물에서는 Neo4j Sandbox 인스턴스를 사용하여 Twitter 데이터 세트로 시작하고, PageRank를 실행하고, 데이터에 대한 커뮤니티 감지를 실행합니다. 그런 다음 Neovis.js 를 사용하여 웹 앱에 그래프 시각화를 삽입하는 방법을 보여줍니다.

이 게시물에서는 PageRank 커뮤니티 감지 . neo4j-graph-algorithms 라이브러리를 사용하여 일부 그래프 알고리즘을 실행 한 후 JavaScript 그래프 시각화 라이브러리 를 사용합니다. Neovis.js 를 사용하여 웹 앱에 삽입 할 수있는 시각화를 만들고 Neo4j에서 직접 데이터를 가져옵니다.

그래프 시각화의 목표

그래프 시각화를 만드는 데는 다양한 동기와 도구가 있습니다. 여기에는 그래프 탐색 도구 ( Neo4j 브라우저 . 또는 일부 분석 결과를 보여주는 시각화 . 대화 형 (웹 앱 또는 독립형 애플리케이션에 포함)이거나 정적 일 수 있으며 특정 의미를 전달하기 위해 는 인쇄 또는 블로그 게시물에 사용될 수 있습니다.

이 게시물은 그래프 시각화의 특정 목표를 해결하는 하나의 도구에 중점을 둡니다. 이 도구는 Neovis.js 이며 웹 앱에 포함 된 JavaScript 기반 그래프 시각화를 만드는 데 사용됩니다. JavaScript Neo4j 드라이버 를 사용하여 Neo4j 및 vis라는 시각화를위한 JavaScript 라이브러리에 연결하고 데이터를 가져옵니다. .js 는 그래프 시각화를 렌더링합니다. Neovis.js는 속성 값을 시각적 구성 요소에 바인딩하여 시각화 스타일을 지정하기 위해 PageRank 및 커뮤니티 감지와 같은 그래프 알고리즘의 결과를 활용할 수도 있습니다.

이 스크린 캐스트는 다음을 보여줍니다. Neovis.js 라이브러리를 사용하여 Neo4j의 데이터로 그래프 알고리즘의 결과에 맞게 스타일이 지정된 그래프 데이터 시각화를 만드는 방법.

그래프 시각화 + 그래프 알고리즘

세 가지 공통점이 있습니다. 그래프 알고리즘으로 그래프 시각화를 향상시킬 수있는 방법. 특히 여기에는 다음 알고리즘의 결과에 비례하여 시각적 구성 요소를 스타일링하는 작업이 포함됩니다.

  1. 노드 크기를 중심 알고리즘 (예 : degree, PageRank 또는 betweenness centrality) 이를 통해 네트워크에서 가장 중요한 노드를 한 눈에 볼 수 있습니다.
  2. 시각적으로 커뮤니티 또는 클러스터를 그룹화 는 색상을 사용하여 이루어 지므로 이러한 구별되는 그룹을 빠르게 식별 할 수 있습니다.
  3. 에지 가중치에 비례하는 관계 두께 스타일 지정 , 소셜 네트워크 데이터에서는 두 문자 간의 상호 작용 수일 수 있으며, 물류 및 라우팅 데이터에서는 두 유통 센터 간의 거리 일 수 있으며 경로 찾기 알고리즘 (예 : A * 또는 Dijkstra s).

데이터 세트 시작하기

러시아 Twitter Trolls 샌드 박스를 데이터 세트로 사용할 것입니다. 이 데이터 세트에는 NBC 뉴스에서 공개 한대로 알려진 러시아 트롤 계정의 트윗이 포함되어 있습니다. 고유 한 Neo4j 샌드 박스 인스턴스를 만들 수 있습니다. 여기

Twitter Trolls 데이터 세트의 데이터 모델에는 트윗이 포함됩니다. , 사용자, 해시 태그, 트윗과 멘션 및 리트 윗에서 공유 된 URL.

그래프 데이터에서 가장 흥미로운 관계 중 일부는 종종 추론됩니다 , 데이터에서 직접 모델링되지 않습니다. 사용자-사용자 리트 윗 그래프가 이에 대한 예입니다. 어떤 사용자가 다른 사용자를 리트 윗하고 있습니까?이 리트 윗 그래프에서 가장 중요한 사용자는 누구입니까? 서로 자주 리트 윗하는 사용자 그룹이 있나요?

여기에 게시 된 트윗이 있습니다. 사용자가 다른 사용자가 리트 윗했습니다. 이것은 사용자-사용자 리트 윗 관계를 의미합니다. 첫 번째 단계는 추론 된 리트 윗 관계를 찾고 그래프 알고리즘을 실행하는 것입니다.

이 리트 윗 네트워크를 사용하는 가장 중요한 사용자와 커뮤니티를 찾으려면 먼저 모든 Troll 사용자를 찾고 그래프에서 사용자를 직접 연결하는 RETWEETS 관계를 만듭니다. 사용자가 다른 사람을 리트 윗 한 횟수를 나타내는 관계에 count 속성을 ​​저장합니다.

이러한 RETWEETS 관계를 생성했으면 그래프의이 부분에 대해 PageRank를 실행할 수 있습니다 (Cypher 쿼리를 사용할 수도 있음). 관계를 명시 적으로 생성하지 않고 투영 된 그래프에서 PageRank를 실행하려면) :

write: true는 PageRank를 실행할뿐만 아니라 PageRank 점수가 포함 된 노드에 pagerank 속성을 ​​추가합니다. 그런 다음 해당 속성 값을 사용하여 쿼리하여 PageRank 점수별로 상위 10 개의 Troll 계정을 찾을 수 있습니다.

마지막으로 리트 윗 네트워크에서 커뮤니티 감지 알고리즘을 실행할 수 있습니다.이 경우 라벨 전파 :

그러면 노드에 community 속성이 추가되어 어떤 커뮤니티가 알고리즘이 노드가 속한 것을 결정했습니다.

그래서 우리는 이제 두 개의 그래프 알고리즘 (PageRank 및 레이블 전파)을 실행했지만 결과를 어떻게 이해합니까? 시각화는 데이터에서 통찰력을 찾는 데 도움이됩니다.

Neovis.js로 그래프 시각화 만들기

Neovis.js로 시각화를 생성하려면 먼저 Neo4j에 연결해야합니다. Sandbox 인스턴스의 세부 정보 탭에서 Neo4j 인스턴스에 대한 연결 세부 정보를 찾을 수 있습니다.

서버 연결 문자열, 사용자 이름 및 암호는 Neovis의 생성자에 전달할 구성 개체에 포함됩니다. 또한 시각화 할 노드 레이블과 스타일 지정 방법 (노드 크기 및 색상을 결정하는 속성)을 지정해야합니다.

Neovis.js는 요소를 시각화 할 수 있으므로 구성 개체에서 해당 요소의 ID를 지정하고 Neo4j 인스턴스에 연결하는 방법과 노드 크기, 색상을 결정하는 데 사용할 속성을 지정해야합니다. , 관계 두께. 다음은 Neo4j Sandbox 인스턴스에서 리트 윗 네트워크의 그래프 시각화를 생성하는 코드입니다. pagerank 속성을 ​​사용하여 노드 크기를 결정합니다. community 색상 및 관계 두께에 대한 count 관계 속성 :

다음은 시각화의 모습입니다.

프로젝트 문서에서 읽을 수있는 몇 가지 구성 옵션이 더 있습니다.

리소스

무료 다운로드 : OReilly “Apache Spark 및 Neo4j의 그래프 알고리즘”

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다