추천 알고리즘의 모든 것
유튜브부터 네이버, 쿠팡, 인스타그램까지. 우리가 매일 사용하는 앱 서비스에는 '나를 위한 추천'이 이어집니다. 아마존의 경우 매출의 35%가 추천에서 발생하고 있죠. 가끔 내가 좋아하는 영상과 상품을 나보다 더 잘 아는 것 같아 소름 돋기도 합니다. 나의 클릭, 검색 기록 등 여러 데이터를 활용해 추천하는 것은 알겠는데, 우리 삶에 스며들고 있는 추천 알고리즘의 진짜 원리는 무엇일까요? 간략하게 추천 알고리즘의 동향을 살펴보려고 합니다.
가장 간단한 추천은 인기상품, 베스트셀러 등 가장 잘 팔리는 상품 리스트를 모두에게 동일하게 보여주는 방식입니다. 하지만 활용 가능한 데이터가 늘어나고, 인공지능(AI) 기술이 발전하며 '개인화된 추천'을 하는 것이 가능해졌습니다. 이제 추천은 '사용자가 좋아할 아이템을 예측'하는 문제를 푸는 것과 유사하다고 볼 수 있습니다. 사용자가 팔로우할 가능성이 큰 인플루엔서를 추천해주고, 사용자가 클릭할 가능성이 큰 광고를 추천하고, 사용자가 구매할 것 같은 상품을 노출시키는 것이죠.
추천 알고리즘을 만들 때 광범위하게 쓰이는 방식이 사용자 간의 유사도에 기반해 아이템을 추천하는 '협업 필터링 모델'(Collaborative Filering Recommenders)입니다. 마켓컬리에서 상품을 추천한다고 가정해볼게요. 우선은 제가 구매한 상품을 다 모으는 방식으로 '아이템에 대한 사용자의 선호'를 수집합니다. 각 사용자가 어떤 상품을 선호하는지 다 모으면, 두 가지 방식으로 추천이 가능합니다. 첫 번째는 저와 JAY가 구매패턴이 유사하다고 계산되었을 때, JAY가 구매한 상품 중 제가 아직 구매하지 않은 '냉동 피자'를 추천해주는 방식이에요. 유사한 유형의 고객과의 비교를 통한 추천입니다. 두 번째는 제가 사이다를 샀을 때, 사이다와 함께 구매하는 경우가 많은 '콜라'를 추천해주는 방식입니다. 이 방식에서 신기한 점은 콜라와 사이다가 '탄산음료'이며 '코카콜라' 제품이라는 점 등 아이템의 특성은 추천 알고리즘에 반영되지 않는다는 것입니다. 과거의 데이터만으로 판단이 이루어지죠. 사이다와 식용유가 함께 구매된 적이 많다면 사이다와는 아무 관련이 없는 식용유를 추천해줄 수도 있는 것입니다. 여기서 문제는 아직 아무도 구매한 적이 없는 신제품은 추천 결과에 나오지 않는다는 점입니다.
그래서 등장한 방식은 아이템의 속성이 유사한 아이템을 추천해주는 '콘텐츠 기반 모델'(Content-Based Recommenders)입니다. 예를 들어, 제가 <승리호>라는 영화를 봤다면 같은 SF 장르이거나, <승리호>의 감독이 제작했거나, 송중기와 김태리가 나온 영화를 추천해주는 방식이죠. 쉬워 보이지만, 아이템의 속성을 나타내는 데이터를 확보하기 어렵다는 문제가 있습니다. 유튜브 영상만 해도 개별 영상이 어떤 주제를 다루는지, 어떤 분위기의 영상인지 등을 특징을 하나씩 추출하는 것은 불가능에 가깝습니다. 콘텐츠를 설명할 수 있는 '태그'를 효과적으로 붙이는 것이 추천 알고리즘의 만족도에 큰 영향을 미치기 때문에, 넷플릭스는 영상 콘텐츠에 태그를 전문적으로 붙이는 태거(tagger)만 50명 이상 고용하고 있죠.
최근에는 협업 필터링 모델과 콘텐츠 기반 모델의 단점을 보완하기 위해 두 모델을 섞어서 추천 정확도를 높이고 있습니다. 이 방식은 하이브리드 추천 모델(Hybrid Recommenders)로 불립니다.
추천 알고리즘을 만들었다면, 이를 측정할 수 있는 평가 지표도 필요하겠죠? 인스타그램에서 포스팅이 추천되는 상황을 예시로 들어볼게요. 저에게 추천된 포스팅 중 제가 '좋아요'를 누른 포스팅이 많을수록 좋은 추천이겠죠? 또, 제가 실제로 '좋아요'를 누른 포스팅 중 저에게 추천된 항목의 비중이 높을수록 좋은 추천이라고 말할 수 있을 것입니다. 이들을 나타내는 지표가 각각 정밀도(precision)와 재현율(recall)입니다.
사실 이러한 단순한 지표로 '좋은 추천 시스템'의 조건을 온전히 표현하기는 어렵습니다. 추천 시스템을 평가하기 위해서는 아래 6가지 지표를 충분히 고려해야 한다고 말하기도 하죠.
coverage: 좋은 추천 시스템은 많고 다양한 아이템을 추천해줘야 합니다.
popularity: 추천 시스템은 무조건 인기 있는 아이템을 추천하는 것보다는 성능이 좋아야 합니다.
novelty: 기존에 알려지지 않은 새로운 아이템이 추천 결과에 나타나야 합니다.
personalization: 개인별로 추천 결과가 아주 달라야 합니다.
serendipity: 처음 본 참신한 아이템이 예측하지 못한 방식으로 추천 결과에 나타나야 만족도가 높아집니다.
diversity: 한 명의 개인에게 추천되는 아이템이 다양해야 합니다.
사용자 개인에게 필요한 상품과 정보 등을 알아서 찾아준다는 점에서 추천 알고리즘은 매우 유용한 기술입니다. 기업도 매출과 조회 수 등 원하는 지표를 극대화하기 위해 추천 알고리즘을 활용하고 있죠. 하지만 동시에 사용자들이 자신이 선호하는 정보만 계속해서 소비하게 돼 고정관념이 강화된다는 '확증 편향' 현상에 대한 우려도 커지고 있습니다. 알고리즘이 우리의 삶에 큰 영향을 미치고 있는 요즘, 알고리즘과 인간이 함께 살아가기 위한 고민도 필요한 것 같습니다.
BYTE 뉴스레터 구독하기 : http://mydailybyte.com/