일상에서 발생하는 수많은 거래들 - 카페에서 커피를 마시고, 식당에서 식사하고, 교통비를 결제하는 모든 순간들이 사실은 하나의 거대한 네트워크를 형성합니다. 이 글에서는 Graph Neural Network(GNN)이해를 위한 목적으로 GNN 활용하여 이러한 거래 데이터의 숨겨진 패턴을 발견하고, 새로운 거래의 금액을 예측하는 방법을 소개합니다.
GNN(Graph Neural Network)은 “그래프 형태의 데이터”가 있는 거의 모든 문제를 풀 수 있습니다. 아래에 실생활·산업·연구에서 실제로 많이 쓰이는 대표적인 문제들을 정리했어요.
| 카테고리 | 구체적인 문제 예시 | 어떤 그래프인가? | 대표 논문 / 시스템 (2025년 기준) |
|---|---|---|---|
| 노드 분류 (Node Classification) | - 논문 주제 분류 (Cora, PubMed) - 유저의 관심사 예측 (Pinterest) - 단백질 기능 예측 | 논문 인용 그래프 유저-아이템 그래프 단백질 상호작용 네트워크 | GCN, GraphSAGE, GAT |
| 링크 예측 (Link Prediction) | - 친구 추천 (Facebook, LinkedIn) - 약물-약물 상호작용 예측 - 지식 그래프 완성 (Wikidata) | 소셜 네트워크 생물 네트워크 지식 그래프 | VGAE, SEAL, UltraGCN |
| 그래프 분류 (Graph Classification) | - 분자(화합물)의 독성/약리 예측 - 소셜 네트워크에서 악성 커뮤니티 탐지 - 프로그램 코드 취약점 탐지 | 분자 그래프 소셜 서브그래프 AST 그래프 | GIN, DiffPool, Graphormer |
| 추천 시스템 | - Netflix, YouTube, TikTok, Amazon 추천 - Pinterest 핀 추천 | 유저-아이템 이종 그래프 (Heterogeneous Graph) | PinSage, LightGCN, GraphRec |
| 교통 예측 | - 도시 교통 흐름 예측 - 고속도로 속도 예측 | 도로 네트워크 그래프 | Graph WaveNet, STGCN, DCRNN |
| 물리 시뮬레이션 / 로봇 | - 천 시뮬레이션, 유체 시뮬레이션 - 다중 로봇 협업 경로 계획 | 메쉬 그래프, 파티클 그래프 | MeshGraphNets, Graph Network Simulator |
| 지식 그래프 / LLM | - 사실 검증 (Fact-Checking) - RAG(Retrieval-Augmented Generation) - 멀티홉 질문 답변 | 엔티티-관계 그래프 | GraphRAG, GRE, KG-BERT |
| 이상 탐지 (Anomaly Detection) | - 금융 사기 거래 탐지 - 산업 설비 고장 예측 | 거래 네트워크, 센서 네트워크 | DOMINANT, AnomalyDAE |
| 생물·의약 | - 신약 후보 물질 스크리닝 - 단백질 구조 예측 - 뇌 연결망 분석 | 분자 그래프, 뇌 연결 그래프 | SchNet, AlphaFold (부분), Geomol |
| 소셜 네트워크 분석 | - 가짜뉴스 전파 예측 - 인플루언서 탐지 | 트윗 리트윗 그래프 | RGCN, DeeperGCN |
| 코드 분석 / 소프트웨어 엔지니어링 | - 버그 탐지 - 코드 자동 완성 - 악성코드 탐지 | CFG, AST, PDG 그래프 | GREAT, CodeGraph, Devign |
“노드와 노드 사이에 관계(엣지)가 있는 데이터라면 → 거의 다 GNN으로 풀 수 있다!”
일반적인 머신러닝 모델은 데이터를 표(테이블) 형태로만 바라봅니다. 예를 들어, 각 거래를 독립적인 행(row)으로 취급하죠. 하지만 실제 세상의 데이터는 서로 연결되어 있습니다:
GNN은 이러한 관계성을 그래프로 표현합니다:
소셜 네트워크에서 사람들이 노드이고 친구 관계가 엣지인 것처럼, 우리의 거래 데이터도 네트워크로 표현할 수 있습니다.
우리가 다루는 거래 데이터는 다음과 같은 정보를 담고 있습니다:

이 프로젝트에서는 두 가지 방식으로 거래들을 연결합니다:
1. 시간적 연결
연속된 거래를 양방향으로 연결합니다. 이는 하루의 소비 패턴을 학습하는 데 도움을 줍니다.
예시:
2. 카테고리 연결
같은 카테고리의 거래들을 연결합니다. 너무 많은 연결을 방지하기 위해 각 거래당 최대 3개의 다른 거래와만 연결합니다.
예시:
각 거래(노드)는 11개의 특성을 가집니다:
이 특성들은 StandardScaler로 정규화되어 모델이 학습하기 쉬운 형태로 변환됩니다.
이 프로젝트는 GCN을 사용합니다. GCN의 핵심 아이디어는 "이웃의 정보를 집계한다"입니다.
작동 원리:
실제 의미:
우리의 GNNExpensePredictor 모델은 다음과 같이 구성됩니다:
GNN 부분:
MLP 부분:
정규화 기법:
금액 예측이므로 회귀 문제입니다. MSE는 예측값과 실제값의 차이를 제곱하여 평균을 냅니다.
MSE = (1/n) × Σ(예측값 - 실제값)²
왜 MSE를 사용할까?
MAE는 예측 오차의 절대값 평균입니다.
MAE = (1/n) × Σ|예측값 - 실제값|
MAE의 장점:
Train/Test 분할:
최적화:
Early Stopping 개념:

입력 예시:
DateTime: 2025-02-22 12:30
Vendor: BlueBean Coffee
RawCategory: Cafe
Item: Americano (M)
Qty: 1
UnitCalories_kcal: 10
PaymentMethod: Card
Location: Seoul–Gangnam
With: Solo
처리 과정:
시간 특성 추출
- Hour: 12
- DayOfWeek: 5 (토요일)
- Day: 22
범주형 인코딩
- 학습 시 저장된 LabelEncoder를 사용
- 'BlueBean Coffee' → 숫자 인덱스로 변환
- 모든 범주형 변수를 동일하게 처리
정규화
- 학습 시 사용한 StandardScaler로 동일하게 변환
- 모델이 학습한 분포와 일치하도록 조정
그래프 생성
- 단일 노드로 간단한 그래프 생성
- Self-loop 엣지 추가 (자기 자신과의 연결)
예측 실행
- 모델 forward pass
- 최종 출력: 예상 금액 (예: 4,250원)
유사 거래 비교:
시스템은 과거 데이터에서 동일한 Vendor와 Item을 가진 거래를 찾아 평균을 계산합니다.
예시:
이를 통해 모델이 현실적인 예측을 하는지 확인할 수 있습니다.
PyVis를 사용하여 인터랙티브한 네트워크 그래프를 생성합니다.
시각적 요소의 의미:
노드 색상: 카테고리별로 구분
- 빨강: Food
- 청록: Cafe
- 파랑: Transport
- 녹색: Grocery
노드 크기: 거래 금액에 비례
- 큰 노드 = 고액 거래
- 작은 노드 = 소액 거래
엣지 색상:
- 파란색: 시간적 연결 (연속된 거래)
- 빨간색: 카테고리 연결 (같은 유형)
- 회색: 기타 연결
발견할 수 있는 패턴:

중앙에 "전체 지출"을 배치하고, 각 카테고리를 주변에 배치합니다.
인사이트:

시간대별 거래를 순서대로 배치하여 방향성 그래프를 생성합니다.
분석 가능한 항목:
어느 시간대에 거래가 집중되는가?
고액 지출은 주로 언제 발생하는가?
요일별 패턴의 차이는 무엇인가?

기존 방법 (예: Random Forest, Linear Regression):
각 거래를 독립적으로 취급합니다.
예측 과정:
GNN 방법:
거래 간의 관계를 함께 고려합니다.
예측 과정:
GNN은 여러 층을 거치면서 멀리 떨어진 노드의 정보까지 활용합니다.
3-hop 정보 전달 예시:
1층 후:
2층 후:
3층 후:
새로운 관계 추가가 쉽습니다:
각 관계 유형은 새로운 엣지로 표현되며, 모델은 자동으로 어떤 관계가 중요한지 학습합니다.
예산 예측:
이상 거래 탐지:
시각화를 통한 발견:
개선 방향 도출:
상황 기반 추천:
금액 가이드:
"이 상점에서 평균 8,000원 정도 지출하세요"
예산 초과 방지
Hidden Dimension:
Learning Rate:
Epochs:
너무 적으면: 덜 학습됨
너무 많으면: 과적합
Early Stopping으로 최적 시점 자동 탐지
추가 가능한 특성:
파생 특성:
GNN + 전통적 모델 결합:
다중 GNN 모델:
필요한 데이터 양:
데이터 품질:
미등록 Vendor나 Item:
계절성:
그래프 크기 증가:
최적화 방법:
금액 예측 외에 추가 작업:
하나의 GNN 모델로 여러 예측을 동시에 수행하면 효율적입니다.
현재는 정적 그래프이지만, 시간에 따라 변화하는 동적 그래프로 확장 가능:
여러 타입의 노드와 엣지:
GraphSAGE, HGT 등의 고급 모델 활용
예측 근거 제시:
사용자 신뢰 구축:
Graph Neural Network는 단순히 데이터를 표로 보는 것을 넘어, 관계의 네트워크로 이해하게 합니다. 거래 데이터에 GNN을 적용함으로써:
얻을 수 있는 것:
배울 수 있는 것:
확장할 수 있는 것:
이 프로젝트는 GNN의 시작점입니다. 여기서 배운 개념들은 소셜 네트워크 분석, 지식 그래프, 분자 구조 예측 등 수많은 분야에 적용될 수 있습니다.
여러분의 데이터에는 어떤 그래프가 숨어있을까요? 이제 그 관계의 네트워크를 발견하고, GNN으로 학습할 차례입니다.
다음 단계:
참고 자료:
(프로젝트 코드: 이 문서에서 설명한 내용 및 프로젝트 코드에 대한 문의는 언제든 환영합니다)
기업 홍보를 위한 확실한 방법
협회 홈페이지에 회사정보를 보강해 보세요.