NetworkX

NetworkX는 복잡한 그래프 네트워크의 구조, 역학, 기능을 생성, 조작 및 학습하는 데 사용되는 파이썬 프로그래밍 언어 패키지입니다.

 

NetworkX란?

NetworkX는 복잡한 그래프 네트워크 분석을 위한 파이썬 패키지입니다. NetworkX 기능을 이해하려면 먼저 그래프를 이해해야 합니다. 그래프는 물리, 생물, 사회 및 정보 시스템에 존재하는 다양한 관계 및 프로세스 유형을 모델링하는 데 사용되는 수학적 구조입니다. 그래프는 간선(엔터티 간의 관계를 나타냄)으로 연결된 노드 또는 정점(시스템 내 엔터티를 나타냄)으로 구성됩니다. 그래프 작업은 간선과 노드를 탐색하여 복잡한 관계를 발견하고 이해하는 작업 및/또는 네트워크 내 연결 데이터 간의 경로를 최적화하는 작업입니다.

Graph to optimize paths between linked data in a network.

그래프 네트워크 분석은 많은 용도로 사용됩니다. 소셜 네트워크 내 관계를 분석하고, 사이버 위협을 감지하고, 공유된 선호도 정보를 기반으로 제품을 구매할 가능성이 높은 사람을 식별하는 작업 등이 그 예입니다.

실제 환경에서 노드는 사람, 그룹, 장소 또는 고객, 제품, 회원, 도시, 상점, 공항, 항구, 은행 계좌, 장치, 휴대폰, 분자, 웹 페이지 등의 사물이 될 수 있습니다.

간선 또는 노드 간의 관계의 예로는 친구 관계, 네트워크 연결, 하이퍼링크, 도로, 노선, 송금, 이메일, '좋아요', 결제, 거래, 전화 통화, 소셜 네트워킹 메시지 등이 있습니다. 간선에는 한 노드에서 다른 노드로의 관계를 나타내는 단방향 화살표가 있을 수 있습니다(예: Janet이 Jeanette’s의 소셜 미디어 게시물에 '좋아요'를 누름). 그러나 간선은 비방향적일 수도 있습니다(Bob이 Alice의 Facebook 친구이면 Alice도 Bob의 친구임).

해시 가능한, 즉 값이 절대 변하지 않는 모든 개체가 NetworkX 노드일 수 있습니다. 텍스트 문자열, 이미지, XML 개체, 전체 그래프, 사용자 지정 노드 등이 이에 해당합니다. 기본 패키지에는 다양한 형식의 그래프를 생성하고 읽고 작성하는 데 필요한 많은 함수가 포함되어 있습니다.

NetworkX는 1,000만 개 이상의 노드와 1억 개 이상의 간선이 있는 초대형 그래프에서 작동할 수 있는 역량을 갖추고 있습니다. BSD 라이선스로 배포되는 무료 소프트웨어인 코어 패키지에는 단순 그래프, 방향 그래프, 병렬 간선 및 셀프 루프가 있는 그래프 등을 표현하기 위한 데이터 구조가 포함되어 있습니다. 또한 NetworkX에는 코어 패키지를 유지 관리하고 타사 에코시스템에 기여하는 대규모 개발자 커뮤니티가 있습니다.

NetworkX의 주요 용도는 다음과 같습니다.

  • 사회, 생물, 인프라 네트워크의 구조 및 역학 연구
  • 그래프를 위한 표준화된 프로그래밍 환경
  • 다학제간 협업 프로젝트의 신속한 개발
  • C, C++, FORTRAN으로 작성된 알고리즘 및 코드와의 통합
  • 대규모 비표준 데이터 세트 작업

NetworkX는 비교적 설치와 사용이 쉬운 것으로 알려져 있습니다. 특히, 파이썬 개발자에게 그러합니다.

그래프 분석을 하는 이유는?

그래프 분석은 그래프에서 객체 간의 관계 강도와 방향을 결정하는 데 사용할 수 있습니다. 정보 에코시스템에서 네트워크의 역할이 증가함에 따라 관계를 분석하는 도구에 대한 수요는 무한대에 가까운 잠재력을 갖게 되었습니다. 구매 결정부터 전국구 선거까지 모든 것에 소셜 네트워크가 미치는 영향은 그래프 분석에 대한 관심을 촉진했습니다. 그래프 분석은 특히 네트워크의 복잡성 또는 노드 간 경로 수 때문에 명확하지 않은 관계를 발견하는 데 유용합니다.

그래프 분석은 다음 작업을 수행하는 데 유용합니다.

  • 돈세탁과 같은 금융 범죄 탐지
  • 사기 거래 및 활동 식별
  • 소셜 네트워크 커뮤니티에서 영향력 분석 수행
  • 고객 평가 또는 구매를 통한 추천 분석
  • 전력망, 상수도망, 교통망의 취약점 파악
  • 항공, 소매, 제조 산업에서의 노선 최적화
  • 코로나19가 유행하던 때 확진자와 특정 기간 중 접촉한 사람 식별. 말 그대로 생사를 가르는 결과로 이어지는 적용 사례였습니다.
  • 마케터가 입소문을 통해 제품 인지도를 올릴 가능성이 높은 사람을 타겟팅할 수 있도록 영향력이 어떻게 행사되고 있는지를 파악
  • 유사한 관심사와 공유 인맥을 매핑하여 사용자 간의 관계를 토대로(서로 모르는 경우에도 가능) 소셜 마케팅 콘텐츠 제공
  • 정치 캠페인 담당자 및 정치 과학자가 정보 바이럴리티(information virality)와 가짜 뉴스의 확산에 기여하는 요인을 더 잘 파악할 수 있도록 지원
  • 정보 수요가 비슷한 사람의 행동에서 도출한 선호도를 토대로 검색 엔진이 결과 제공

Graph analytics can be used to determine the strength and direction of relationships between objects in a graph. Graph analytics can be used to determine the strength and direction of relationships between objects in a graph.

NetworkX를 사용하는 이유는?

NetworkX는 데이터 사이언티스트 및 기타 그래프 수학 사용자가 그래프 네트워크 모델을 구축, 설계, 분석, 공유하고 이와 관련하여 협업하는 데 사용할 수 있는 표준화된 방법을 제공합니다. 확장성 및 이식성으로 유명한 무료 소프트웨어인 NetworkX는 열혈 파이썬 사용자가 널리 사용하고 있습니다. 또한 역동적인 파이썬 패키지 에코시스템에 기여하고 있는 데이터 사이언티스트들이 가장 널리 사용하는 그래프 프레임워크이기도 합니다. 파이썬 패키지들은 수치 선형 대수, 그리기와 같은 기능을 추가하며 NetworkX를 확장해 가고 있습니다.


Facebook 사용자 그래프

데이터 사이언티스트에게 NetworkX가 중요한 이유

데이터 사이언스 팀

머신 러닝과 딥 러닝과 같은 빅데이터 사이언스 프로젝트에는 종종 많은 팀원 간의 협업이 필요합니다. 표준화된 도구 및 형식의 사용 가능성은 정보 공유를 크게 간소화합니다. 가장 널리 사용되는 데이터 사이언스 언어 중 하나인 파이썬에 뿌리를 두고 있는 NetworkX는 파이썬 라이브러리에 그래프 분석 확장 기능을 제공합니다. 이 확장 기능은 파이썬 사용자라면 최소한의 교육으로 활용할 수 있고 여러 회사와 대륙에 걸쳐 있는 팀에도 배포할 수 있습니다.

GPU를 이용한 그래프 분석 가속화

GPU는 고도의 병렬성과 메모리 액세스 대역폭 측면의 이점으로 인해, 특히 데이터 집약적 분석 및 그래프 분석을 가속화하는 데 이상적인 도구입니다. GPU의 대규모 병렬 아키텍처는 여러 작업을 동시에 처리하도록 설계된 수천 개의 작은 코어로 구성되어 '모든 X에 대해 Y를 수행'하는 연산 작업에 매우 적합합니다. 이러한 유형의 연산 작업은 대규모 그래프 내의 정점 또는 간선 세트에 적용될 수 있습니다.

The difference between a CPU and GPU.

RAPIDS cuGraph를 이용한 NetworkX 가속화

NVIDIA RAPIDS™ cuGraph는 RAPIDS 에코시스템과 NetworkX를 통합하는 가속 그래프 분석 라이브러리를 제공합니다. RAPIDS cuGraph의 비전은 사용자가 기술이나 프레임워크가 아닌 분석 자체에만 집중할 수 있도록 그래프 분석을 유비쿼터스화하는 것입니다.

최신 NVIDIA GPU의 컴퓨팅 성능으로 그래프 분석 속도가 훨씬 빨라졌습니다. 또한 GPU 내부 메모리 속도를 통해 cuGraph는 단일 데이터 구조에 국한되지 않고 분석의 필요에 가장 적합하도록 데이터 구조를 빠르게 전환할 수 있습니다.

RAPIDS의 PageRank와 같은 그래프 알고리즘과 NetworkX와 같은 함수는 GPU가 제공하는 대규모 병렬 처리를 효율적으로 사용하여 대규모 그래프 분석을 1,000배 이상 가속화합니다. 단일 NVIDIA A100 Tensor Core GPU에서는 최대 2억 개의 간선을 탐색할 수 있고, NVIDIA DGX™ A100 클러스터에서는 수십억 개의 간선으로 확장할 수 있습니다.

NVIDIA GPU 가속 엔드투엔드 데이터 사이언스

RAPIDS는 고속 ETL, 그래프 분석, 머신 러닝 및 딥 러닝을 수행할 수 있는 기능을 결합한 제품입니다. 데이터 사이언스 파이프라인을 전적으로 GPU에서 실행할 수 있게 해주는 이 오픈 소스 소프트웨어 라이브러리 및 API 모음은 며칠 걸리는 훈련 시간을 단 몇 분으로 단축할 수 있습니다. 이 제품군은 저수준 컴퓨팅 최적화를 위해 NVIDIA CUDA® 프리미티브에 의존하지만, 사용자 친화적인 파이썬 인터페이스를 통해 GPU 병렬성 및 고대역폭 메모리를 사용할 수 있도록 지원합니다.

NVIDIA RAPIDS, end-to-end GPU-accelerated data science.

RAPIDS cuGraph는 RAPIDS 데이터 사이언스 에코시스템에 원활하게 통합되므로 데이터 사이언티스트가 GPU 데이터프레임에 저장된 데이터를 사용하여 그래프 알고리즘을 쉽게 호출할 수 있습니다. RAPIDS GPU DataFrame을 사용하면 Pandas와 같은 인터페이스를 사용하여 데이터를 GPU에 로드한 다음, 절대 GPU를 떠나지 않고 이 데이터를 연결된 다양한 머신 러닝 및 그래프 분석 알고리즘에 사용할 수 있습니다. Apache Arrow와 같은 라이브러리를 통해 이러한 수준의 상호 운용성이 가능합니다. 이를 통해 데이터 준비부터 머신 러닝과 딥 러닝에 이르는 엔드투엔드 파이프라인을 가속화할 수 있습니다. RAPIDS와 DASK를 사용하면 cuGraph를 여러 GPU로 확장할 수 있어 수십억 개의 에지 그래프를 지원할 수 있습니다.