개인화 추천의 방법 - 고객 vs. 컨텐츠

2007. 3. 13. 17:05사는게 뭐길래/Data & Intelligence


고객을 이해할 것인가, 컨텐츠(상품)를 이해할 것인가?

'개인화된 추천'을 한다는 말은, 지금 웹 사이트를 이용하는 고객에게 '적합한' 컨텐츠나 상품을 노출시키는 것을 말합니다.

'적합한...'
즉... 고객이 뭔가 매력을 느낄만한, 관심을 가질만한, 구매할만한, 흥미를 느끼는... 등등

그렇다면, 고객이 좋아할만한 상품이나 컨텐츠를 골라내기 위한 '기준'은 무엇일까?


고객을 이해하자?

우선은... 고객의 취향을 시스템에서 파악하는 방법이 있을겁니다.
구체적인 방법은 여러 가지가 가능하겠지요.

고객이 좀 수고스럽게 느끼겠지만, 직접 자기가 좋아하는 것들을 설정하는 방식이 가장 단순한 방법일겁니다.
내가 좋아하는 상품의 종류, 가격대, 몇 개의 키워드, 브랜드... 등등을 설정하게 하는 방식이지요.
짐작이 가시겠지만 이 방법의 가장 큰 문제는 고객이 그런 수고를 잘 하지 않는다는 점입니다. 데이터를 입력하면 상품이나 포인트를 얹어 주는 당근책을 쓸 수도 있지만, 그만큼 비용을 감수하고 수집하는 데이터 치고는 그리 쓸만한 것을 얻기가 힘들기도 하고요.

그렇다면... 뭔가 제대로 해 보기 위해서는 시스템이 알아서 고객의 취향을 파악하기 위한 '분석'을 해 볼 필요가 있습니다.
고객들의 웹 사이트 이용기록(웹 로그)이나 구매내역을 분석해서 각각의 고객이 어떤 상품들을 좋아하는지, 주로 사용하는 검색어는 어떤 것인지, 언제 주로 구입을 하는지... 등등

하지만, 이 방법도 만만치는 않습니다.
분석하는데 걸리는 시간은 둘째치고라도 (사실은... 이게 만만치 않습니다. 수 많은 고객 한명마다 그런 데이터를 분석해 내는것이 여간 힘든게 아니죠.)
이렇게 열라게 분석을 했지만, 도무지 그 결과를 신뢰하자니 뭔가 꺼림직하다는 것이죠.

사이트를 많이 이용하고, 비교적 좋아하는 컨텐츠나 상품들이 일정한 테두리에 속하는 고객이라면 모를까... 이따금씩 들러서 그때 그때 필요한 것들을 이거 하나 저거 하나 사가는 고객들의 과거 이용 패턴은 그다지 쓸만하지가 못합니다.


고객군을 이해하자?

개별 고객을 이해하는 것은 너무 어렵습니다. 고객 개개인의 변덕도 심할뿐더러, 어느 정도 규칙성이 나타날만큼 많이 자주 특정하게 이용하는 고객들에게만 의미가 있습니다.

그렇다면, 고객들을 일정한 특성에 따라 그룹핑 해 보면 어떨까?
가령, 남자들은? 아님, 여자들은?
좀 더 세분화 해서, 20대 남자들은? 30대 남자들은? 18-23 여자들은? 24-29 여자들은? 이말3초 사람들은?

한 사람 한 사람의 성향을 파악하는 것보다는 덜 정밀해도 된다는 장점이 있으며, 한 사람 한 사람의 이용 내역은 그리 쓸만한 데이터가 없는 단편적인 것들일지 모르지만 그것들을 모아서 좀 더 큰 그룹으로 묶어서 본다면 대략적인 특성을 파악할 수 있를 것 같군요.
그리고, 가장 큰 장점은... 비록 지금 서비스를 이용하는 고객의 과거 이용 기록이 없더라도 그 고객의 나이와 성별만 알아도 대략적인 경향을 파악할 수 있습니다.

하지만... 정밀도가 떨어진다는 단점!
그냥 '금주의 베스트 셀러'를 제시하는 것보다는 나을 수 있지만, '20대 남자들에게 요즘 인기있는 책'을 추천한다고 해서 고객들의 구미를 얼마나 당길 수가 있을까요?
우리 사이트를 이용하는 고객들이 대개는 20대 남자들이므로 그들이 좋아하는 상품들의 비중을 높여야한다는 자료로는 유익하겠지만, 지금 서비스를 이용하는 23살의 홍길동에게 20대 남자들에게 인기 있는 책을 추천하는 것은 너무 일반적일 수 있습니다.
즉, 개인화의 정도가 낮아지는 아픔!


... 어려워...

고객을 이해하기는 참 힘듭니다.
앞서 언급했듯이 자주 많이 이용하고, 그러면서도 어느정도 일관성 있는 성향을 보이는 고객들이라야만 고객의 과거를 통해서 미래를 예측하는 것이 의미가 있습니다.

더구나 예측 결과가 고객의 개인적인 취향과 거리가 멀 경우에는 사이트에 대한 신뢰감을 떨어뜨릴 수 있다는 점도 무시할 수 없지요. (우리가 신발 가게에 갔을 때, "요즘 이거 많이들 신어요!"라면서 점원이 권해주는 신발이 내 취향이 아닐 때 그 점원이 만만해 보이는 이치랄까? ^_^)

실제 구현을 하는 입장에서는 수 많은 고객들에 대해서 정밀하게 분석하고, 그것을 관리하며, 실시간에 검색해서 제공하는 것에서도 많은 난관이 있을겁니다.


차라리 컨텐츠를 이해하자!

고객을 이해하기 어렵다면, 차라리 컨텐츠를 이해하는 것은 어떨까요?

쉽게 생각할 수 있는 예로, 지금 현재 유난히 인기 있는 컨텐츠나 인기 있는 검색어, 최근에 많이 팔리는 상품 같은 것들처럼 어떤 고객인지는 생각하지 않는 것입니다.

하지만, 이 정도를 가지고 추천하기에는 부족하고... 좀 더 그럴싸한 것들을 한 번 생각해 볼 수 있습니다.
카메라 + 렌즈, 휴대폰 + 고리, 프랭클린 플래너 + 속지 처럼 함께 붙어다니는 것들이라면 좀 더 좋은 추천을 할 수 있습니다.
아니면, 같은 감독이 만든 영화라든가 같은 가수의 앨범이나 노래, 같은 작가가 쓴 책들도 있을 수 있습니다.

그러나... 이것도 좀 부족합니다.
마치 '20대 남자들에게 요즘 인기 있는 책'과 같이 정밀하지 못한 느낌이 듭니다.
반면에, 애초부터 고객의 취향을 고려하지 않는 방식이기 때문에 고객 입장에서 생뚱맞다고  느껴질 것 같지는 않습니다.

좀 더 세밀하게... 조금 더 복잡한 분석을 적용하면 한 층 나아집니다.

검색 내역을 분석하여 어떤 검색어를 통해서 어떤 컨텐츠를 보거나 구입했는지 알아 낸다든가, A라는 상품을 사는 사람들이 함께 사는 상품 B나 C를 찾아 낸다든가, A-B-C라는 일련의 상품 상세정보를 본 사람들이 궁극적으로 구매한 상품은 어떤 것이라든가...

각각의 상품이나 컨텐츠는 개별 고객에 비해서 더 많은 이용/판매 기록을 가지고 있으며, 더 객관적이고, 덜 변덕스럽습니다.
1천명의 고객에 대해서 수작업으로 성향을 파악하는 것은 1천명에게만 적용할 수 있는 결과지만, 10개의 상품들에 대해서 특성을 파악한다면 수백만 고객들에게도 적용을 할 수 있습니다.
별도의 분석 작업 없이도 성향을 파악하는데 도움이 될만한 고객들의 속성의 종류는 몇 개가 안되지만, 컨텐츠나 상품들은 등록될 때부터 이미 많은 값들이 입력됩니다.
그리고, 서비스되는 컨텐츠나 상품들에 대해서는 꾸준히 전문적인 손길이 가해지고 다듬어집니다.

고객의 성향을 제대로 분석하고, 또한 그것을 바탕으로 제대로 예측하는 것이 궁극의 목표겠지만... 그것이 어렵다면... 고객을 이해하는 대신 컨텐츠나 상품을 이해하는 쪽의 접근이 매우 유용한 방법을 제공할 수 있을 것 같습니다.

물론, 고객에 비해서 분석한 결과가 더 명료한 특성을 가진다는 것을 의미할 뿐, 컨텐츠나 상품 사이의 관계를 제대로 파악하는 문제가 쉬운 것은 절대 아닙니다.


아마존닷컴을 주목하는 이유

아마존의 추천 기능에서 주목할 부분은 바로 이 부분입니다.
이해하기 어려운 고객에게 매달리는 대신, 컨텐츠나 상품을 이해하는 방식이 아마존닷컴 추천의 가장 특징적인 접근방법이 아닌가합니다.

예를 들어, 상품들 간의 유사성(Similarity) 관계를 잘 파악하고, 그것을 적극 이용하는 추천 방식 말입니다.

그러면서... 그렇게 해서 생길 수 있는 '덜 개인화된' 서비스의 문제점을 서비스 시나리오로 보완을 했습니다.
예를 들어, '지금 고객이 상세정보를 보고 있는' 상품과 유사한 상품을 추천하는 방식이지요. 그 근간은 개별 고객과는 상관이 없는 상품 사이의 유사성 데이터를 이용하는 것이지만, 결과적으로는 '개인화된 추천'을 제공합니다.


짬뽕 방식은?

고객을 이해하는 대신 컨텐츠나 상품을 이해하는 접근은 현실적인 해답을 제시해 준다는 점에서 매우 구미가 당기는 방법입니다.
그러나, 고객을 이해하는 접근 방법의 장점을 간과할 수도 없습니다.
예를 들어, 새로운 상품이나 기획 상품이 있을 때, 그것을 좋아할만한 고객들에게 노출시킬 수 있습니다.
단, 자주 이용하며 일정한 경향성을 가지는 고객군을 찾아낼 수 있다면 말입니다.
다행히도 고객군을 추출하는 방법들은 그동안 온라인 비즈니스 분야에서 꾸준히 노력한 분야이며, 많은 비용과 시간, 사람을 투자해서 상당량의 고객 데이터를 구축한 곳들이 꽤 됩니다.

결국은... 보다 정교하고 정확한 고객군을 추출하고
고객군별 특성과 서비스 시나리오에 따라 고객 성향 위주의 추천을 할 것인지, 고객군 특성에 기반한 추천을 할 것인지, 고객은 배제한 채 컨텐츠나 상품간의 관계에 기반한 추천을 할 것인지를 그때 그때 상황에 맞게 선택적으로 사용할 수 있다면 좋을 것 같습니다.

예를 들어, 고객 개인별 성향이 비교적 명료한 고객군에 대해서는 고객 개인별 성향을 고려한 추천을 제공하고, 고객 이력이 부족하거나 성향이 불분명한 고객군에 대해서는 고객군의 집단적 성향을 바탕으로 추천을 제공합니다.
그리고, 상품 상세보기, 검색 등과 같이 고객의 관심사가 표면적으로 확실히 나타날 때는 고객이 현재 관심을 가지는 컨텐츠를 기준으로 그와 연관성이 있는 것을 추천합니다. (만약 해당 고객의 성향이 분명한 그룹이라면, 연관성이 있는 상품 중에서도 고객의 취향에 맞는 상품들만 추려낼 수도 있습니다.)

...

고민의 핵심은...

특성있는 고객군들을 어떻게 추출할 것인가?
고객 개인별 성향을 어떤 기준으로 어떻게 찾아내고 관리할 것인가?
컨텐츠나 상품간의 유사성을 어떤 기준으로 어떻게 찾아내고 관리할 것인가?
수 많은 고객과 컨텐츠 속에서 이러한 작업을 제한된 시간과 자원으로 처리 가능한가?
이렇게 추출된 고객과 컨텐츠에 대한 분석 결과를 어떻게 추천 가능한 형태로 모델링할 것인가?
여러가지 다양한 추천 방법과 서비스 시나리오를 어떻게 구현할 것인가?

등등등...

하나씩 하나씩... 저희가 생각하는 방법들을 시간나는 대로 함께 나누도록 하겠습니다.