여행지 추천 알고리즘 만들기

Posted by , August 16, 2024
추천 알고리즘

모행 프로젝트에서는 첫 발표회에서 두 가지 추천 시스템을 구현했다. 첫 번째는 메인 페이지에 노출되는 ‘사용자 정보 기반 추천 알고리즘’이고, 두 번째는 둘러보고 있는 여행지의 하단에 노출되는 ‘비슷한 여행지 추천 알고리즘’이다.

먼저 첫 번째 추천 시스템에서 사용한 ‘사용자 정보 기반 추천 알고리즘’은 사용자가 클릭한 콘텐츠를 기반으로 추천하고 있다. 최근 클릭한 여행지의 우선순위를 높이고, 많이 클릭한 여행지의 우선순위도 높인다. 이 알고리즘의 고도화 전략으로는 사용자의 피처를 보다 다양하게 활용하는 방안을 채택한다. 백엔드로부터 추천 요청을 받을 때 사용자의 장애 정보 및 사용자가 선호하는 여행지 리스트(회원가입 시 선택)를 받아 사용자의 선호도를 더 반영하고자 한다. 또한 날씨에 대한 데이터 정보를 넣어 고령자, 유아의 건강에 유의하여 여행지를 선택할 수 있도록 할 수 있게 할 예정이다.

두 번째 추천 시스템에서 사용한 ‘비슷한 여행지 추천 알고리즘’에서는 사용자의 선호도는 반영하지 않고, 해당 여행지와 비슷한 여행지만을 추천하고 있다.

이 모든 것은 추천 시스템 구현의 이론을 공부하고 나서야 명확히 정할 수 있었다. 따라서 이번 포스팅에서는 추천 시스템이 기본이 되는 이론을 알아보고, 다음 포스팅에서 실전에서 활용하는 방법을 알아보고자 한다.

협업 필터링

협업 필터링은 보통 2가지 단계로 운영된다.

  1. 기존의 어느 정도 예측이 가능한 고객들과 비슷한 패턴을 가진 고객들을 찾는다.
  2. 기존 고객들의 행동을 예측하기 위해 첫 번째 단계에서 찾은 비슷하다고 생각된 고객들의 행동을 수치화하여 사용한다.

여기서 ‘어느 정도 예측이 가능하다’의 의미는 사용자의 행동에 대한 데이터가 있고 그것을 분석하여 데이터의 경향성을 찾았음을 의미한다.

협업 필터링의 타입은 다음과 같다.

메모리 기반

메모리 기반 접근법은 사용자 평가 데이터를 사용하여 사용자 또는 항목 간의 유사성을 계산한다. 대표적으로 이웃 기반 협업 필터링과 아이템 기반/유저 기반 상위 N개 추천이 있다.

모델 기반

메모리 기반 방법에 대한 대안은 유저의 평가를 예측하는 모델을 학습시키는 것이다 모델 기반 알고리즘에서는 베이지안 네트워크, 클러스터링 모델, 특잇값 분해와 같은 잠재 의미 모델, 확률적 잠재 의미 분석, 다중 곱셈 인자, 마르코프 결정 프로세스 기반 모델이 포함된다.

하이브리드

기본 협업 필터링 접근 방식의 한계를 극복하고 예측 성능을 개선하기 위해 메모리 기반과 모델 기반 협업 필터링 알고리즘을 결합한다. 확실히 희소성 및 정보 손실과 같은 협업 필터링 문제를 극복할 수 있지만 복잡성이 증가하고 구현 비용이 많이 든다.

콘텐츠 기반 필터링

콘텐츠 기반 필터링 방법은 항목에 대한 설명과 사용자의 선호도를 기반으로 한다. 이러한 방법은 항목에 대한 알려진 데이터(이름, 위치, 설명 등)는 있지만 사용자에 대한 데이터는 없는 상황에 가장 적합하다. 콘텐츠 기반 추천 모델은 추천을 사용자별 분류 문제로 취급하고 항목의 기능을 기반으로 사용자의 좋아요와 싫어요에 대한 분류기를 학습한다.

콘텐츠 기반 필터링의 핵심 문제는 시스템이 한 콘텐츠 소스에 대한 사용자의 작업에서 사용자 선호도를 학습하여 다른 콘텐츠 유형에서 사용할 수 있는지 여부이다. 시스템이 사용자가 이미 사용 중인 것과 동일한 유형의 콘텐츠를 추천하는 것으로 제한되는 경우 추천 시스템의 가치는 다른 서비스의 다른 콘텐츠 유형을 추천할 수 있는 경우보다 상당히 낮다.

하이브리드 필터링

대부분의 추천 시스템은 협업 필터링, 콘텐츠 기반 필터링 및 기타 접근 방식을 결합한 하이브리드 접근 방식을 사용한다. Netflix는 하이브리드 추천 시스템을 사용한 좋은 예이다. 이 웹사이트는 유사한 사용자의 시청 및 검색 습관을 비교하여 추천을 한다(협업 필터링). 또한 사용자가 높은 평가를 내린 영화와 특성을 공유하는 영화를 제안하여 추천을 한다(컨텐츠 기반 필터링).