Home 추천 서비스를 말할 때 내가 하고 싶은 이야기
Post
Cancel

추천 서비스를 말할 때 내가 하고 싶은 이야기

데이터를 다루는 사람이고, 주로 서비스의 데이터 분석을 하다 보니 데이터를 서비스에서 직접적으로 활용하는 것에 대해서도 항상 고민을 했어야 했고, 그러다보면 ‘추천’ 이야기를 심심찮게 듣게 된다. 아니, 사실 실제로 다루기도 했던 것도 사실이다.

요즘, ‘추천’에 대한 이야기를 한꺼번에 여기저기서 듣는다. 서비스에 추천을 추가하려 한다고 한다. 다들 그냥 둘러보는 것이 아니라 굉장히 적용을 하고 싶고 하려고 하는 경우고, 이유나 상황이나 생각은 굉장히 비슷해서 어디에도 속해있지 않는 나는 뭐라 할 말은 없지만 다소 안타까운 것은 어쩔 수 없다.

사실 굉장히 당연한, 너무나도 투명하게 들여다 보이는 추세다. 요즘에는 데이터에 이어서 AI가 각광받는 시대고, 이를 여기저기서 써야겠다고 생각하고 있고, 갑자기 세상에 없던 무언가를 만들어내는 것보다는 기존 서비스에 이를 접목시키는 것이 훨씬 빠를 것이고, 어떻게 접목시켜야 할까 생각해 보면 가장 빠르고 쉽고 간편하고 대충 써먹을 만하게 생각나는 기능이 ‘추천’일 것이다. 다만 그러다보니 너무 손쉽게 마구잡이로 접근하는 것은 아닌가 우려가 될 때가 있다.

추천이란 무엇인가.

그래서, 대체, 추천이란 무엇인가.

추천. 사전적 의미로는 ‘어떤 조건에 맞는 대상을 책임지고 소개함’ 이라고 되어 있다가을하늘 아닙니다. 수많은 쇼핑몰이나 넷플릭스 같은 미디어 서비스에서 이미 사용하고 있는 기능으로, 고객님이 살 것 같은 것, 좋아할 것 같은 것을 사전에 제시해 줌으로써(큐레이션) 고객들의 탐색에 소모되는 에너지를 줄이고 편리성을 도모하여 서비스 이용 정도 및 호감도를 올리고자 추가한다. 대부분의 서비스의 경우 필수적이라기 보다는 어느 정도 서비스가 궤도에 오른 후 사용자 편의성 개선을 도모하고자 추가된다.

추천의 범위는 굉장히 넓다. 지면 형태로 보여지는 대부분의 인터넷 기반 서비스의 경우, 첫 화면에서 사용자에게 주어지는 대부분의 선택지는 추천이라고 보아도 된다. 첫 화면의 뉴스 기사, 오늘의 이벤트, 눈에 잘 띄는 광고 지면, 우수 채널 같은 것들 말이다.

하지만 이런 ‘추천’이 그들이 원하던 추천은 아니리라. 기존에 계속 하고 있던 ‘추천’은 대부분 너무 일상에 녹아 있어서 사람들이 ‘추천받는다’라는 생각을 하지 않고, 사용자들에게도 어떤 차별성을 보여줄 수 없으며 이런 것으로는 새로운 기술력을 뽐낼 수 없으니까. 그래서 흔히 데이터나 AI와 결부되어 이야기를 할 때의 ‘추천’이란 말에는 ‘개인화’, ‘자동’이라는 말이 생략되어 있다. 대부분이 생각하는 ‘추천’은 ‘각각의 사람들에게’ 꼭 들어맞는 것을 ‘기계 학습 알고리즘’을 통해서 제시하는 것이다. 이런 기능은 사용자들이 당연히 좋아할 수밖에 없을 것이라고 생각하고, 사용자가 ‘원하는 것’, ‘좋아하는 것’을 추천해 줄 수 있을 것이라고 생각한다.

추천, 이해하고 있습니까?

우선 이 정의의 항목에 대해서 살펴보자. 일단, 조건에 맞는 대상을 책임지고 소개하기 위해서는 각각의 사용자들에게 ‘꼭 들어맞는 것을’ 기계가 ‘알고리즘’을 통해 ‘학습’할 수 있는 기반, 데이터가 필요하다.

요즘의 (딥 러닝으로 대표되는) 기계 학습 알고리즘의 성능에 대해서는 이견이 없다. 그 알고리즘을 충분히 학습시킬 수 있다는 전제만 보장된다면 말이다. 이렇게 학습시키기 위해서는 그만큼 충분한, 균일한 환경에서 생성된 데이터와 테스트가 가능한 일관적인 환경이 필요하다.

프로그래밍과 기계 학습은 재료의 유무에서부터 분명히 차이가 난다는 것을 많은 사람들은 간혹 잊어버리고는 한다. 데이터는 프로그래밍과 달리 시간을 녹여 만드는 것이라는 것을 사람들은 역시 간과한다. 그리고 환경은 계속 변해서 이를 일정하게 가공하고 유지하는 것 또한 공수가 드는 일이라는 것도 마찬가지로 보려 하지 않는다.

그렇다면 그렇게 노래를 부르는 데이터가 우선 어떤 게 필요할까.

첫 번째로는, 당연히 사용자의 행태 데이터다. 사용자가 무엇을 사용하고 싶어할 지는 기본적으로 그 사용자가 기존에 무엇을 사용했는 지를 기반으로 한다.

그 다음으로는, 흔히 말하는 ‘사용자가 사용할 것 “같은” 것’을 보여주어야 하므로 각각의 아이템의 유사도를 측정할 수 있어야 한다. 이 때 필요한 것이 아이템 관련 데이터다. 흔히 ‘메타 데이터’라고도 불리는 어떤 속성에 대한 값들을 말하며, 카테고리 및 태그 등으로 나타낼 수 있다. 이에 대해서는 일부 자동으로 만들어내는 많은 방법들이 연구되고 있으나 기본적으로는 어느 정도 사람의 손을 탈 수 밖에 없다. 추천 시스템으로 유명한 서비스인 넷플릭스에서도 아이템에 수동으로 많은 정보를 넣는 것이 추천 성능을 높이는 데 주역이라고 이야기한 바가 있다.

사용하는 것과 좋아하는 것

또한 여기서 잠시 짚고 가고 싶은 것이 있다. 이들을 가지고 사용자가 좋아하는 것을 알 수 있을까? 불가능하다. 사용자가 사용한 것과 좋아하는 것은 100% 일치하지 않는다.

하지만 사용자가 좋아하는 것이 뭘까. 좋아하는 것 자체가 무슨 의미가 있을까.

‘추천’의 목적은 사용자가 ‘좋아하는’ 것을 추천한다기 보다, 사용자가 해당 서비스에서 ‘무엇을 사용할 지’를 찾아서 탐색에 들이는 리소스를 줄여주는 것이라고 보는 편이 보다 정확하다. 그래서 간혹 ‘좋아하는 것을 보여준다’는 편한 언어의 맥락에 갇혀서 ‘사용자가 무엇을 좋아할까’를 고민하게 되기도 하고, ‘정확하지는 않았어도 이런 걸 좋아할 수도 있지 않을까?’, ‘잘 쓰지는 않아도 좋아하고 있을거야!’ 라고 생각하기도 한다. 그 사용자가 이 기능을, 이 아이템을 좋아해서 썼는지, 필요해서 썼는지, 습관적으로 썼는지 그 의도는 데이터로 파악하기 어렵다. 다만 다행히도 이 것은 헷갈리지만 않는다면 여기서는 그다지 중요하지 않다.

기능 역시 마찬가지다. 서비스는 사용자의 ‘목적’에 충실하면 되고, 알고리즘은 더욱 그렇다. 사용자가 행동으로 통해서 보여주는 것에 집중한다. 다른 기능에서도 그렇게 판단했던 것처럼. 사용자는 서비스를 이용하고, 또 사용하고, 다르게 사용하기도 하고, 혹은 떠난다. 그 뿐이다.

우리는 데이터를 통해 사용자가 좋아하는 것을 정확히 알 수 없다. 좋아하는 것을 추천해 줄 수 없다. 그리고 이 기능을 사용자가 좋아할 지도 알 수 없다. 그저 사용자가 쓸 것 같은 것을 추천하고, 사용자가 기능을 잘 활용하는 지만 안다. 그리고 사실 그것이면 된다. 그 것이 ‘추천 기능’이다. 이 것은 분명히 하고 넘어가야 한다. 혹시 좋아하는 것을 개인 별로 추천해 줄 요량이라면, 맨 앞 단계로 다시 돌아가기를 추천한다.

지나간 사용자는 다시 돌아오지 않아.

그리고 고려해야 할 것은, 그 서비스에서 ‘사용자에게 개인화 자동 추천을 제공하는 것이 정말로 유용할 지’다.

요즘 많은 서비스들에서는 다양한 지표를 보면서 사용자들이 이런 것을 좋아할 지, 실제로 무엇을 사용했을 때 지표들이 올라가고 내려가는 지 살펴보고 A/B테스트도 하는 등 서비스의 변화에 사용자들이 어떻게 반응할 지를 고려한다.

그런데 ‘개인화 자동 추천’이란 환상을 보다 보면 이성을 잠시 내려두는 듯 하다. 사용자들은 ‘개인화 자동 추천’이라면 무조건적으로 좋아할 것이라고 생각한다. 하지만 과연 그럴까.

우선, 그 ‘개인화 자동 추천’이라는 것의 정확성과 관련된 이슈가 있다. ‘개인화 자동 추천’도 수많은 데이터 관련 기능 및 분석 결과와 마찬가지로 ‘데이터’와 ‘과거’에 의해서 나오는 산물이다. 그 유명한 딸의 임신을 아버지보다 먼저 알았다는 ‘타겟’도 그 딸이 ‘타겟’에서 임신 관련 물품에 관심을 보이는 행동을 하지 않았더라면 그런 물건을 추천할 수 있었을 리 없다. 그만큼 충분한 데이터가 모이지 않았다면 사용자에게 적절한 아이템을 제시해 주기 어렵다.

또한 기계 학습 모델은 기본적으로 확률 게임이다. 물론 요즘은 알고리즘 성능도 좋고, 충분한 데이터로 충분한 테스트를 한다고 하면 꽤 높은 확률로 적합한 결괏값을 제안할 수 있을 것이다. 하지만 이 중 하나라도 어긋난다고 하면 그 결과가 적당하지 않을 확률이 더 높아지고, 사용 경로에 쓸모없는 지면이 들어가는 것은 사용성에 당연히 안 좋은 영향을 미칠 수 밖에 없다.

더불어 관련해서 ‘Cold Start’ 라고 불리는 문제가 있다. 초기 사용자의 경우 당연히 기존 데이터가 없으니 이 사용자에게 무엇을 추천해 주어야 할 지 알 수 없다. 이런 경우를 cold start라고 부른다. 그래서 이를 위해 넷플릭스의 경우에는 처음 가입할 때 좋아하는 영화 3가지를 고르라고 하고, 혹은 처음에 보여줄 기본 추천 셋을 만들어 두기도 한다. 하지만 이런 것은 알고리즘에 의해서 나오는 것이 아니다.

따라서, 만약 초기 사용자가 많은 서비스라면? 혹은 비회원 사용 서비스라면? 이런 경우에는 무조건적으로 개인화 자동 추천 서비스를 만들겠다고 용써봐야 그다지 쓸모가 없을 가능성이 많다. 물론 꾸준히 사용하는 5%의 사용자를 위해서 개인화 추천 서비스를 운영하는 것도 의미는 있겠지만, 만약 기술력 및 서비스 개선 정도를 눈에 띄게 보여주고자 하는 것이 목적이라면 이는 그다지 가성비 좋은 방법은 아닐 것이다. 오히려 이런 경우 몇 가지 cold start 및 추천 항목 셋을 만들어 두고 이를 사용자에게 보여주는 것이 훨씬 효과적일 수 있다.

그리고 더욱 중요한 것은, ‘기계 학습 기반의 개인화 추천 기능’이라는 것은 기술 이전에 서비스의 기능이고 이는 당연히 서비스의 목적에도 부합해야 하며 사용자들이 정말로 좋아해야 하는 기능이다.

물론 간단하게 생각하면 사용자가 원하는 것을 바로바로 제공해 주겠다는 데 무슨 문제가 있을까? 싶지만 세상에는 굉장히 많은 서비스가 있고, 사용자들이 이를 활용하는 방식 역시 기상천외할 정도로 많다. 현재도 많은 서비스에서 개인화 추천 기능을 운영하고 있지만, 해당 지면을 사용하는 사용자들이 그렇게까지 많은 것은 아닌 것으로 알려져 있다. 음악 추천만 하더라도 가장 인기 있는 음악 사용 순위가 여전히 높다. 개인화 추천이 있는데 왜? 라고 생각해보면, 이유는 간단하다.

부정확성 + 불필요함.

이런 경우 추천 기능은 사용자의 서비스에 대한 여정 노선을 복잡하게만 만들고, 오히려 탐색해야 할 것의 종류를 늘려 불편함을 가중시킬 수 있다. 이는 사용자를 서비스에서 더 멀어지게 할 수도 있다.

개인화 자동 추천이라는 환상

‘개인화 자동 추천’이라는 것은 말은 참 쉽지만, 비슷한 것을 해보려고 시도했던 적이 있는 사람으로써 여전히 어떤 환상의 기능이고, 약간의 도전 의식도 계속 가지고 있는 기능이기도 하다. 잘 만들어지고 서비스에 잘 녹아든다면 분명 기술적으로도, 서비스 사용성 면에서도 매우 근사할 것이다. 나도 이런 서비스를 보고 싶고, 사용자가 되기를 바란다.분명 나는 이런 기능을 ‘좋아하는’ 사용자가 될 것이다. 다만 자주 쓸 지는 알 수 없다. 그것은 서비스의 성격에 따라 다를 것이다.

하지만 여러 사람이 만들고, 여러 사람이 사용하는 서비스에서는 좋은 기술보다, 자아 실현보다, 겉으로 보여지는 것보다 좋은 서비스를 만든다는 일이 되게 하는 것이 중요하지 않을까.

무조건적으로 개인화 추천 서비스를 넣을 것이라고 외치기보다 현재의 상황에서 개인화 추천을 만들어서 기능으로 올리는 것이 과연 좋은 서비스를 만드는 일일까? 에 대해서 좀 더 심도있게 고민하고, 기술력 뿐만이 아니라 추천 기능의 사용성과 현재의 자원, 운영 계획 등에 대해 세밀하게 계획을 세워보는 것부터 한 번 해보라고, 최근 ‘추천’에 대해 좀 지겹도록 뜬구름같은 이야기를 들을 때마다 하고 싶은 말이었다.

    This post is licensed under CC BY 4.0 by the author.

    세상에서 가장 이해받지 못하는 영웅, 데이터 과학자 (3/3)

    새로운 데이터 분석가와의 랑데부를 위하여(1)