이번 포스팅부터 추천시스템에 대해서 이야기해봅니다. 추천시스템, 흔히 우리에게는 알고리즘이라는 이름으로도 잘 알려져있는 세계입니다.
오늘도 알 수 없는 유튜브 알고리즘이 나를 이 영상으로 이끌었다.
유튜브를 보다보면 내가 이미 보았던, 그리고 평소 관심이 있는 영상들이 상위 피드에 뜨는 경험 많이들 해보셨을 겁니다. 이는 과거의 당신의 로그를 기반으로해 유튜브에서 그에 가장 어울리는 피드를 추천해주는 이른바 '유튜브 알고리즘'이 작동했기 때문인데요. 이런 것들은 현재 유튜브를 비롯한 OTT나 쿠팡, 알리익스프레스와 같은 E-Commerce, 그리고 온라인 광고에 엄청나게 많이 도입되어 있습니다.
1. 추천시스템이 필요한 이유?
과거에는 유저가 접할 수 있었던 상품과 컨텐츠가 굉장히 제한적이었습니다. TV, 영화관, 백화점, 신문 등 제한된 매개체를 통해 상품과 서비스가 보여질 수 밖에 없었고, 그리고 개개인에게 맞게 추천을 해주지도 못했습니다. 하지만, 현재 대세가 된 웹, 모바일 환경은 다양한 상품과 컨텐츠를 등장시킬 수 있게 되었습니다. 이로 인해 정보는 넘쳐나게 되었고, 수많은 정보 중에서 가장 나에게 필요한 정보만을 CherryPickin할 능력이 필요해졌습니다.
이러면 문제가 발생하죠. 가장 큰 문제는 정보를 찾는데 너무 오랜 시간이 걸린다는 것입니다. 유저가 자신이 원하는 것을 정확히 어떤 키워드로 찾아야하는지 모를 수도 있는데 말이죠. 이를 도와주는 방법이 바로 추천시스템인 겁니다.
2. Long Tail Phenomenon
언급했듯, 과거 소비자에게 노출되는 컨텐츠와 상품의 수는 굉장히 제한적이었습니다. 하지만, 웹 모바일 환경에서는 더 많은 컨텐츠와 상품들을 등장시킬 수 있게 되었습니다. 주목을 받는 소수의 제품들 뿐만이 아니라, 주목받지 못하는 다수들도 많은 가치를 창출해낼 수 있게 된 것이죠.주목받는 소수의 제품들이 가치를 생산해내는 것보다 더 많은 가치를 비주류 및 다수의 제품들이 생산해내는 것, 이것을 우리는 롱테일(Long Tail) 추천이라고 합니다. 꼬리가 길다는 뜻입니다. 향수 중 사람들이 자주 쓰는 향이 아니지만, 개개인의 취향을 저격하는 향을 니치(niche) 향수라고 합니다. 이것과 같이 롱테일 추천을 통해 개개인의 취향을 저격하는 니치 컨텐츠를 찾을 수 있게 돕기도 하죠.
예시를 들어볼게요. SNS를 할 때, 수천만 혹은 수십억 명의 유저 중에서도, 나의 친구 목록 및 연락처 정보 등 다양한 정보들을 조합해 내가 알만한 사람들을 추천받는 경험을 해보셨을 겁니다. 그것도 롱테일 현상의 한 예시가 됩니다.
3. 추천시스템이 사용하는 정보
추천시스템이 사용하는 정보는 크게 세 가지로 구성됩니다.
1. 유저 관련 정보
2. 아이템 관련 정보
3. 유저와 아이템 간의 상호작용 정보
유저 관련 정보에는 유저 프로파일링, 식별자, 데모그래픽 정보, 유저 행동 정보가 포함되는데요. 유저 프로파일링은 추천 대상 유저에 관련한 정보를 구축해, 개별 유저 및 유저 그룹 별로 추천하는 것입니다. 사용자 데이터를 통해 행동 특성을 분석하고 이를 예측할 수 있도록 데이터를 가공해둔 것입니다. 그리고 식별자는 유저 아이디, 디바이스 아이디, 브라우저 쿠키 등 식별에 필요한 정보입니다. 데모그래픽 정보는 성별, 연령, 지역 관심사 등을 포함합니다. 그리고 유저 행동 정보는 페이지 방문 기록, 아이템 평점, 구매 등 유저의 피드백을 기록한 정보입니다.
아이템과 관련된 정보에는 추천 아이템의 종류와 아이템 프로파일링이 포함됩니다. 추천 아이템은 컨텐츠, 상품, 광고 등이 포함될 것이며, 아이템 프로파일링에는 아이템의 ID와 아이템의 고유정보, 이를테면 상품의 카테고리, 브랜드, 출시일, 가격 등이 포함됩니다.
세 번째인 유저 아이템 상호작용 정보는, 유저가 아이템과 상호작용을 할 때 로그로 남는 정보를 의미합니다. 상품을 구매하거나, 동영상을 시청하거나 할 때 그 구매기록과 시청기록이 로그로 남게 되겠죠. 이는 추천시스템을 학습시키는데 FeedBack으로 작용합니다.
FeedBack에는 크게 또 두 종류로 나뉘는데요.
1. Explicit FeedBack : 유저에게 직접적으로 물어본 아이템 피드백, 이를 테면 유저가 영화에 대해 매긴 평점이 그 예시가 되겠네요. 이 데이터의 경우 데이터의 양도 적고, 수집에도 어려움이 많습니다.
2. Implicit FeedBack : 대다수의 데이터가 이 경우에 속합니다. 유저에게 직접적으로 물어보지는 않았지만, 유저가 아이템에 제공한 묵시적인 피드백을 의미합니다. 이를 테면, 유저가 아이템을 클릭해 구매하거나, 넷플릭스로 영상을 시청할 때, 이 기록들은 로그로 남게 됩니다. 그리고 이 로그를 분석해 유저에게 평가를 직접적으로 묻지는 않았지만, 유저가 느낀 평가를 유추해내는 것입니다.
2. 추천시스템의 문제 정의
추천시스템의 목적에 대해서 생각해봅시다. 크게 두 가지의 목적이 존재할 것입니다.
1. 특정 유저에게 적합한 아이템을 추천하는 것 - 이를테면, 쿠팡에서 유저가 로션을 검색했을 때, 추천하는 로션 상품을 유저에게 띄워주는 것이 있겠네요.
2. 특정 아이템에게 적합한 유저를 추천하는 것 - 이를테면, 쿠팡에서 신상으로 나온 로션을, 어떤 유저에게 프로모션을 할지 결정하는 문제가 있겠네요.
이 두 가지의 목적을 수행하기 위해서는 유저 - 아이템 간의 상호작용을 평가하는 Score 값이 필요합니다. 이 Score에 대한 자세한 이야기는 다음 포스팅에서 이야기해봅시다.
추천 문제는 크게 두 가지 문제로 줄일 수 있습니다.
1. 랭킹
유저에게 적합한 아이템 Top K개를 추천해주는 문제입니다. 이 문제의 경우, 아이템 간의 순위를 결정하고, 그 중에 K개를 선정하는 과정으로 이루어집니다. 순위를 결정하기 위한 기준 혹은 스코어는 필요합니다. 하지만, 유저(X)가 아이템(Y)에 가지는 정확한 선호도를 구할 필요는 없습니다. 평가지표로는 Precision@K, Recall@K, MAP@K, nDCG@K 등이 있습니다.
2. 예측 (Prediction)
유저가 아이템에 가질 선호도를 정확하게 예측하는 문제입니다. 선호도란 평점과 같은 명시적인 스코어일 수도, 클릭률 및 구매 확률을 예측하는 암묵적인 스코어일 수도 있습니다. 이는 곧 유저 - 아이템 행렬을 채우는 문제로 이어집니다. 평가지표로는 MAE, RMSE, AUC 등을 이용합니다.
'RecSys (추천시스템)' 카테고리의 다른 글
추천시스템, 평가지표 선정하기 (2) | 2023.12.06 |
---|