지능이라는 이름의 게임(10): 집단지능과 블록체인(2)

초기에 아마존 웹사이트는 전문가들이 작성한 서평과 추천을 게시했다. 그 서평과 추천은 인기가 있었고 책 판매에 상당한 성과를 가져왔다. 그러나 그런 방식의 효과에 만족할 수 없었던 제프 베조스(Jeff Bezos)는 고객들 자신의 구매 선호를 기반으로 돌아가는 알고리즘을 개발했다. 오래지 않아 알고리즘에 의한 추천은 사람에 의한 추천을 완전히 대체하였다(Mayer-Schönberger & Cukier, 2013).

아마존의  책 추천에는 품목-대-품목 협업 필터링(Item-to-item collaborative filtering)이라는 알고리즘이 사용된다. 그것은 기존의 추천 시스템들이 지니고 있던 여러 가지 한계를 극복한 것이었다(Linden et. al., 2003).

예컨대 전통적인 협업 필터링(traditional collaborative filtering)은, 고객들 사이의 상관성(흔히 코사인 유사도를 사용한다)을 구해둔 다음, 어떤 고객이 웹사이트을 방문하면, 그 고객과 가장 유사한 몇 명의 고객들을 추려서 그들이 가장 많이 구입했거나 선호하는 상품을 추천하는 방식이다. 고객들 사이의 상관성은 고객들의 상품 구매 기록과 상품 평가 기록을 가지고 계산한다. 이 알고리즘은, 규모가 작은 웹사이트에서는 그런대로 잘 작동하지만 고객의 숫자가 1천만 명을 넘고 상품의 종류가 1백만 가지를 넘어서면 막대한 컴퓨팅 비용을 초래하는 여러가지 문제가 대두된다(Linden et. al., 2003: 76-77).

전통적인 협업 필터링처럼 군집 모형(cluster models)도, 웹사이트를 방문한 고객에게 유사 고객들(similar customers)의 선호를 기반으로 상품을 추천한다. 이 알고리즘은, 고객들을 많은 그룹들로 세분해 둔 다음, 새 고객이 방문하면 그를 그 그룹들 중 하나 혹은 몇 개로 분류한다. 그룹들은 군집화 알고리즘이나 비지도학습 알고리즘을 사용해서 생성된다.

군집 모형은 전통적인 협업 필터링에 비해 큰 규모의 웹사이트에서도 효율적으로 작동한다. 그러나 이 알고리즘은 전체 고객들의 정보 대신 제한된 수의 그룹들의 정보만으로 추천하기 때문에 추천의 정확성이 떨어지는 문제가 있다(Linden et. at., 2003: 77).

이 알고리즘들과는 달리 검색 기반 방법(search-based methods)은,  어떤 고객의 상품 구매나 평가 기록에 근거해서 유사한 상품을 추천한다. 즉, 고객에게 그가 구매했거나 긍정적으로 평가한 컨텐츠의 동일한 저자, 작가, 감독, 장르 등의 인기 상품을 추천하는 것이다. 이 방식은 고객의 구매나 평가 기록에 포함된 상품이 소수일 때는 잘 작동하지만 그 숫자가 크게 늘어나면 그러한 상품들을 추천하는 것이 현실적으로 불가능해진다(Linden et. al., 2003: 78).

아마존의 품목-대-품목 협업 필터링은 고객들의 경험 데이터를 이용하되, 그것을 상품들 사이의 상관관계로 전환해서 사용한다. 설명을 단순화하기 위해 아마존에 네 권의 책(A,B,C,D)만 있고 사용자가 두 명(사용자 1, 2)만 있다고 하자.

만약 새로운 방문자(사용자 3)가 A라는 책을 보았다면 그에게 어떤 다른 책을 추천하면 좋을까? 아마존의 추천 엔진은 다른 사용자들의 책 탐색 기록 정보를 이용해서 A와 가장 상관성이 높은 책 B와 C를 추천한다.

이 그림은 Software Programming blog의 How does the Amazon recommendation system work?을 손질한 것임.

이 과정을 수학적으로 설명해 보자. <그림 1>에서 사용자 1은 [B, C, B] 순으로 검색했고, 사용자 2는 [C, A, B] 순으로 검색했다. 이 정보를 가지고 품목-대-품목 행렬을 구하면 우측의 상단과 같다. 이 행렬을 가지고 두 벡터(vector) 끼리의 코사인 유사도(Cosine Similarity, CosSim)를 구한다. 아래 식에서처럼 두 벡터의 내적(inner product)을 두 벡터의 노름(norm, 벡터의 크기)의 곱으로 나누어 코사인값을 구하면 된다.

위 식에서 보듯이 두 벡터의 내적은 두 변수값의 곱()의 합이고,  벡터의 노름은 각 변수값의 제곱 합(, )의 양의 제곱근이다.

이렇게 구한 유사도는 –1에서 1까지 값을 갖는다. 코사인 유사도 –1은 두 벡터가 서로 완전히 반대 방향인 경우, 코사인 유사도 1은 두 벡터가 완전히 방향이 같은 경우, 그리고 코사인 유사도 0은 두 벡터가 서로 독립적인 경우를 가리킨다. 정보나 책의 검색에서 빈도가 음의 값을 가질 수 없으므로 코사인 유사도는 0에서 1까지의 값을 갖는다.

위의 경우 아마존의 검색 엔진은 책 A와 코사인 유사도가 가장 큰 책 B와 C를 추천한다. 즉, 아마존 검색 엔진은 사용자가 누구인가에 관계없이 책들의 상관성만 가지고 책을 추천한다.

책들 사이의 상관성은 오프라인에서 이미 계산해 두고 있기 때문에 아마존은  고객들에게 책을 비롯한 수많은 상품들을 더욱 빠르고, 더욱 정확하게 추천할 수 있다. 품목-대-품목 협업 필터링은 고객들의 구매, 클릭, 평가 등의 경험을 취합하여 온라인 상품 구매에서 고객들이 안고 있는 불확실성 문제를 해결하는 집단지능인 것이다.

단시간 내에 전세계 검색 시장의 최강자로 떠오른 구글(Google.com)의 검색엔진도 집단지능의 흥미 있는 사례이다. 다음 포스팅에서는 내친 김에 구글 검색 엔진의 원리도 살펴보자. (윤영민, 2018-05-12)

참고 문헌

Mayer-Schönberger,  Victor, & Kenneth Cukier. 2013. Big Data: A Revolution that will transform how we live, work, and think. Boston: An Eamon Dolan Book.

Linden, Greg, Brent Smith, & Jeremy York. 2003. “Amazon.com Recommendations: Item-to-item collabrative filterning.” IEEE Internet Computing, January-Feburary: 76-80.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.