지금까지 “추천 시스템이란?[1~2]”까지를 간단히 정리해보자.

추천에 대한 유저의 행동에 대해 explicit rating, 혹은 implicit feedback을 통해 사용자의 선호도를 조사할 수 있다.

그에 대해 맞춤형 개인추천을 위한 matrix factorization과 유클리드 거리, 코사인 유사도, 피어슨 상관계수를 이용한 유사도 측정을 진행했다.

이는 모두 추천 알고리즘하면 대표적으로 언급되는 Collaborative Filtering와 연관되는 개념이다.

Collaborative Filtering

이 CF의 기본적인 가정은 ‘Likely-mind’로 ‘나와 비슷한 성향을 가진 다른 사용자들이 좋아하는 것이면 나도 좋아할 가능성이 높다’는 데서 시작한다.

CF 방식은 모델기반의 CF와 메모리기반 CF가 존재한다.

모델기반 CF

나이브 베이지언이나 뉴럴 네트워크 등 다양한 머신러닝 기법을 통해서 추천을 해준다. 이번 포스팅의 주제와 맞지 않으므로 추후에 다루도록 하겠다.

메모리기반 CF

유저와 아이템에 대한 레이팅 모두 메모리 위에 올려두고 유저/아이템 간의 관계를 계산하기에 메모리기반이라 불린다. 이 CF 방식의 장점은 간단하지만 의외로 추천의 성능이 매우 좋다는 점과 우연에 관한 추천이 가능한 것이며, 단점으로는 커버리지 자체가 낮은 편이라는 것이다.

메모리기반 CF 커버리지가 낮은 이유는 여러가지가 있다.

최소 한번 이상의 조회가 일어난 상품이 아니면 추천리스트에 올라갈 수 없고,

새로운 유저나 아이템에 대해 레이팅 자체가 존재하지 않으므로 적절한 추천이 어렵다는 점이다. (이 문제를 cold start라 칭한다.) 이 외에도, 기본적으로 인기도에 의한 추천이기 때문에 인기 있는 상품들이 계속해서 추천될 확률이 높다.

더 고려해야할 사항이 있다. 아무리 matrix factorization과 유사성 측정을 통해

개인화 추천을 하더라도 해당 상품의 인기도에 크게 의존을 한다.

그렇기 때문에 많은 사용자들이 좋아하는 일반적인 아이템은 자주 추천이 되는데,

이는 뻔한 아이템이 계속해서 상위권을 지키고 있게 되는 상황으로 향한다. 결과적으로 사용자의 만족도가 떨어지게 된다. 이러한 상황을 “사용자 피로도가 증가한 것”이라고도 하는데, 이는 곧 랭킹-필터링과 연결된다.

랭킹과 필터링

추천을 하는 아이템에 있어서 랭킹, 필터링은 결국 같은 이야기다. 이것이 무슨 의미일까?

‘동일한 카테고리상의 아이템만 연결한다’는 가벼운 필터링이 있지만, ‘이미 유저가 충분히 알고있는 아이템은 제거한다’는 강한 필터링도 필요하다.

예를 들어, 유저가 이미 소비한 아이템을 계속해서 추천하게 되면 사용자의 피로도가 증가하게 되고, 해당 아이템의 랭킹 자체가 그 사용자에게는 무의미하게 된다.

따라서 해당 아이템과 같이, 자주 노출되거나 사용자가 이미 조회/구매한 아이템은 필터링하고,

유사한 아이템이나 다른 새로운 아이템의 우선순위를 더 높여 사용자 피로도를 최소화하고 만족도를 높히는 것이 중요하며,

그렇기 때문에 추천 알고리즘의 커버리지는 매우 중요한 역할을 한다.