"모두에게 같은 맛집은 없다."
부천시 리뷰 데이터를 활용하여 MF와 XGBoost를 결합한 하이브리드 추천 모델을 개발하고,
실시간 추천 API 파이프라인을 구축하여 최우수상을 수상했습니다.
부천시와 대학이 협업하여 개최한 대회에서, 단순한 '별점 높은 맛집'이 아닌 사용자 개인의 입맛과 취향을 반영한 맞춤형 맛집 추천을 목표로 프로젝트를 시작했습니다.
단순히 모델만 만드는 것이 아니라, 실제 사용자가 리뷰를 남기고 그 데이터가 다시 추천에 반영되는 선순환 플랫폼 구조를 완성해야 하는 과제가 있었습니다.
▲ 추천 모델 서빙 파이프라인 및 시스템 아키텍처
파트너가 프론트엔드와 플랫폼 서버를 담당하고, 저는 핵심 추천 엔진과 데이터 파이프라인을 전담하여 설계했습니다.
사용자의 과거 취향과 음식점 간의 유사성을 동시에 분석하기 위해 아이템 기반(Item-based) 및 사용자 기반(User-based) 협업 필터링을 결합한 하이브리드 모델을 구축했습니다. 코사인 유사도를 산출하여 데이터 희소성 문제를 해결하고, 실제 방문 평점 데이터를 기반으로 한 앙상블 기법을 적용해 안정성과 다양성을 확보했습니다.
추천 성능을 극대화하고 콜드스타트 문제를 해결하기 위해, 잠재 요인을 분석하는 Matrix Factorization(FunkSVD) 기법을 메인 엔진으로 채택했습니다. 여기에 유저 및 음식점의 20여 가지 메타 데이터를 활용하는 XGBoost 모델을 앙상블하여, 단순 평점 데이터가 놓칠 수 있는 정형적 특성까지 학습시켰습니다.
딥러닝 기반의 GMF(선형)와 MLP(비선형) 계층을 결합한 NeuMF 구조를 설계했습니다. 사용자 및 음식점의 범주형·수치형 임베딩을 고차원 벡터로 병합하여 학습함으로써, 단순 수치만으로는 파악할 수 없는 유저의 복잡한 취향 패턴을 정교하게 반영했습니다.
단순 아이디어를 넘어, 실제 작동하는 알고리즘과 배포 가능한 수준의 시스템 완성도를 높게 평가받아 대회 최고상인 최우수상을 수상했습니다.
데이터 전처리부터 모델링, 그리고 이를 서비스로 연결하는 백엔드 API 통신까지 데이터의 전체 흐름(End-to-End)을 주도적으로 설계하고 구현하는 경험을 쌓았습니다.