기업이 성능 좋은 ‘개인화 추천 솔루션’을 제공하려면, 고객을 깊이 이해할 수 있는 머신러닝 모델을 만들어야 합니다. 특히, 고객의 단순한 정보뿐만 아니라 과거 행동 데이터에서 유의미한 정보를 추출하는 것이 중요합니다. 오늘은 블럭스(Blux)의 머신러닝 팀이 어떻게 최고 수준의 개인화 추천 솔루션을 개발하는지 살펴보겠습니다.
딥러닝을 활용한 개인화 추천 시스템의 핵
블럭스 팀은 클라이언트의 플랫폼에 최적화된 ‘맞춤형 개인화 추천 솔루션’을 제공하기 위해 다양한 시도를 하고 있습니다. 이를 위해 고객 행동 데이터를 효과적으로 추출하는 머신러닝 모델이 필수적입니다. 특히 블럭스 팀은 두 가지 정보를 중요하게 여깁니다. 첫째, 고객이 상호작용하는 상품들의 특징을 파악하는 '상품 특성 정보(Attribute Information)'와 둘째, 고객이 상품과 어떤 패턴으로 상호작용하는지에 대한 '문맥적 정보(Contextual Information)'입니다. 이러한 정보를 잘 학습할 수 있는 머신러닝 모델 중 딥러닝 모델을 개발하는 것이 목표입니다.
우선 상품 특성 정보를 딥러닝 모델이 학습하기 위해서는 이 정보들을 수치화하여 수학적 공간에 표현할 수 있어야 합니다. 이때 임베딩(Embedding) 기법이 통상적으로 사용됩니다. 임베딩은 개체가 가진 여러 특징을 수치로 표현하여 수학적인 공간에 표현하는 기법입니다. 구체적으로는 각 상품의 특징들을 벡터화하여 ‘벡터 공간(Vector Space’)으로 맵핑합니다. 벡터 공간에 맵핑하는 이유는 벡터의 거리와 두 벡터 사이의 각도 등 여러 ‘이항 연산(Binary operation, 두 개의 원소를 이용해 하나의 원소를 만들어내는 것)’을 통해 유사성을 쉽게 측정할 수 있기 때문입니다.
출처: Cosine similarity - Mastering Machine Learning with Spark 2.x [Book]
임베딩을 통해 벡터 공간에 맵핑하는 정보는 상품 특성 정보뿐만 아니라 고객의 행동 패턴에서 파악한 문맥적 정보도 포함됩니다. 이후 고객의 문맥적 정보 벡터와 유사한 정보를 추출하여 해당 상품들을 추천합니다. 추천 시스템의 최종 목표는 비슷한 특징을 가진 상품 벡터를 비슷한 곳에 위치시키는 것입니다. 이러한 특성은 데이터마다 다르며, 커머스에서는 카테고리나 브랜드, 콘텐츠에서는 장르나 제작자가 특성을 표현할 수 있습니다. 추천 시스템은 고객 행동 데이터를 기반으로 상품의 어떤 정보를 추출하고 비슷한 곳에 위치시킬지를 학습합니다.
그럼 추천 시스템은 어떻게 데이터에서 유의미한 정보들만을 추출하여 벡터공간에 맵핑하는 걸까요?
▶ '딥러닝을 통한 블럭스 개인화 추천 시스템의 진화: 1편' 전문 보러가기