추천 시스템(Recommender System)에 대한 이해 - Zero to 추천시스템

    추천시스템의 개념

    추천 시스템(Recommender System)에 대한 정의는 다음과 같이 정의 할 수 있다. 사용자의 행동 데이터와 대상 데이터(ex: 상품, 영화 등등)를 분석하여 사용자의 현재 상황에 가장 적절한 대상 데이터를 추천하는 시스템

     

    적절한 추천을 만들기 위해서 수많은 사람들이 연구를 해왔고, 한 사이트내에서는 적게는 하나부터 많게는 몇백개(혹은 천개 이상일수도)의 알고리즘이 존재하기도 한다. 

     

    미국을 대표하는 FANG(Facebook, Amazon, Netflix, Google) 기업들 중, 추천 서비스를 매우 적극적으로 활용하는 기업이 아마존(Amazon)과 넷플릭스(Netflix)이고 특히 넷플릭스=추천서비스라는 기업으로 알려지게 되면서 그동안 국내에서도 등한시 했던 추천에 대한 연구도 폭발적으로 증가하고 있는 추세다.

     

    추천 시스템(Recommender System)에 대한 이해

     

    추천 기술의 종류

    추천은 위의 내용처럼 수백개 이상의 알고리즘이 만들어질 수 있는데 그 중 우리가 흔히 대표적으로 사용자들의 행동을 종합적으로 평가하는 협업 필터링(Collaborative Filtering, CF)과 내용기반 필터링(Contents-Based Filtering)이 있다. 대표적으로 2개가 가장 많이 연구가 되고 있을 뿐 모든 추천 기술의 종류가 2개의 종류에서만 파생되는 것은 아니다.

     

    source, https://www.researchgate.net/figure/Content-based-filtering-vs-Collaborative-filtering-Source_fig5_323726564

     

    범위를 행동과 내용이 아니라, 개인화, 비개인화, 컨텐츠로 분류한다면 대표적인 기술로 개인화로 대표되는 기술은 CF, 비개인화로 대표되는 장바구니 분석(Market Basket Analsysi) 혹은 연관성 규칙(Association Rules), 컨텐츠로 대표되는 Contents-based가 있다. 

     

    그외에 지식기반 필터링(Knowledge-Based filtering, KB)이라는 것도 사용할 수 있는데 특정 전문가들의 도움을 받아 카테고리(지식 구조)를 매우 잘 분류하여 이에 맞게 추천을 하는 방법도 있다. 

     

    최근에는 딥러닝이 뜨면서 추천에 적용하려는 노력을 많이 보이고 있다. 사용자들의 특징값(Feature)들을 분석하여 이를 모델로 만들고 적절한 아이템을 모델기반으로 추천을 하는 것인데 적용이 매우 어렵고 범위가 한정적이라서 아직까지는 진척이 많이 진행되고 있지는 않는 영역이다.

     

    이는 유저에게 아이템을 추천 할 때 정답이 있는 것처럼 Yes/No을 선택하는 것이 아니라 어제는 싫었지만 오늘은 좋을 수 있고 여러번 추천을 받아서 좋아지는 경우도 있어서 학습이라는 개념이 매우 힘들기도 하고 대상도 너무 많기 때문이다. 

     

     

    다만 몇몇 추천 시스템(추천의 범위가 적거나 지금 Yes or No를 답해야 하는 서비스)은 딥러닝을 충분히 적용할수도 있기 때문에 본인 사이트의 상황에 맞게 적용을 하면 될 것이다.

     

    마지막으로 분배적인 관점의 추천 알고리즘이 들어갈 수도 있다. 예를 들어 소개팅이나 학생과 학교를 매칭해야 되는 관점의 추천 알고리즘의 경우 Greedy Approach 기술들을 사용할 수 있는데 대표적으로 게일-섀플리(Gale-Shapley) 알고리즘을 활용하여 반영할 수도 있다.

     

     

    노벨상의 매칭 알고리즘, 게일-섀플리(Gale-Shapley) 알고리즘

    게일 섀플리 알고리즘(Gale-Shapley)은 대표적인 매칭 알고리즘으로 일반적인 추천 알고리즘과는 차이가 있다. 우리가 흔히 추천 시스템에 추천 알고리즘을 구현할 때는 1:1이라는 개념을 생각하지

    needjarvis.tistory.com

     

    추천 담당자의 태도

    협업 필터링과 콘텐츠 기반 필터링만 쓰는 경우 한계점에 봉착하게 된다. 이를 위하여 추천을 전담하는 연구원이나 개발자는 현재 사이트의 문제점과 데이터의 특징을 파악하여 가장 적절한 알고리즘을 선택해야 한다. 추천의 상태가 파레토 법칙처럼 일부 아이템에 쏠리고 있는지, 혹은 추천의 범위(coverage)가 어디까지 인지 등을 분석하여 부족한 부분을 메꾸는 방식이 가장 적절한다.

     

    CF를 처음 도입하게 되면 효과가 좋지만 cold start(행동 데이터가 없을 때)의 문제에 봉착하게 되는데 이를 위해서 Contents-based를 쓰는 방향으로 접근을 하거나 Hybrid로 문제를 해결할 수 있다. 이는 단순히 '최근에 어떤 기술이 트렌드이다'라는 관점으로 접근하는 것이 아니라 어떤 기술이 우리 사이트에 맞는구나를 알아야 된다는 것이다.

     

    다년간 추천 시스템을 전담하면서 그동안 많은 연구원들을 봤는데 일을 못하는 연구원들의 공통적인 특징은 기술 지향적이자 선택 편향(selectioin bias)의 사고를 가진 사람들이 많다는 것이었다. 데이터를 분석하더라도 조건부 확률에 대한 이해 없이 통계를 분석하는 것이 얼마나 위험한지 알아야 되는데 사이트에 대한 명확한 이해 없고 기술의 장점만 보고 접근을 하다가 결국 실패하고 퇴사하는 사이클을 수도 없이 봤다.

     

    물론 기술 지향도 없는 선택 편향의 사고를 가진 사람이 최악이겠지만, 결국 추천 담당자는 데이터를 객관적으로 분석하고 적절한 알고리즘을 만들어내서 런칭을 해야 되는 사람일 것이다.

     

    추천 담당자=데이터 사이언티스트

    이를 토대로 보면 추천을 담당하는 사람은 데이터 사이언티스트라고 부를 수도 있을 것이다. 내가 스스로 문제가 되는 부분을 찾거나 만들 수 있는 개발적인 능력도 뛰어나야 하고, 데이터를 명확하게 분석할 수 있는 통계학적 지식, 데이터 분석 지식도 뛰어나야 하며 최신의 기술 트렌드도 놓치지 말아야 한다.

     

    데이터과학의 필요 역량

     

    게다가 해당 사이트에 대해서 명확하게 이해할 수도 있어야 하는데 예를 들어, 영화 추천 사이트의 경우라면 영화 감독, 배우, 장르에 대한 이해도 완벽히 갖추고 있어야 할 것이다.

     

    필요한 기술을 적재적소 사용할 수 있고 비즈니스 파악도 잘되어 있으며 문제점에 대한 원인-결과 분석을 제대로 할 수 있는 사람만 추천 시스템을 제대로 핸들링할 수 있다고 볼 수 있기 때문에 그 어떤 분야보다 힘들고 어려운 것이 추천 시스템 담당자라 생각한다.

     

     

    댓글

    Designed by JB FACTORY