brunch

You can make anything
by writing

C.S.Lewis

[서비스 기획] 좋아할 가능성, 추천 알고리즘

서비스는 왜 추천서비스를 제공할까?

어디에나 있지만 어디서도 쉽게 만족되지 않는 서비스, 추천.

종종 택도 없는 콘텐츠를 '당신이 좋아할거에요.'라는 타이틀로 추천하면 황당할 때도 있다.


'모르면서 아는 척 하지마. 차라리 가만히 있어!'


그러나 서비스들도 그들의 추천이 고객의 취향을 완벽하게 저격하기 어렵다는 걸 안다. 

그럼에도 왜 추천을 제공하는 걸까?




맞으면 좋고, 아니면 말고?


추천은 생각보다 사용자들의 많은 시간을 절약해준다. 


음원사이트의 음원, 영화사이트의 영화, 채용사이트의 공고, 쇼핑사이트의 물건 등 서비스가 제공하는 콘텐츠의 수는 수만이 넘는다. 수만개의 콘텐츠들 속에서 원하는 콘텐츠를 찾기 위해 사용자들은 무엇을 할까?


검색

먼저 '검색어' 또는 '검색 필터'를 활용하여 원하는 콘텐츠를 검색할 수 있다.

예를 들어, 여름 가디건을 구입하려고 한다면?


1단계. 검색 키워드 '가디건' 입력

- 검색결과에서 남성 가디건 제품들이 함께 노출된다면 여성 가디건을 검색하기 위해 키워드를 추가한다.


2단계. 검색 키워드 추가하여 '여성 가디건' 입력

- 검색결과에서 긴팔 또는 두꺼운 소재의 여성 가디건들이 함께 노출된다면 다시 계절 키워드를 추가한다. 


3단계. 키워드를 더 추가하여 '여름 여성 가디건' 입력

- 검색결과에서 여러 디자인을 살펴보다 사고 싶은 가디건의 색상을 정했다면 검색필터를 통해 색상을 추가한다.


4단계. 검색 필터를 활용하여 '의류 > 여성 의류 > 가디건 > 색상'에서 '파란색'을 선택

- 검색결과에서 원하는 색상 가디건들을 보다 보니, 세일 중인 가디건만 모아보고 싶어졌다면 검색필터를 추가한다.


5단계. 검색 필터를 추가로 활용하여 '세일 중'을 선택

- 검색결과에서 세일 중인 가디건들 중 품절된 가디건이 함께 노출된다면 다시 필터를 추가한다.


6단계. 검색 필터를 추가로 활용하여 '품절 제외'를 선택

- 검색결과에서 품절 제외된 상품들 중 가격대가 높은 가디건들이 함께 노출된다면 가격 설정 필터를 추가한다.


7단계. 검색 필터를 추가로 활용하여 '가격 구간'을 선택

- 검색결과에서 소비 가능한 가격 구간 내 가디건들만 노출된다면 본격적으로 스크롤 하며 서칭을 시작한다.


이렇게 원하는 콘텐츠를 찾기 위해 사용자들은 검색어를 추가하고 서비스가 제공하는 다양한 검색 필터들을 활용하여 원하는 취향의 콘텐츠를 찾기 위한 환경을 셋팅한다.


그러나 매번 새로운 제품을 구매할 때마다 이러한 과정을 거친다면 꽤 번거로운 일이다. 


그래서 검색파트에서는 '연관 검색어', '인기 검색어' 등을 통해 검색키워드나 필터를 추가해야 하는 번거로움을 덜기 위한 장치들을 제공한다. 사용자들이 많이 검색한 인기 검색어와 '가디건'을 검색한 사용자에게 '여름 가디건', '루즈핏 가디건', '여성 가디건' 등의 연관 검색어를 보여주는 것이다. 또한 '세일 중', '품절 제외', '카테고리' 등 검색에 필요한 다양한 필터들을 추가하여 원하는 상품을 찾을 수 있도록 여러 갈래의 길을 제공한다.


그럼에도 검색은 원하는 콘텐츠를 찾기 위한 환경을 셋팅하는 것일 뿐, 사용자들은 이렇게 셋팅된 검색 결과 화면에서 다시 여러차례 스크롤을 하며 취향에 맞는 콘텐츠를 고르기 위해 오랜 시간을 들여야 한다. 


결국 바쁜 일상에서 소비까지 이어지는 콘텐츠를 찾지 못하고 '오늘도 마음에 드는 게 없네.'라며 앱을 종료하게 될 가능성이 높다.


검색은 취향을 찾기 위한 환경을 셋팅하는 것


랭킹

원하는 콘텐츠가 있다면 적극적으로 검색을 활용할 수 있지만, 특별하게 원하는 콘텐츠가 없다면 인기있는 콘텐츠가 무엇인지 살펴보게 된다. 그래서 서비스들은 인기 콘텐츠의 순위를 보여주는 '랭킹'서비스를 통해 원하는 콘텐츠를 탐색하도록 제공한다.


하지만 랭킹은 해당 서비스를 이용하는 고객들 중에서 비중이 높은 사용자들의 취향을 반영한다는 단점이 있다. 


예를 들어, 특정 음원 사이트에서 대부분의 사용자들이 클래식을 듣는다면 나는 일렉트로닉 음악을 주로 듣는 사용자라고 해도 랭킹에서는 클래식 장르의 음악들이 높은 순위와 비중을 차지할 것이다. 


그래서 랭킹은 내가 주요(비중이 높은) 사용자들의 취향과 거리가 멀다면 나의 취향과 점점 더 거리가 멀어진다. 이 때문에 랭킹서비스도 다수의 사용자들이 좋아하는 콘텐츠를 노출하기에는 용이하지만 개별 사용자들의 다양한 콘텐츠 취향을 반영하기는 어렵다. 


비중이 높은 사용자의 취향이 반영되는 랭킹


이처럼 사용자들은 검색, 랭킹 등을 통해 수만개의 콘텐츠들 속에서 원하는 콘텐츠를 찾고자 노력하지만 취향에 맞는 콘텐츠를 발견하는 과정은 쉽지 않다. 


하지만 여기에 추천이 더해지면 서비스는 사용자가 단 하나의 콘텐츠를 클릭하는 것만으로도 '좋아할 것 같은' 다른 콘텐츠들을 상위에 노출시켜줄 수 있다. 


추천은 취향이 선택되는 순간, 사용자가 원하는 콘텐츠까지 도달할 수 있는 최단 경로를 학습하기 때문이다.



추천은 어떻게 제공되길래?


추천의 가장 기본적인 모델은 CBF와 CF이다. 

CBF는 콘텐츠 정보를 기반으로 필터링(Contents Based Filtering)하는 모델을 말하며 CF는 사용자 간의 협업 정보를 기반으로 필터링(Collaborative Filtering)하는 모델을 말한다.


CBF(Contents Based Filtering) 추천

콘텐츠 정보로 필터링하는 CBF 모델은 콘텐츠의 특성이 유사한 것들을 기반으로 추천을 제공한다. 예를 들어, 로맨스 영화를 좋아하는 사용자에게는 유사한 특성을 가진 다른 로맨스 영화를 '좋아할 것이라고 예측'하여 제공하는 것이다. 


'로맨스'라는 장르뿐만 아니라 시대, 배우, 감독, 국가 등 영화가 가진 다양한 콘텐츠 정보들 중 사용자의 취향과 관련된 정보들이 있다면 최대한 활용하여 콘텐츠 간 유사성을 계산할 수 있다.


CF(Collaborative Filtering) 추천

한편 CF는 콘텐츠 간 유사성을 보는 CBF와 달리, 사용자 간 유사성을 계산하여 추천을 제공한다. 예를 들어, A 사용자가 B 사용자와 유사한 사용자라고 판단된다면 A 사용자가 소비한 콘텐츠를 B 사용자에게도 제공하는 것이다.


그렇다면 사용자 간 유사성을 어떻게 알 수 있을까?


1단계. 고객이 제공하는 정보를 통해 사용자 데이터를 쌓는다.

- 사용자 세그먼트 : 가입 시 입력하는 성별, 연령과 같은 정보

- 서비스 활동 이력 : 서비스를 활동하면서 소비하는 콘텐츠 정보 (시청, 구매, 검색 등의 콘텐츠 데이터) 

- 취향 정보 : '좋아요', '필로우' 같은 고객이 선호하는 콘텐츠 정보 


2단계. 1단계에서 쌓은 데이터를 토대로 사용자 간의 거리를 계산한다.

사용자 간의 거리를 계산했을 때 거리가 가까울수록 두 고객은 유사한 취향을 가진 사용자라고 판단할 수 있다. 그리고 이 거리를 계산할 때는 어떤 추천모델이냐에 따라 취향이 가까운 사용자가 달라질 수 있다.


강남역에서 지하철로 이동한다면 한남역과 보라매역 중 어디가 더 가까울까? 

최소시간으로는 한남역이 더 가깝지만 환승구간이 많아, 최소환승으로는 보라매역이 더 가깝다. 5분이 더 걸리더라도 환승 구간을 줄이고 싶은 사람에게는 보라매 역이 더 가깝다고 느껴질 것이다. 짧은 소요시간을 선호하는 사람은 한남역이 더 가깝다고 느낄 것이다.


추천도 어떤 추천모델을 활용하여 거리를 계산하느냐에 따라 사용자 간 유사한 거리가 다르게 계산될 수 있다. A 모델에서는 a와 c 사용자 간의 거리가 더 가깝다면 B 모델에서는 a와 b 사용자 간의 거리가 더 가까운 것이다. 거리가 더 가까울수록 취향이 유사한 사용자로 판단되기 때문에 거리를 계산하는 방식에 대해 어떤 모델을 사용하느냐에 따라 추천 결과도 달라진다.


그래서 추천 개발자들은 여러가지 추천 모델을 활용하여 A/B 테스트를 진행하며 어떤 모델을 기준으로 사용자 간 거리를 계산하여 추천했을 때 추천 만족도가 더 높은지 평가한다.


3단계. 유사한 고객이 소비한 콘텐츠들의 시퀀스를 추천모델의 정답으로 입력하여 학습시킨다.

- 딥러닝 기술을 활용하는 추천모델은 사용자가 좋아할 콘텐츠를 계속해서 학습하며 추천을 제공하게 되는데, 이 때 활용하는 학습 정보가 바로 2단계에서 찾아낸 유사 고객들의 콘텐츠 소비정보이다. 


이에 앞서 잠깐, 딥러닝 기술을 쉽게 이해해보자. 딥러닝 기술은 다양한 강아지 사진들을 통해 '강아지'라는 것을 알려주고 다양한 고양이 사진들을 통해 '고양이'라는 것을 알려주면 새로운 강아지와 고양이 사진을 입력했을 때도 '강아지'와 '고양이'라는 것을 구분할 수 있도록 학습한다.


추천모델은 A 사용자가 좋아하는 콘텐츠를 찾아낼 수 있도록 학습하기 위해 강아지, 고양이 사진들처럼 A 사용자와 거리가 가까운 유사 사용자들이 소비한 콘텐츠들의 연속된 묶음을 제공하여 A 사용자가 좋아할 콘텐츠에 대해 학습시킨다.


4단계. 고객의 추천 콘텐츠 소비에 대한 피드백을 통해 발전시킨다.     

- 1, 2, 3단계를 통해 제공된 추천 콘텐츠를 사용자가 실제로 얼마나 소비하는지 확인하며 만족도를 알 수 있는 여러 지표들을 통해 추천기획자와 개발자는 추천 모델을 계속해서 발달시킨다.




추천은 취향이 선택되는 순간, 
원하는 콘텐츠까지 도달하는 최단 경로를 학습


추천은 이처럼 한 사용자의 취향을 알기 위해 콘텐츠가 가진 특성들을 샅샅히 분석하여 활용하기도 하고 사용자와 유사하다고 판단되는 다수의 사용자 취향을 활용하기도 한다. 


이러한 바탕을 이해하며 추천된 콘텐츠를 살펴보다 보면 콘텐츠 탐색 시간이 줄어드는 것뿐만 아니라, 나의 취향은 아닐지라도 서비스가 나와 유사하다고 판단한 사용자 그룹의 특성을 파악해보는 재미가 생길지도 모른다. 


또 랭킹과 비교해보며 나의 취향그룹이 서비스를 이용하는 다수의 사용자 취향과 어떻게 다른지 비교해보거나 해당 서비스가 추천에 활용하고 있는 콘텐츠 특징은 무엇인지 찾아보는 재미도 생길 것이다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari