보편적 데이터 표현
행렬, 텐서, 순서열, 시계열 등 서로 다른 형식의 데이터를 노드와 관계로 변환해 하나의 계산 언어로 다룬다.
데이터가 낱개의 돌이라면 그래프는 그 돌들이 놓인 산세다. 제9장은 개별 값만 바라보던 머신러닝을 관계의 풍경으로 이끌며, 노드·링크·커뮤니티·그래프 전체를 어떻게 예측 가능한 표현으로 바꾸는지 차근히 보여준다.
지식그래프는 저장 형식이 아니라 현실의 의존성을 보존하는 계산 무대다.
지식그래프를 세웠다고 지능형 조언 시스템이 완성되는 것은 아니다. 탐색과 질의는 이미 드러난 지식을 찾아주는 일이고, 조언은 아직 보이지 않는 가능성을 추론하는 일이다. 질병·단백질·유전자·화합물 사이에서 약물 재창출 후보를 고르거나, 환자의 증상과 유전체를 문헌·임상시험·표준 프로토콜에 연결하려면 그래프의 지식을 입력으로 받는 머신러닝이 필요하다.
행렬, 텐서, 순서열, 시계열 등 서로 다른 형식의 데이터를 노드와 관계로 변환해 하나의 계산 언어로 다룬다.
이상 노드 탐지와 치료 추천은 노드 분류로, 추천과 상호작용 발견은 링크 예측으로 환원할 수 있다.
현실의 데이터는 독립적이지 않다. 관계를 지우면 중요한 신호도 함께 지워진다. 그래프 ML은 이 의존성을 모델의 재료로 사용한다.
그래프 ML은 지도·비지도 구분만으로 설명하기 어렵다. 더 중요한 구분은 ‘한 그래프 안의 요소’를 다루는가, ‘그래프 자체’를 하나의 표본으로 다루는가이다.
소수의 라벨을 근거로 그래프 안의 미분류 노드에 클래스를 부여한다.
| 입력 | 하나의 그래프, 노드 특성, 일부 노드 라벨 |
|---|---|
| 출력 | 각 대상 노드의 클래스 또는 클래스 확률 |
| 학습 성격 | 일반적으로 반지도적 |
| 사례 | 봇 탐지, 단백질 기능 분류, 문서 주제 분류 |
그래프의 노드는 독립 표본이 아니다. 그 정체는 속성뿐 아니라 누구와 연결되어 있는가에 의해 달라진다.
소셜 네트워크에서 일부 사용자의 봇 여부만 알고 있다고 하자. 목표는 그래프 V 안의 미분류 노드 u에 라벨 yu를 예측하는 것이다. 학습에 사용할 수 있는 라벨은 전체 노드의 작은 부분집합 Vtrain에만 존재한다. 같은 틀은 단백질 상호작용망의 기능 분류와 인용 그래프의 문서 주제 분류에도 적용된다.
비슷한 관심·속성·행동을 가진 노드가 서로 연결되는 경향. 소셜 네트워크에서 이웃의 집단 소속은 강한 예측 신호가 된다.
직접 연결되지 않았더라도 비슷한 이웃 구조를 가진 노드는 유사한 기능을 가질 수 있다. 단백질 네트워크에서 특히 중요하다.
서로 다른 특성의 노드가 선택적으로 연결되는 경향. 관계가 반드시 ‘닮음’을 뜻하지 않는다는 사실을 보여준다.
전통적 지도학습은 데이터 포인트가 독립적이고 동일한 분포에서 왔다고 가정한다. 그래프에서는 이웃 노드가 서로 영향을 주므로 이 가정이 깨진다. 따라서 성공적인 노드 분류는 노드 속성과 관계적 의존성을 함께 모델링해야 한다.
없는 관계는 단순한 공백이 아니다. 관측되지 않았거나, 숨겨졌거나, 아직 생기지 않은 가능성이다.
논문 데이터로 공저 그래프를 만들면 저자는 노드가 되고 공동 논문은 링크가 된다. 링크 예측은 아직 함께 쓰지 않은 연구자들이 앞으로 협업할 가능성을 추정한다. 그래프가 불완전한 이유는 두 가지다. 실제 관계가 기록되지 않았거나 의도적으로 숨겨질 수 있고, 그래프 자체가 시간에 따라 새 관계를 만들어내며 진화할 수 있다.
친구·상품 추천에서 잠재 연결을 찾는다.
누락된 사실이나 관계를 보완한다.
약물 부작용과 단백질 상호작용을 예측한다.
숨겨진 범죄 네트워크와 연관을 추정한다.
링크 예측, 그래프 완성, 관계 추론은 문맥에 따라 비슷하게 쓰인다. 링크 예측은 보통 관계의 존재 여부를, 관계 예측은 존재뿐 아니라 어떤 타입의 관계인지까지 찾는 뜻으로 사용된다.
거대한 그래프는 한 덩어리의 ‘헤어볼’이 아니라, 내부 연결이 촘촘하고 외부 연결이 성긴 여러 지역으로 이루어진다.
공저망은 연구 분야, 소속 기관, 지리적 요인에 따라 자연스러운 군집을 만든다. 커뮤니티 탐지는 노드 속성 라벨 없이도 네트워크 토폴로지만으로 잠재 집단을 찾아낸다. 유전자 상호작용망의 기능 모듈, 금융 거래망의 사기 집단, 대규모 그래프의 구조적 요약이 대표적인 응용이다.
노드 분류가 숲속 나무의 종류를 맞히는 일이라면, 그래프 분류는 숲 전체가 어떤 생태계인지 판별하는 일이다.
분자는 원자가 노드이고 화학 결합이 엣지인 그래프로 표현된다. 독성이나 용해도는 개별 원자의 성질만이 아니라 원자들이 결합한 전체 구조에서 나온다. 그래프 분류는 여러 개의 라벨된 그래프를 학습해 새로운 그래프의 클래스를 예측하며, 이 경우 그래프 하나가 독립된 데이터 포인트가 된다.
원자 구성과 결합 패턴을 함께 특징화해 분자 속성을 분류한다.
아미노산을 노드로, 일정 거리 이내의 상호작용을 엣지로 두어 효소 여부를 예측한다.
프로그램의 구문과 데이터 흐름을 그래프로 만들고 악성 여부를 판별한다.
길은 둘이다. 그래프 전용 알고리즘으로 곧장 들어가거나, 그래프를 벡터로 번역한 뒤 전통적 머신러닝의 도구를 사용하는 길이다.
도메인과 그래프 구조를 사람이 해석해 특징을 설계한다. 투명하지만 노동집약적이다.
반복적 계산과 후보 생성을 자동화하면서 사람이 의미 있는 특징을 선택한다.
구조 패턴과 노드 속성을 메시지 전달로 학습해 벡터 임베딩을 자동 생성한다.
훈련 단계에서 사용한 특징화 규칙은 예측 단계에도 그대로 적용해야 한다. 스케일러, 관계 벡터 조합 연산, 그래프 통계의 정의가 달라지면 모델 입력의 의미가 변해 예측이 성립하지 않는다.
34명의 친교 관계와 두 지도자 사이의 분열은 특징 설계가 알고리즘보다 중요할 수 있음을 선명하게 보여준다.
이 네트워크는 가라테 클럽 회원 34명의 교류를 기록한다. 관리자 ‘John A’와 지도자 ‘Mr. Hi’의 갈등으로 클럽이 둘로 나뉘었고, 분열 이후 각 회원이 어느 편에 속했는지가 정답 라벨이 된다. 목표는 분열 이전의 친구 관계만 보고 최종 소속을 예측하는 것이다.
실제 사회관계를 담은 작은 네트워크다.
Mr. Hi와 John A(Officer) 집단으로 분리된다.
고정 난수 시드로 학습·테스트를 나눈다.
표준화된 임베딩에 로지스틱 회귀를 적용한다.
참음성 3, 거짓양성 3, 거짓음성 5, 참양성 3. 단순한 연결 수는 어느 집단과 연결되었는지를 구별하지 못한다.
def group_aware_features(graph):
club = nx.get_node_attributes(graph, "club")
vectors = []
for node in graph.nodes:
neighbors = list(graph.neighbors(node))
total = len(neighbors)
mr_hi = sum(club[n] == "Mr. Hi" for n in neighbors)
officer = sum(club[n] == "Officer" for n in neighbors)
vectors.append([total, mr_hi, officer])
return vectors
단순 차수와 자동 임베딩보다 집단별 이웃 수라는 도메인 특징이 더 높은 성능과 안정성을 보였다.
walk length와 walk 수가 지나치면 노드 표현이 서로 비슷해질 수 있다. 자동화는 무조정과 동의어가 아니다.
이 네트워크에서는 누구와 연결되었는지가 집단 소속을 설명한다. 도메인 이해가 일반적 특징보다 강한 신호를 만든다.
여러 그래프를 같은 규칙으로 특징화하고, 라벨된 그래프로 학습한 모델을 새 그래프에 적용한다.
일부 그래프 알고리즘은 특징 벡터도, 훈련 모델도 필요하지 않다. 그래프 자체가 입력이고 공동체가 출력이다.
방향을 무시했을 때 서로 도달 가능한 독립 부분그래프를 찾는다.
모듈성을 최적화해 내부 결속이 강한 공동체를 탐지한다.
라벨을 이웃으로 전파하고 같은 라벨의 노드를 공동체로 묶는다. 무작위성 때문에 실행마다 결과가 달라질 수 있다.
이 태스크는 앞선 분류 태스크와 두 점에서 다르다. 첫째, 그래프를 벡터로 바꾸지 않는다. 알고리즘이 노드, 관계, 방향, 가중치를 직접 사용한다. 둘째, 학습 단계가 없다. 사전 라벨 없이 그래프를 받아 공동체를 반환하는 비지도 과정이다.
그래프 머신러닝의 첫걸음은 더 복잡한 모델이 아니라, 무엇을 하나의 데이터 포인트로 볼 것인지 정확히 정하는 데서 시작한다.
제9장은 뒤이어 등장할 수동 특징 공학, 그래프 임베딩, GNN의 입구다. 그러나 가장 오래 남는 교훈은 소박하다. 좋은 모델보다 먼저 좋은 표현을 만들고, 좋은 표현보다 먼저 문제와 도메인의 구조를 이해해야 한다.