데이터로 추천하다

추천을 하는 가장 합리적인 방법은 무엇일까요? 혹은 우리가 구매욕을 느낄 때 어떤 방식의 추천을 받았을까요? 가장 먼저 떠오르는 방법은 '나와 비슷한 사람이 좋아한 상품'일 것입니다. 여기서 상품은 물건일 수도 있고, 무형의 콘텐츠일 수도 있습니다.

 

사람은 자신에게 익숙한 것에 끌리기 마련이라, 나와 비슷한 사람을 정의하고 이들의 구매 내역을 바탕으로 추천한다면 구매자가 수용할 가능성이 높아집니다. 친구가 '좋아요'를 누른 상품에 더 관심이 가고, 이미 구매한 옷과 상당히 비슷한 의류를 구매한 경험도 비슷한 맥락입니다.

 

이를 협업 필터링CF, Collaborative Filtering이라고 하는데요. 대표적으로 사용자 기반과 상품 기반으로 구분합니다. 사용자로부터 얻은 사전 정보를 토대로 상품이나 콘텐츠를 추천하는 기법으로, 환경 센서에서 발생한 데이터에 기반하여 광물을 탐색하거나 금융 데이터를 통한 상품 추천에도 적용됩니다.

선호도 행렬 평점 예시협업 필터링에는 행렬과 유사도라는 개념이 있는데, 사용자 행과 상품 열로 이루어진 '선호도 행렬'을 사용합니다. 선호도 행렬 안에는 사용자가 어떤 상품에 평점을 줬는지, 좋아요를 눌렀는지가 입력됩니다. (좋아요를 누를 경우, 1과 0으로 표기됩니다.) 사용자와 상품이 너무 많은 경우에는 연산의 편의성을 위해 '행렬 분해'라는 방법을 이용해 사용자 행 혹은 상품 열만으로 이뤄진 행렬 두 개로 분해해 사용하기도 합니다.

 

유사도는 서로 다른 두 사용자 혹은 상품의 유사성을 나타내는 숫자입니다. 코사인 유사도Cosine similarity라는 개념이 자주 사용되는데요. (수학적인 내용을 자세히 알고 싶은 분은 코사인 거리를 이용한 코사인 유사도 설명을 참조하시기 바랍니다.) 비슷한 사용자를 찾기 위해서 사용자 행으로만 이뤄진 행렬을 이용해 유사도를 계산하고, 상품도 같은 방식으로 계산합니다.선호도 행렬 예시에서 구한 사용자 유사도 평가 예시유사도는 숫자로 표현되지만 '히트맵'이라는 시각화 자료를 이용하면 수월하게 인사이트를 얻을 수 있습니다. 아래의 히트맵에서는 파란색이 진할수록 유사한 사용자를 의미합니다. 코사인 거리가 0에 가까울수록 높은 유사도를 가리킵니다.

 

히트맵에서 색깔은 사용자 A와 사용자 A, 사용자 B와 사용자 B, 사용자 C와 사용자 C의 거리가 가까운 정도를 표현합니다. 색이 진할 경우 더 가깝습니다. 따라서 사용자 A와 사용자 C가 가깝고, 사용자 B는 사용자 A보다는 사용자 C에 더 가깝다는 사실을 알 수 있습니다.
사용자 유사도 히트맵 시각화. 색이 진할수록 유사도가 높다. 각각의 사용자는 자기 자신과 가장 유사하다.

 

사용자 기반 협업 필터링

데이터가 적고 변경이 자주 일어나는 경우 사용하며, 유사도를 실시간으로 계산하는 '사용자 기반 협업 필터링'은 다음과 같은 과정을 거칩니다.

1. 사용자 행-상품 열로 이루어진 선호도 행렬을 만든다.
2. 각 사용자가 새로운 사용자와 얼마나 비슷한지 유사도를 계산한다.
3. 가장 유사한 사용자를 뽑는다.
4. 가장 유사한 사용자들이 구매한 상품에 매긴 평점 평균을 구한다.
5. 가장 점수가 높은 상품을 추천한다.

사용자 기반 협업 필터링은 새로운 사용자가 등장할 때마다 이미 저장된 다른 사용자와의 유사도를 계산합니다. 그리고 가장 유사한 몇 명의 사용자가 구매한 상품 중 평점이 높은 상품을 선별해 추천하죠.

 

예를 들어 의류 쇼핑몰 웹사이트에 방문하는 순간, 지난달에 내가 구매하고 높은 점수를 주었던 청바지를 선호한 사용자 집단이 선별됩니다. 그리고 그들이 구매한 내역 중 평점 평균이 가장 높은 새로운 상품을 추천받습니다.

 

하지만 이 방법은 사용자가 한꺼번에 많이 접속하는 서비스에서는 적합하지 않습니다. 매번 새로운 사용자가 나타날 때마다 기존 사용자 집단과의 유사도를 계산해내야 하기 때문인데요. 선호도 행렬은 서버 자원을 많이 차지해서 어떤 상품이 소위 대박이라도 치는 날에는 서버가 중단될 위험이 있습니다.

 

상품 기반 협업 필터링

데이터가 많고 변경이 자주 일어나지 않는 경우 사용하는 '상품 기반 협업 필터링'은 다음과 같은 과정을 거칩니다.

1. 선호도 행렬을 토대로 각 상품이 서로 얼마나 비슷한지 유사도를 계산해 저장한다.
2. 각 상품에 대해 가장 유사한 상품을 뽑는다.
3. 각 사용자에게 (이미 구매한 상품을 제외하고) 가장 유사한 상품을 추천한다.

상품 기반 협업 필터링은 상품 간의 유사도를 이용합니다. 비슷한 상품에 대한 정보를 미리 계산하고 각 사용자가 추천받을 유사한 상품을 저장해두기 때문에 많은 사용자가 유입되어도 서버 문제없이 정상적으로 추천할 수 있습니다.

 

의류 쇼핑몰의 사례를 더 자세히 살펴보겠습니다. 지난달에 구매한 리바이스 청바지가 무척 마음에 들어 높은 평점을 준다면 의류 쇼핑몰 서버 컴퓨터에서는 다음과 같은 일이 일어날 것입니다.

 

우선 추천 알고리즘이 선호도 행렬을 하나씩 읽으며 리바이스 청바지와 비슷한 청바지를 뽑아 놓습니다. 이 과정에서는 사용자 기반 협업 필터링처럼 유사한 사용자 평점이 중요한 기준으로 작용합니다. 사용자가 의류 쇼핑몰에 다시 접속했을 때 미리 뽑아 놓은 청바지를 추천합니다. 이미 구매한 제품은 추천 리스트에서 빠지도록 설계되어 있습니다.

 

이상, 사용자 기반 협업 필터링과 상품 기반 협업 필터링의 작동법을 살펴보았습니다. 사용자가 만든 선호도 행렬과 이를 계산한 유사도가 중요하게 쓰이는 만큼, 이전 사용자가 평점을 남겨 놓지 않으면 추천이 제대로 진행되지 않는다는 한계가 있습니다.

넷플릭스 프라이즈: 트래픽 높이는 마법의 추천 알고리즘

넷플릭스는 협업 필터링의 기능을 혁신적으로 개선했습니다. 2006년 10월, 넷플릭스는 1억여 개의 익명으로 된 영화 평점 데이터를 공개하며 기존의 넷플릭스 영화 추천 알고리즘인 시네 매치Cinematch보다 10%가량 성능을 향상한 팀에게 100만 달러(약 11억 원)를 상금으로 지급하는 대회인 '넷플릭스 프라이즈'를 개최했습니다.

 

넷플릭스의 영화 추천 성능을 한 단계 끌어올린 이 대회는 데이터 공개 측면이나 상금에서도 무척 파격적이어서 데이터 마이닝, 머신러닝 등 각종 컴퓨터 관련 커뮤니티에서 큰 화제였습니다.

넷플릭스 프라이즈 최종 순위 차트 ©Netflix Prize

3년간 진행된 이 대회가 막바지에 이르자 불가능의 영역으로 여겨졌던 추천 알고리즘 개선이 두 팀에 의해 달성됐습니다. BellKor's Pragmatic Chaos라는 팀과 The Ensemble라는 팀인데요. 두 팀은 추천 알고리즘 평가지표인 RMSERoot mean squared Error*에서 동점인 0.8567을 기록, 이전 추천 알고리즘을 10.06%가량 향상하였습니다. 승리는 20분 먼저 제출한 BellKor's Pragmatic Chaos팀에게 돌아갔습니다.

* 평균 제곱근 오차. 모델이 예측한 값과 실제 나온 값의 차이를 다룰 때 사용하는 측도로, 정밀도 표현에 자주 쓰인다.

 

RMSE는 사용자가 실제로 준 기록과 알고리즘 결과를 예측하여, 틀린 예측에 대한 실제값과 예측값 사이의 차이를 구하고, 그것의 제곱값들의 평균에 루트(√)를 씌워 구한 값입니다.

 

예를 들어 선호도 행렬 사용자 A가 영화 <바람 바람 바람>에 5점, <지금 만나러 갑니다>에 평점 4점을 주었는데, 추천 알고리즘은 각각 1점, 0점으로 예측했다고 가정해봅시다. 그러면 RMSE는 √((5-1)2+(4-0)2)/2 = 4입니다. 넷플릭스가 초기에 기준으로 삼은 시네매치의 RMSE값이 0.9525였던 것을 고려하면, 방금 적용한 알고리즘은 무척 성능이 좋지 않다는 것을 알 수 있습니다. (RMSE 값이 적을수록 실제 평가와 예측 평가 사이의 차이가 줄어들어 추천 적중률이 높아집니다.)

 

넷플릭스 프라이즈는 논문*으로 추천 알고리즘의 발전을 언급하기도 했는데, 차트를 통해 사용자별 평균이나 영화별 평균을 이용해 구현한 경우 알고리즘 개선은 마이너스 수준이었고, 데이터 분산 정도나 피어슨 상관관계를 이용한 경우 당시 자체 추천 알고리즘인 시네 매치와 비슷한 수준의 성능이 나왔다고 말했습니다.

* 관련 자료: The Netflix Prize(2007) (출처: Netflix)

 

불가능해 보이던 10%의 벽을 깨질 가능성이 드러난 것은 특잇값 분해SVD, Sigular Value Decomposition라는 선형대수법이 주목받으면서부터인데요. 2006년 10월 4%대를 기록하던 성능 향상 수준은 2006년 12월까지 6%의 벽을 넘지 못했는데, 2006년 말 SVD를 적용하면서 6%의 벽을 넘었습니다. 넷플릭스 프라이즈가 진행된 3년에 걸쳐 아주 조금씩 성능 향상이 이뤄진 것입니다.

 

당시 우승을 거머쥔 넷플릭스 알고리즘은 모델 기반 협업 필터링으로, 기존의 협업 필터링 방식을 데이터 처리와 알고리즘을 통해 추천 기능의 강화를 꾀했습니다. 기존 사용자 혹은 상품 기반 협업 필터링이 선호도 행렬에서 추출한 사용자-사용자 간 혹은 상품-상품 간 유사성을 단순 거리 계산 방식으로 구하는 데 그쳤다면, 모델 기반 협업 필터링은 '자료 안에 내재한 패턴을 이용하는 기법'을 사용했습니다.

* 관련 글: 콘텐츠 추천 알고리즘의 진화 (출처: 한국콘텐츠진흥원)

 

롱테일 법칙

오프라인 상점에서는 자원이나 공간의 한계로 인해 사용자가 좋아할 것 같은 물건을 진열하는 큐레이터의 역할이 중요합니다. 상위 20%의 상품이 매출 80%를 차지하는 '파레토 법칙'을 예로 들 수 있습니다.

 

반면 온라인은 공간의 한계가 없지요. 지면으로 나가는 신문에서는 뉴스를 선별하고 편집하는 데스크의 역할이 중요하지만, 온라인 뉴스에서는 다른 전략이 필요합니다. 신문과 달리 온라인 기사는 거의 무제한으로 기사를 내보낼 수 있으니까요.

롱테일 법칙

롱테일 법칙과 추천 알고리즘의 중요성을 설명하는 대표적인 예로 조 심슨Joe Simpson의 <난 꼭 살아 돌아간다(원제:Touching the Void)>라는 책이 언급됐습니다.

 

당시 <와이어드>의 에디터였던 크리스 앤더슨은 "등산에 관한 이 책은 출판 당시에는 판매량이 많지 않았지만, 수년이 지난 후 <희박한 공기 속으로(원제:Into Thin Air)>라는 작품이 같은 주제에서 출판되자 다시 팔리기 시작했다."라며 "그 이유는 아마존닷컴의 추천이 몇몇 사용자에게 조 심슨의 작품을 추천해 주었고 긍정적 반응을 얻었기 때문이다."라고 보도했습니다.*

* 관련 기사: THE LONG TAIL (Wired, 2004.10.1)

인터뷰: 개인화 추천 플랫폼 데이블

여러 가지 머신러닝 기법이 발달하면서, 협업 필터링을 뛰어넘는 성능의 추천 알고리즘이 등장하기 시작했습니다. 추천 알고리즘으로 국내외에서 큰 활약을 하고 있는 스타트업 데이블은 협업 필터링을 사용하지 않습니다.데이블 홈페이지 ©DableSK플래닛 사내벤처로 시작한 데이블은 2013년, 11번가의 상품 추천 알고리즘인 '레코픽RecoPick'을 개발한 뒤 2015년에 새로운 데이블 추천 알고리즘을 가지고 독립했습니다.

 

창업 2년 만에 국내 30명, 해외 5명의 직원을 둘 정도로 성장한 데이블은 현재 뉴스 추천 알고리즘으로 국내 1,200개 언론사와 협업 중입니다. 2018년 4월 11일, 강남구 테헤란로 위워크 3층에서 데이블의 백승국 CFOChief Financial Officer를 만났습니다.

백승국, 데이블 CFO

이날 인터뷰에서는 데이블이 뉴스 추천 알고리즘에서 강점을 보일 수 있게 된 기술적 배경에 대해 물었습니다. 빠르고 반복적인 실험과 보완, 그리고 테크 스타트업으로서 엔지니어 중심의 근무환경에서 그 요인을 찾을 수 있었습니다. 백 CFO는 협업 필터링의 한계부터 짚었습니다.

협업 필터링은 몇몇 분야의 추천 알고리즘에서 이미 한계를 드러냈습니다. 특히 뉴스 추천에서는 더더욱 그래요. 일단 대규모 플랫폼에서 성능이 떨어졌고, 선호도 행렬을 필요로 하는 만큼 평점을 매길 수 없는 뉴스의 특징과도 잘 맞지 않았습니다. 맞춤화된, '꼭 사고 싶은' 상품과 달리 모두가 보는 기사가 있고 그렇지 않은 기사가 있기 때문입니다.

백 CFO는 결과를 보고 알고리즘 성능을 향상하는 방법으로 'A/B 테스트'를 강조했습니다. A/B 테스트는 사용성을 판단하는 '대조 실험'입니다. 동시에 서로 다른 디자인이나 성능을 사용자들에게 제공한 뒤 더 많은 클릭을 얻는 것을 채택합니다. 이 테스트의 중요성을 인지한 데이블은 창업 초기부터 개발자가 아닌 사람들도 쉽게 A/B 테스트를 할 수 있는 환경을 구축했습니다.

저희가 만든 추천 알고리즘은 특정 알고리즘이라기보다 머신러닝 알고리즘, 디자인, 텍스트 등을 종합한 결과물입니다. A/B 테스트를 반복하면서 실험적 접근을 하고 있는데요. 항상 의외의 결과를 얻으며 알고리즘 성능 향상의 아이디어를 얻습니다.

예를 들어 어떤 사용자가 어떤 기사를 보고 있는 상황에서 새로운 뉴스를 추천할 때 사용자가 이미 보고 있는 기사의 주제를 포함할 것인지 아닌지의 문제가 발생할 수 있습니다. 그럴 때 실험을 해보면 됩니다.

저희의 실험 결과, 현재 보고 있는 주제를 포함한 기사를 추천해주는 게 나았어요. 또 상반된 카테고리의 기사를 추천했더니 오히려 클릭률이 27%나 높아지는 것을 확인할 수 있었습니다.

추천 알고리즘이 진화하는 방식,
어떤 천재성이 아니라
끊임없는 실험에서 비롯되죠
현재 데이블에는 15명의 엔지니어가 일하고 있습니다. 웹 개발자, 데이터 엔지니어, 데이터 분석가 등으로 이뤄졌고, 이들 대부분은 컴퓨터공학 관련 전공자입니다. 데이블은 검색엔진을 만들던 사람들이 뭉쳐 만든 스타트업입니다. 방대한 사용자를 대상으로 삼아 평가하고, 실시간으로 대응하는 경험은 자연스레 추천 알고리즘 개발로 이어졌습니다.

 

추천 알고리즘 개발자만 200~300여 명 있는 넷플릭스나 유튜브, 혹은 20~30명의 추천 알고리즘 개발자가 있는 국내의 이커머스 업체들과 직접 경쟁하거나 협업하기보다는 기술 격차가 큰 언론사를 타깃으로 삼았습니다. 쇼핑몰의 자체 상품이 아니라 어떤 플랫폼에 끼워 넣어도 추천이 가능한 'iframe 위젯' 형태로 개발을 시작했습니다. iframe은 어떤 웹 문서의 영역 안에 외부의 웹 문서를 끼워 넣을 수 있는 방법입니다.

 

문제는 수익이었습니다. 뉴스 추천 알고리즘 자체를 언론사에 판매하려는 시도가 최초이다 보니, 국내에서 관련 사례를 찾아보기 어려운 상황이었습니다. 그래서 찾은 방법이 타불라의 'Recommended from the web', 즉 광고 기사 추천이었습니다. 

 

데이블과 계약을 맺은 광고주들의 광고 기사 몇 개가 'AD' 마크를 붙인 채 개인별 추천 기사와 함께 나갑니다. 물론 광고 기사 역시 추천 알고리즘의 영향을 받습니다. 사용자가 광고를 누르면 데이블과 언론사가 수익을 나누게 됩니다. 언론사는 그동안 사용자에게 외면받았던 배너나 팝업 광고에서 자유로워질 수 있었고, 데이블은 입소문을 타고 빠르게 언론사와 파트너십을 맺었습니다.

수용자 맞춤 정보가 필요한 시대,
추천 알고리즘의 가치는 무궁무진합니다

개인 맞춤형 추천 알고리즘으로 공급자 중심에서 수용자 중심으로 정보를 구성하고 편집하는 방법이 바뀌었어요. 예전에는 검색이나 메뉴를 여러 번 클릭해서 정보를 찾았지만, 이제는 수용자에게 맞춰진 정보가 찾아오지요. 제3의 채널이 생긴 셈입니다.

아마존과 넷플릭스 매출 중 30~65%가 추천 상품에서 발생해요. 추천 알고리즘의 가치가 엄청나다고 보기 때문에 저희는 동남아 시장 진출도 준비하고 있습니다.