반응형
  • Graph Data Science

오늘 ICIJ는 공개적으로 공개된 데이터, 바로 Paradise Papers로 알려진 해양 산업에 대한 최근 1년간의 조사 결과에요.

ICIJ가 조사를 발표한 이후 지난 몇 주 동안, 우리는 Nike, Apple과 같은 기업의 활동, 영국 여왕의 재산, Wilbur Ross와 같은 정치인, 그리고 Facebook 및 Twitter와 같은 기업에 대한 러시아 투자의 연결을 다루는 많은 보고서가 발표되는 것을 봤어요.

1,300만 개 이상의 유출된 문서, 이메일 및 데이터베이스 기록이 텍스트 분석, 전체 텍스트 및 측면 검색, 그리고 가장 흥미로운 그래프 시각화 및 그래프 기반 검색을 사용하여 분석되었답니다.

국제탐사보도언론인협회(ICIJ)는 를 사용해서 조사를 진행했다고 해요. ICIJ가 웹사이트에서 밝힌 바에 따르면:

Graph Database는 사람과 엔터티 간의 관계를 탐색하는 데 가장 좋은 방법이에요. SQL 데이터베이스나 다른 유형의 NoSQL 데이터베이스보다 훨씬 직관적이죠. 그래프를 사용하면 네트워크를 매우 직관적인 방식으로 이해하고 연결을 쉽게 찾을 수 있어요.

ICIJ는 Paradise Papers 데이터 세트를 검색할 수 있는 Neo4j 기반의 강력한 검색 엔진을 구축했고, 이걸 웹 애플리케이션으로 공개했어요. 데이터를 Neo4j 데이터베이스로 공개하면 훨씬 더 강력한 데이터 분석이 가능해지죠. Neo4j는 오픈 소스 데이터베이스라서 누구나 데이터를 이해하기 위해 동일한 강력한 도구를 사용할 수 있다는 의미랍니다.

이전 게시물에서는 그래프 분석과 Cypher (그래프용 쿼리 언어)를 사용해서 Paradise Papers 데이터에서 연결점을 찾는 방법을 보여드렸어요. 이번 게시물에서는 데이터 시각화를 통해 통찰력을 얻는 방법과 그래프 분석을 사용해서 역외 금융 산업에 대해 자세히 알아볼 수 있는 몇 가지 기술을 Neo4j에서 데이터를 쿼리하고 분석하는 방법을 중심으로 살펴볼게요.

그래프 쿼리

데이터 모델 및 예제 쿼리에 대한 자세한 내용은 이전 게시물 를 참조해주세요.

데이터 모델

Paradise Papers 데이터 세트는 Property Graph 데이터 모델을 사용해서 해외 법인, 해당 법인의 수혜자 또는 주주가 될 수 있는 임원, 법인 설립에 참여한 중개자에 대한 데이터를 나타내고 있어요.

그래프에서 Node는 엔터티를 나타내고, Relationship은 연결을 나타내요. 그리고 Property라는 키-값 쌍을 저장하는데, 이름, 주소, 데이터 출처 속성 등이 Node와 Relationship 모두에 적용된답니다.

그래프 시각화는 데이터를 탐색하는 강력한 방법이에요. 예를 들어, 그래프를 시각적으로 검사해서 고도로 연결된 Node 클러스터를 식별할 수 있죠.

탐색적 쿼리

표 형식 데이터를 쿼리할 때 집계를 수행할 수도 있어요. Paradise Papers 데이터세트의 전체 크기와 모양을 한번 살펴볼까요?

Paradise Papers 데이터세트에는 몇 개의 Node가 있을까요?

MATCH (n) RETURN labels(n) AS labels, COUNT(*) AS count ORDER BY count DESC
╒════════════════╤═══════╕
│"labels"        │"count"│
╞════════════════╪═══════╡
│["Officer"]     │77012  │
├────────────────┼───────┤
│["Address"]     │59228  │
├────────────────┼───────┤
│["Entity"]      │24957  │
├────────────────┼───────┤
│["Intermediary"]│2031   │
├────────────────┼───────┤
│["Other"]       │186    │
└────────────────┴───────┘

데이터는 63,000개 주소에 걸쳐 거의 25,000개의 해외 법인과 연결되어 있는 84,000명 이상의 임원(해외 회사에서 역할을 수행하는 사람 또는 회사)에 대한 정보로 구성되어 있다는 것을 알 수 있어요. 주소는 나중에 위치 데이터를 사용하므로 중요해지죠.

데이터세트에 있는 다양한 유형의 Relationship 수를 셀 수도 있어요.

MATCH ()-[r]->() RETURN type(r), COUNT(*) ORDER BY COUNT(*) DESC
╒════════════════════╤══════════╕
│"type(r)"           │"COUNT(*)"│
╞════════════════════╪══════════╡
│"OFFICER_OF"        │221112    │
├────────────────────┼──────────┤
│"REGISTERED_ADDRESS"│128311    │
├────────────────────┼──────────┤
│"CONNECTED_TO"      │10552     │
├────────────────────┼──────────┤
│"INTERMEDIARY_OF"   │4063      │
├────────────────────┼──────────┤
│"SAME_NAME_AS"      │416       │
├────────────────────┼──────────┤
│"SAME_ID_AS"        │2         │
└────────────────────┴──────────┘

그리고 그래프의 서로 다른 부분이 평균적으로 어떻게 연결되어 있는지에 대한 아이디어를 제공하기 위해 차수 분포를 계산합니다.

MATCH (n) WITH labels(n) AS type, SIZE( (n)--() ) AS degree
RETURN type, MAX(degree) AS max, ROUND(AVG(degree)) AS avg, ROUND(STDEV(degree)) AS stdev
╒════════════════╤═════╤═════╤═══════╕
│"type"          │"max"│"avg"│"stdev"│
╞════════════════╪═════╪═════╪═══════╡
│["Other"]       │2891 │44   │236    │
├────────────────┼─────┼─────┼───────┤
│["Address"]     │9268 │2    │59     │
├────────────────┼─────┼─────┼───────┤
│["Intermediary"]│115  │5    │8      │
├────────────────┼─────┼─────┼───────┤
│["Officer"]     │2726 │4    │20     │
├────────────────┼─────┼─────┼───────┤
│["Entity"]      │312  │11   │13     │
└────────────────┴─────┴─────┴───────┘

영국 여왕에서 렉스 틸러슨까지의 최단 경로

Neo4j와 같은 Graph Database의 강력한 기능 중 하나는 임의 길이의 경로를 쿼리하는 기능이에요. 이를 통해 연결이 무엇인지, 심지어 경로의 길이도 모를 때 `Node` 간의 연결을 찾을 수 있죠.

저는 Paradise Papers 데이터세트에 등장하는 두 공인 사이에 간접적인 연관성이 있는지 궁금했어요. 예멘에서 사업을 운영하는 버뮤다 소재 석유 및 가스 회사와 관련이 있었던 미 국무장관 렉스 틸러슨(Rex Tillerson)과 버뮤다 소재 회사의 투자자인 것으로 보고된 영국 여왕의 재산이죠. `Cypher`를 사용하면 이러한 경로를 쉽게 쿼리할 수 있어요.

MATCH p=shortestPath((rex:Officer)-[*]-(queen:Officer))
WHERE rex.name = "Tillerson - Rex" AND queen.name = "The Duchy of Lancaster"
RETURN p

이것은 영국 여왕과 렉스 틸러슨을 연결하는 단일 최단 경로를 보여줍니다. 경로는 여러 해외 법인과 이들 법인과 연결된 임원을 통과하네요. 모든 최단 경로를 포함하도록 `Query`를 약간 조정하면 경로에 있는 여러 경찰관이 많은 법인과 연결을 공유하는 것을 볼 수 있어요.

MATCH p=allShortestPaths((rex:Officer)-[*]-(queen:Officer))
WHERE rex.name = "Tillerson - Rex" AND queen.name = "The Duchy of Lancaster"
RETURN p

Google을 빠르게 검색해 보면 이들 개인이 기업 서비스 관리자라는 사실이 드러납니다. 즉, 해외 기업의 관리를 처리하기 위해 급여를 받고 해외 기업의 이사 역할을 하는 개인인거죠.

그래프 알고리즘

`Cypher`를 사용하여 데이터를 쿼리하는 것은 그래프를 탐색하고 다음과 같은 질문에 답하는 데 유용해요. “윌버 로스가 연결된 해외 법인은 모두 어디에 있나요?”. 하지만 네트워크에서 가장 영향력 있는 `Node`가 누구인지 알고 싶다면 어떻게 해야 할까요? 아니면 전이적 관련성이 가장 높은 그래프 요소인가요?

`Cypher`를 사용하여 전체 그래프 데이터세트에 대해 PageRank 중심성 알고리즘을 쉽게 실행할 수 있어요.

CALL algo.pageRank(null,null,{write:true,writeProperty:'pagerank_g'})

그런 다음EntityPageRank 점수가 가장 높은 `Node`:

MATCH (e:Entity) WHERE exists(e.pagerank_g)
RETURN e.name AS entity, e.jurisdiction_description AS jurisdiction, 
       e.pagerank_g AS pagerank ORDER BY pagerank DESC LIMIT 15

╒═════════════════════════════════════════════════╤════════════════╤══════════════════╕
│"entity"                                         │"jurisdiction"  │"pagerank"        │
╞═════════════════════════════════════════════════╪════════════════╪══════════════════╡
│"WORLDCARE LIMITED"                              │"Bermuda"       │18.110508499999998│
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Ferrous Resources Limited"                      │"Isle of Man"   │17.326935999999996│
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"American Contractors Insurance Group Ltd."      │"Bermuda"       │15.6201275        │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Gulf Keystone Petroleum Limited"                │"Bermuda"       │12.81925          │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Warburg Pincus (Bermuda) Private Equity X, L.P."│"Bermuda"       │12.312412         │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Madagascar Oil Limited"                         │"Bermuda"       │11.611646499999999│
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Coller International Partners IV-D, L.P."       │"Cayman Islands"│11.394854         │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Milestone Insurance Co., Ltd."                  │"Bermuda"       │11.224089         │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"CL Acquisition Holdings Limited"                │"Cayman Islands"│11.0752455        │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Alpha and Omega Semiconductor Limited"          │"Bermuda"       │10.965910000000001│
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤
│"Coller International Partners V-A, L.P."        │"Cayman Islands"│10.8205005        │
├─────────────────────────────────────────────────┼────────────────┼──────────────────┤

지역 분석

많은 임원 및 법인의 등록된 주소는 Paradise Papers 데이터에서 확인할 수 있어요. Nominatim API 또는 Google의 지오코딩 API와 같은 서비스를 사용하면 이러한 주소 문자열을 위도 및 경도 지점으로 변환하는 쿼리를 수행할 수 있죠.

이러한 주소를 지오코딩한 후에는 지리적 분석을 사용하여 데이터에 대한 더 많은 통찰력을 찾을 수 있어요. Neo4j에는 Cypher를 사용하여 Neo4j에 쿼리하는 웹 애플리케이션을 쉽게 구축할 수 있는 JavaScript 드라이버가 있답니다.

우리가 사용할 수 있는 시각화 도구 중 하나는 관찰 내용이 색상으로 표시되는 히트맵이에요. 색상이 강할수록 해당 영역에 주소가 더 많다는 의미죠. Paradise Papers 주소의 히트맵을 조사해 보면 북미 해안 바로 옆 대서양에 주소가 집중되어 있음을 알 수 있어요. 이러한 주소 중 다수는 알려진 해외 관할권인 버뮤다에 있고요.

Paradise Papers의 지오코딩 주소 히트맵이에요. 라이브로 해보세요.

이 히트맵을 지오코딩된 주소의 히트맵과 비교하면 파나마 페이퍼스 데이터 세트(ICIJ가 조사한 이전 유출)를 보면 주소의 지리적 분포가 상당히 다르다는 것을 알 수 있어요.

대서양에 큰 집중이 있는 대신 아시아에 더 높은 집중이 있고, 그 정도는 덜하지만 유럽에도 있죠. 파나마 페이퍼스 유출 주소는 싱가포르와 쿠알라룸푸르에 다수 존재한답니다.

파나마 페이퍼의 지오코딩 주소 히트맵

지오코딩된 주소를 사용해서 Paradise Papers를 지도로 대화형으로 탐색할 수도 있어요. 관심 있는 주소 표시를 클릭하면 Cypher `Query`가 실행돼서 해당 주소를 찾고, OfficerEntity `Node`가 이 주소에 연결되어 있다는 것을 알 수 있죠.

라스베가스의 화려한 교외 지역을 탐험하면서 Paradise Papers에 나오는 많은 주소를 볼 수 있는데요. 사실, 카지노 거물인 Sheldon G. Adelson을 쉽게 발견할 수 있어요. 그는 버뮤다 회사와 관련이 있는 것으로 밝혀졌는데, 카지노의 개인 제트기를 등록해서 수천만 달러를 면세 관할권으로 이체하는 데 사용했다고 해요.

등록된 주소를 표시하는 Paradise Papers의 지리 코드 주소에 대한 주석이 달린 지도. Officer `Node`와 연결된 법인 및 관할권. 직접 확인해보세요!

법인 관할권

역외 금융 산업 구조가 시사하는 바를 살펴볼 때, 탐사보도 기자들이 답하려는 질문 중 하나는 "조력자는 누구인가?"인데요. 조력자를 찾는 한 가지 방법은 해양 산업을 가능하게 하는 관할권을 살펴보는 것이죠.

특정 국가의 시민을 위해 일부 관할권이 선택되는 역사적, 법적, 경제적 이유에 대해 생각해 볼 수 있지만, 이 세계의 대부분은 매우 비밀스럽기 때문에 Paradise Papers와 같은 데이터는 역외 금융 산업에 대한 통찰력을 얻는 데 매우 중요해요. 다음으로, 데이터에 포함된 관할권 정보 중 일부를 조사해볼게요.

MATCH (e:Entity)
WITH e.jurisdiction_description AS juris, COUNT(*) AS count
WHERE count > 20
RETURN *
ORDER BY count ASC

버뮤다와 케이맨 제도의 수가 다른 관할권보다 훨씬 많다는 것을 알 수 있죠. 이는 버뮤다(및 기타 여러 국가)에 사무실이 있는 법률 회사인 데이터의 주요 소스에 대해 우리가 알고 있는 내용을 고려하면 당연한 결과일 거예요.

분석을 확장해서 "특정 국가의 시민들이 선호하는 특정 관할권이 있을까?"라는 질문에 답할 수 있어요. 또는 "수혜자 또는 담당자의 거주 국가별로 가장 인기 있는 역외 관할권은 무엇일까?"와 같은 질문도요. 다음의 이분 그래프를 작성해서 Officer 국가 및 법인 관할권에 대한 답변을 살펴볼 수 있어요. 이 데이터를 이분 그래프를 통해 흐름의 상대적 분포를 보여주는 현 다이어그램으로 시각화할 수 있죠.

MATCH (a:Address)--(o:Officer)--(e:Entity)
WITH a.countries AS officer_country, e.jurisdiction_description AS juris,
COUNT(*) AS num
RETURN * ORDER BY num DESC

이 도표는 미국이 단연코 가장 인기 있는 국가임을 보여주는데요. Officer 등록된 주소로 제공되죠. 그리고 미국에 주소를 둔 경찰관 중에서 버뮤다와 케이먼 제도가 가장 인기 있는 역외 관할권이에요. 이전에 이 두 관할권이 데이터 세트에서 가장 인기가 있다는 것을 보았듯이 놀라운 일은 아니죠.

무엇을 찾을 수 있나요?

이것은 ICIJ가 공개한 현재 공개된 Paradise Papers 데이터 세트의 개요였어요. ICIJ는 역외 금융 산업의 복잡한 웹을 이해하는 데 사용하는 것과 동일한 오픈 소스 소프트웨어를 모든 사람이 사용할 수 있도록 Neo4j 데이터베이스로 패키지된 유출 데이터를 공개했답니다.

Paradise Papers 데이터 세트는 Neo4j 샌드박스에서 찾을 수 있고, 곧 ICIJ 웹사이트에서 Neo4j 데이터베이스로 다운로드할 수 있을 거예요. 데이터를 탐색하고 역외 금융 산업에 대해 어떤 통찰력을 찾을 수 있는지 확인해보세요!

데이터를 탐색하면서 다음 Cypher 및 Graph Database 학습을 위한 훌륭한 리소스들을 확인해보세요. 그리고 ICIJ가 하는 일이 마음에 든다면, ICIJ가 독립적인 미디어 조직이라는 점을 기억하고 ICIJ에 여러분의 아낌없는 기부로 응원해주세요.

이 게시물에서 모든 시각화를 생성하기 위한 코드는 GitHub에서 찾을 수 있어요.

Graph 기술로 무엇을 할 수 있는지 더 자세히 알고 싶으신가요? 아래를 클릭해서 O'Reilly 도서의 무료 사본을 받고 연결된 데이터의 힘을 활용하는 방법을 알아보세요.

편집자 주: ICIJ는 다음과 같은 메모와 함께 이 데이터를 게시했습니다: "해외 회사 및 신탁에는 합법적인 용도가 있습니다. 우리는 ICIJ 해외 유출 데이터베이스에 포함된 어떤 사람, 회사 또는 기타 단체가 법을 위반했거나 달리 부적절하게 행동했다고 제안하거나 암시할 의도가 없습니다. 많은 사람과 단체가 동일하거나 유사한 이름을 가지고 있습니다. 우리는 주소 또는 기타 식별 가능한 정보를 기반으로 데이터베이스에 있는 개인이나 단체의 신원을 확인할 것을 제안합니다."

  • Graph Algorithms
  • icij
  • JavaScript
  • PageRank

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

반응형

+ Recent posts