그래프 데이터 구조 이해: 시간축(DFT) vs 관계망(GFT)

DFT와 GFT의 수식 디테일보다, “데이터 구조가 다르면 푸리에의 기준(주파수)이 어떻게 바뀌는지“를 비교로 이해한다.

  • DFT: 값이 놓이는 뼈대가 시간축(고정된 줄)
  • GFT: 값이 놓이는 뼈대가 관계망(유동적인 그래프 연결)
푸리에(Fourier)란?

푸리에는 복잡한 신호를 ‘단순한 진동 성분’들의 합으로 쪼개 보는 방법을 말한다.

  • 신호(signal): 어떤 위치에 붙어 있는 값
    • 시간 t의 값(시계열) / 픽셀 위치의 값(이미지) / 노드의 값(그래프)
  • 주파수(frequency): “얼마나 빨리 바뀌거나 반복하나”
    • 천천히 변하면 저주파, 급격히 변하면 고주파
  • 스펙트럼(spectrum): 주파수별로 성분이 얼마나 있는지 요약한 지도

한 줄 요약 + 비교 표

DFT는 시간 순서(고정 격자) 기준의 주파수, GFT는 연결 관계(그래프) 기준의 주파수다.

구분DFTGFT
대조되는 관점격자/선형 구조(시간축 고정)그래프 구조(연결 유동/복잡)
데이터 타입시계열, 이미지(격자 위 값)그래프 위의 지표/신호(노드별 값)
인접성(가중치)시간순 1:1 연결(대개 단순)임의 노드 간 연결 + 가중치 존재
동일한 데이터프레임 구조로 예시 만들기

비교를 쉽게 하려면 “값”과 “구조”를 분리하면 된다.

(A) 값(신호) DF: 어디에 어떤 값이 있나?
  • signal_df (둘 다 동일하게 사용)
    • DFT 관점: key = 시간 t, value = x[t]
    • GFT 관점: key = 노드 i, value = x[i]
keyvalue
010
112
213
39
48

즉, “값의 테이블”은 동일하고, 해석만 달라진다.

(B) 구조(연결) DF: 누가 누구랑 얼마나 연결되어 있나? (GFT의 핵심)
  • edge_df
    • src(source) = 연결의 출발 노드
    • dst(destination) = 연결의 도착 노드
    • weight = 연결 강도
srcdstweight
010.9
020.2
120.7
230.8
340.6

여기서 비교 포인트

  • DFT는 시간축 자체가 구조(고정)라서 보통 edge_df를 따로 주지 않는다.
  • GFT는 관계망이 데이터의 일부라서 edge_df가 반드시 필요하다.
데이터 흐름(Flow): “무엇이 입력이고, 무엇이 변환의 기준인가?”
DFT의 데이터 흐름
  1. 입력: 시간순 신호 x[t] (signal_df로 표현 가능)
  2. 기준(좌표계): 시간축 위의 사인/코사인(주기 패턴)
  3. 출력: 시간 주파수 성분(어떤 주기가 얼마나 섞였는지)

한 줄로:

시간축(고정) 위에서, 신호를 주기 성분으로 바꾼다.

GFT의 데이터 흐름
  1. 입력: 노드별 신호 x[i] (signal_df)
  2. 추가 입력: 그래프 연결(edge_df)
  3. 기준(좌표계): 그래프 구조를 요약한 행렬(대표적으로 라플라시안)에서 나온 “기준 모양들”
  4. 출력: 그래프 주파수 성분(그래프 기준으로 얼마나 거친 패턴인지)

한 줄로:

관계망(유동) 위에서, 신호를 “이웃 대비 변화(거칠기)” 성분으로 바꾼다.

가장 중요한 직관: “주파수 = 빠르게 바뀌는 정도” (근데 기준이 다름)
DFT에서 “빠르게 바뀜”
  • 시간에 따라 값이 천천히 움직이면 저주파
  • 시간에 따라 들쭉날쭉 빠르게 흔들리면 고주파
GFT에서 “빠르게 바뀜”
  • 시간 대신 연결된 이웃과 비교한다.
  • 연결된 이웃끼리 값이 비슷하면 저주파(부드러움)
  • 연결된 이웃과 값이 확 다르면 고주파(경계/거침)

예시로 딱 감 잡기:

  • 도시(노드)들이 도로망(엣지)로 연결돼 있고 value가 “미세먼지”라면
    • 인접 도시들이 비슷하면 저주파(부드러운 분포)
    • 특정 도시만 튀면 고주파(급격한 경계/이상)
목적: “왜 GFT가 필요해?”

DFT는 시간축이 고정인 문제에서 매우 강력하다.
하지만 많은 데이터는 “시간”보다 관계(연결)가 더 본질일 때가 많다.

GFT가 유리한 대표 상황:

  • 사용자–상품 추천(누가 무엇과 연결되는지)
  • 종목/코인 간 상관 네트워크(같이 움직이는 관계)
  • 센서/전력망/도로망(물리적 연결)
  • 소셜/인용 네트워크(관계가 정보의 뼈대)

즉, 핵심이 “값이 어디로 영향을 타고 퍼지나“라면 시간축 대신 edge_df(관계망)이 문제를 정의한다.

미니 숫자 예시: 같은 signal_df로 DFT 스펙트럼 vs GFT 스펙트럼
준비: 동일한 값 테이블(signal_df)
keyvalue
010
112
213
39
48
  • DFT: key=시간 (t) 로 해석
  • GFT: key=노드 (i) 로 해석
    값은 똑같은데, “구조(축)”가 달라지면서 스펙트럼 해석이 달라진다

DFT 스펙트럼: “시간축에서 어떤 주기가 섞였나?”

5개 샘플((N=5))에 대해 DFT를 하면 주파수 bin (k=0..4)가 나온다고 보면 됩니다.

  • (k=0): 평균(DC 성분)
  • (k=1,4): 비교적 느린 진동(저주파)
  • (k=2,3): 비교적 빠른 진동(고주파)
    ((k=1)과 (k=4), (k=2)와 (k=3)은 대칭이라 크기가 동일하게 나오는 경우가 많아요)

DFT 크기 스펙트럼(정규화: (|X[k]|/N))

k직관적 의미|X[k]|/N막대(상대크기)
0평균(DC)10.400██████████████████
1저주파1.273██
2고주파0.316
3고주파0.316
4저주파1.273██

해석(한 문장): 이 신호는 “평균(전체 레벨)”이 가장 크고, 그 위에 완만한 흔들림(저주파)이 조금 얹혀 있으며 짧게 지그재그 하는 고주파는 상대적으로 작다.

GFT 스펙트럼: “관계망에서 이웃 대비 얼마나 거친가?”

이번엔 같은 값을 “그래프 위 신호”로 보고, 아래처럼 관계(edge_df)를 정의해봅니다(무방향, 가중치=연결 강도).

그래프 구조(edge_df) 예시
srcdstweight
010.9
020.2
120.7
130.1
230.8
340.6

여기서 GFT의 “주파수 축”은 그래프 라플라시안에서 나오는 모드들이고, 각 모드에는 고유값 (\lambda)가 붙는다.

  • λ가 작을수록: 이웃끼리 비슷하게 변하는 부드러운 패턴(저 그래프-주파수)
  • λ가 클수록: 이웃 대비 급격히 달라지는 거친 패턴(고 그래프-주파수)

GFT 결과

(모드별 크기, 아래는 위 edge_df로 만든 그래프에서 계산한 예시)

mλ_m(그래프 주파수)직관적 의미x̂[m]막대(상대크기)
00.000전체 평균/기본 레벨23.255██████████████████
10.374가장 부드러운 변화2.807██
21.220중간 변화1.955██
32.234더 거친 변화2.139██
42.771가장 거친 변화0.962

해석(한 문장): 이 신호는 그래프 연결 기준으로도 전체 레벨(모드0)이 지배적이고, 나머지는 “연결된 이웃들 대비” 어느 정도의 변화가 섞여 있다. 특히 그래프 고주파(큰 (\lambda)) 성분이 아주 크진 않아서, 이 그래프 기준으로는 “극단적으로 거친 신호”까진 아니다.

한 번에 비교 핵심(중요)
  • DFT 스펙트럼은 “시간축”이 고정이라, 같은 signal_df면 축이 안 바뀜 → 결과 해석이 안정적
  • GFT 스펙트럼은 “edge_df(관계망)”이 축을 결정함 → 같은 signal_df라도 edge_df를 바꾸면 스펙트럼이 달라질 수 있음
    • 예: 0–2의 weight를 크게 만들면(더 강한 이웃) “0과 2가 비슷해야 부드럽다”는 기준이 강해져서, 그 차이를 설명하는 고주파 성분이 커질 수 있음
결론
  • 공통: 신호를 “주파수 성분”으로 분해해 패턴을 본다.
  • DFT: 고정된 시간축 기준 → “시간에 따른 변화 속도”가 주파수
  • GFT: 유동적인 그래프 연결 기준 → “이웃 대비 변화(거칠기)”가 주파수
  • 데이터 관점 차이:
    • DFT: signal_df만 있으면 시작 가능(축이 고정)
    • GFT: signal_df+edge_df가 필요(축이 관계로 결정)