"파편화된 게임·영화 데이터를 하나의 그래프로 연결하다."
Steam과 IMDb의 상이한 메타데이터를 이분 그래프(Bipartite Graph)로 구조화하고,
LightGCN, GraphSAGE, RandomWalk 등 다양한 모델을 적용해 정교한 임베딩 학습과 추천을 구현했습니다.
게임(Steam)과 영화(IMDb) 등 서로 다른 플랫폼의 콘텐츠를 통합 추천하고자 할 때, 가장 큰 장벽은 '상이한 분류 체계'였습니다. 같은 장르라도 플랫폼마다 부르는 명칭(Tag/Genre)이 달랐습니다. 이를 억지로 매핑하는 대신, 이분 그래프(Bipartite Graph)를 구성하여 각 태그를 고유한 노드로 살리고, 연관성을 학습하도록 설계하여 콘텐츠 통합 맵을 구축했습니다.
▲ 운영중에 있는 A.O.D(all of dopamine) 서비스
그래프 내의 잠재적 관계를 포착하고 최적의 임베딩을 추출하기 위해 총 3가지 접근 방식을 시도 및 적용했습니다.
그래프 상에서 임의의 경로를 탐색하며 노드 간의 구조적 유사성을 학습했습니다. 직접적인 연결이 없더라도, 소비 패턴이 유사한 콘텐츠끼리 군집화되는 효과를 얻었습니다.
추천 시스템에서 불필요한 비선형 활성화 함수를 제거하고, 이웃 노드 간의 정보 전파(Propagation)에 집중한 LightGCN을 적용했습니다. 이를 통해 사용자와 아이템(콘텐츠) 간의 고차원적인 상호작용을 효율적으로 학습했습니다.
새로운 노드가 추가되었을 때 전체를 재학습하지 않고도 임베딩을 생성할 수 있도록 GraphSAGE를 활용했습니다. 콘텐츠의 메타데이터(Feature)를 이웃 노드의 정보와 집계(Aggregation)하여 학습 효율을 높였습니다.
초기 사용자나 신규 콘텐츠에 대한 정보가 부족한 콜드 스타트(Cold Start) 문제를 해결하기 위해, 단순한 'User-Item' 상호작용 외에 추가적인 연결 고리를 그래프에 주입했습니다.
🔧 구조적 해결책:
1. 장르 간 연관성 클러스터링: 유사 장르 노드끼리 엣지(Edge)를 연결하여 정보 전파 경로를 단축
2. 플랫폼 추천 데이터 활용: Steam/IMDb 자체 추천 리스트(‘이 게임을 좋아하면 저 게임도 좋아함’)를 크롤링하여 초기 그래프의 밀도(Density)를 보강
최종적으로 추출된 각 모델의 임베딩 벡터 간 코사인 유사도(Cosine Similarity)를 계산하여, 도메인을 넘나드는(Cross-Domain) 최적의 콘텐츠 매칭을 구현했습니다.