추천이란 무엇인가? 검색의 또 다른 이름일까? 아니면 그저 광고인가? 그 종류부터 알아보도록 하자

전체 추천

불특정 다수에 대한 무작위 추천이다. TV 광고나 네이버 광고배너, 일반적인 앱 배너 광고 등이 해당된다. 실시간 뜨는 검색어나 검색어 추천 또한 전체 추천에 해당한다.

그룹 추천

사용자를 특정 segment로 나눠서, 그에 특화된 추천을 제공하는 개념이다. 네이버에서 제공하는 재테크족/싱글녀/대학생 인기검색어 등이 이에 해당하며, 부동산 추천(강남/강북 등)과 같이 접속지역에 따라 나누기도 한다.

개인 추천

사용자의 이력을 바탕으로 관심사를 추측해 그것에 맞는 아이템을 보여준다. 일반적으로 Collaborative filtering이 쓰이며, 본 프로젝트도 이에 기반한다. 개인 추천은 사용자를 모델링하는 Profiling 과정이 기본이며, ‘이 Profiling이 얼마나 잘 되어있는가?’가 추천 성능의 핵심 지표가 된다

아이템 기반 추천

말그대로 사용자 기반이 아닌 아이템 기반의 추천이다. 예로, 쇼핑몰에서 ‘최근 본 유사한 상품’이나 Netflix, Youtube에서 추천하는 영화/동영상이 이에 해당한다. 전혀 엉뚱한 추천을 제공할 수도 있기 때문에 단일 알고리즘으로 쓰이지는 않고, 개인 추천과 하이브리드 형태로 결합하거나 메타데이터를 이용해 재가공된다.

추천의 종류를 알았다면 이제 추천에 대해 알아보자.

[ Recommend System ]

추천의 기본 가정은 ‘과거는 미래다’이다.

이에 따라 해당하는 사용자의 behavior log 데이터가 필요하며, 그 분석을 통해 사용자의 호감도를 조사한다. 그리고 사용자가 좋아할만한 아이템을 추천하는 것이다.

예를 들면, 웹을 통해 특정 유저가 하나의 아이템을 조회하면 관심이 없지 않다는 것을 알 수 있다. 그것이 구매로 이어지면 분명한 호감도이며, 평점을 최고점으로 준다면 호감도가 매우 높다는 것을 분명히 알 수 있다. 하지만 해당 아이템이 목록에 있음에도 조회하지 않고 지나갔다면, 호감도가 마이너스에 가깝다는 것을 알 수 있다.

아이템에 대한 사용자의 호감도를 매기는 것을 rating이라 표한한다. 위와 같은 상황에서 평점을 받는 것처럼 유저의 분명한 피드백을 explicit rating, 조회여부,구매여부에 따라 추정하는 것을 implicit feedback이라 한다. 하지만 explicit rating보다는 implicit feedback을 통한 분석이 더 정확하다고 평가된다. 왜일까?

explicit rating에는 크게 세 가지의 단점이 있다. 먼저, data sparsity(데이터 빈약도)가 크다. 다른 예를 들지 않더라도 개인의 경험에 비춰봤을 때, 쇼핑몰에서 무언가를 사고 후기를 정성껏 기록하고 평점을 고민하여 매긴 경험은 적을 것이다. 두번째로 점수 편향이 존재한다. 일반적으로 구매한 상품에 대해 만족한 사람은 상품에 대해 쓸수도 있고, 쓰지 않을 수도 있지만 상품 경험이 좋지 않은 사람은 큰 확률로 피드백을 주지 않는 경우가 많다. 마지막으로 점수 scope도 사용자마다 다르다. 0점에서 5점 사이의 점수 폭에서, 어떤 사용자는 보통 2~4점의, 어떤 사용자는 보통 3~5점의 점수 scope를 준다면 점수의 평균치에 대해 의미는 퇴색될 것이다.

물론 implicit feedback 또한 noise가 있지만, explicit rating에 비해서는 그 bubble이 적다는 것이 일반적인 평이다. 게다가 implicit feedback은 단순히 조회여부에 따라 0점과 1점으로 나누는 것이 아니라, 목록에 노출되었으나 조회하지 않으면 -1점, 목록에 노출되지 않았다면 0점, 조회되면 1점, 구매나 특정 액션을 잡았다면 3점 등 좀 더 능동적인 rating이 가능하다.

위의 User rating은 Collaborative Filtering을 위한 기본 데이터이다. Content-based filtering의 아이템에는, 그 아이템에 대한 다양한 meta-data가 존재한다. 영화로 치면 장르나 스태프, 출연진, 스토리 등이 그 예다. 아이템 뿐만 아니라 사용자의 성별, 나이, 지역, 직업 등 특성에 따라 아이템에 선호도가 다를 수 있고, 그들끼리의 유사한 성향이 있을 수 있으므로 그에 기반한 추천도 가능하다.

이 외에도 좀 더 쉽게(혹은 친근하게) 추천할 수 있는 정보로는 소셜 관계 데이터가 있다. 유사도가 조금 떨어지더라도 ‘당신같은 성향의 사람들이 좋아해’보다는 ‘당신의 친구 평강이가 좋아해’라는 방향의 접근이 사용자가 납득하기에 쉽다는 의미다.

다음 포스팅에는 개인 추천에 대한 matrix factorization과 유사성 측정에 대해 알아보겠다.