Recommender System/Recommendation

컨텐츠기반 추천시스템(Content-Based Recommender System)

eatchu 2022. 11. 20. 01:16
반응형

 

앞선 "추천시스템이란?" 포스팅에서 각 알고리즘에 간략하게 설명을 적어보았다.

Contents-based Recommender System (컨텐츠 기반 추천 시스템)
 - 사용자가 과거에 좋아했던 아이템을 파악하고, 해당 아이템과 비슷한 아이템을 추천해준다.
 - 간단하게 예를 들어 사용자가 과거에 스파이더맨과 아이언맨을 즐겨보았다면 타이타닉보다는 캡틴 아메리카를 추천해 줄 것이다.

즉, 위와 같은 예시는 스파이더맨, 아이언맨이 타이타닉보다 캡틴 아메리카와 더 유사하다는 결론에서 나온 결과이며 아이템끼리의 유사도를 구하는 것이 컨텐츠 기반 추천시스템의 목적이라고 볼 수 있다.
이러한 컨텐츠기반 추천시스템의 목적을 다시 한번 상기시키고 좀 더 상세하게 알아보도록 하자.

 



 

컨텐츠기반 추천 시스템이란?


  • 정보검색(Information retrieval)과 기계학습(Machine learning)의 중간 지점이라고 볼 수 있다.
    • 아이템을 찾는 과정에서 과거 정보(정보 검색)를 활용해서 유저의 성향을 예측(머신러닝)하는 문제

  • 유저 A가 높은 평점을 주거나 큰 관심을 갖는 아이템 X(이미 경험한 것)와 유사한 아이템 Y(아직 경험하지 않은 것)를 추천하는 것이다.

  • 결국 컨텐츠 기반의 핵심은 유저가 과거에 접했던 아이템들과 유저가 아직 접하지 않은 아이템들 사이의 유사성을 파악을 하는 것이 중요하다.

  • 아이템 간의 유사성을 어떻게 파악하고 유사성을 파악하기 위해 아이템간의 사용될 피쳐를 파악하는 것이 핵심이다.

 

개인적인 생각으로 유사도를 잘 구하는 것도 중요하지만 연산과정에서 나온 유사도가 유의미한 결과를 도출할 수 있도록 각 특성을 연산이 가능하도록 잘 수치화(벡터화)하는 과정이 중요한 것으로 보인다.

 

특정 영화감독을 선호하여 그 영화감독이 만든 영화만 보든 사람들이 있다. 우리는 그런 유저들에게 동일한 또는 비슷한 영화감독의 영화를 추천해줄 것이다.
어떤 제품을 구매할 때 후기에 민감한 사람이라면 각 제품의 리뷰를 전처리하여 적절한 제품을 추천해줄 수도 있을 것이다.
이러한 서비스 수행을 위해 중요한 것은 추천해주고자 하는 1) 아이템의 다양한 특성을 고려(Item Representation) 하고 2) 사용자가 어떤 아이템을 선호(User Profiling) 하는지를 알아내야 한다.

 

1) Item Representation


  • 영화를 추천할 때 장르, 영화감독, 출연배우, 상영시간, 평균 평점, 국가, 흥행 정도 등 다양한 특성들이 있을 것이다. 가지고 있는 모든 특성을 활용할 수도 있겠지만 이러한 특성이 너무 많다면 데이터의 차원이 너무 커져 오히려 사용자에게 적절한 영화를 추천해주지 못할 것이다. 

  • 과적합을 피하고 generalization 한 모델을 만들기 위해서는 적절한 특성을 선택하는 것이 중요하다. 

  • 적절한 특성을 선택했다면 이것을 모델이 이해할 수 있는 구조로 변환해야 하는데 다양한 수치형 벡터로 변환할 수 있다. 
    • 리뷰 같은 경우는 어떤 문장으로 이루어진 text features이므로 text preprocessing(TF-IDF 등)을 통해 모델에 적합한 데이터를 얻을 수 있다.
    • 장르 같은 명목형 변수 같은 경우는 원-핫 벡터 형태로 변환하여 모델에 적합한 데이터를 얻을 수 있다.
    • 평점 같은 수치형(순서형) 데이터는 아이템의 특성으로 활용하기 위해 어떠한 통계 값(avg, median 등)으로 변환하여 사용하는데, 이때 User의 특성(원래 평점을 높게 주는 유저 혹은 원래 평점을 낮게 주는 유저)을 반영해 가중치를 부여하여 모델에 적합한 데이터를 얻을 수 있다.

 

2) User Profile


  • 유저에 대한 특성은 eplicit data를 활용해볼 수 있다. eplicit data란 사용자로부터 직접적으로 얻어진 데이터이며 사용자의 설문조사, 자발적인 키워드 입력, 작성한 리뷰 또는 평점을 말한다.

  • 이 외에도 검색 로그, 아이템 선택 후 구매 또는 취소 등의 implicit data를 활용해 다양한 사용자의 로그 지표를 활용해 볼 수도 있다.

  • User Profile은 분류(Classification)와 같다.
    • 주어진 user profile 정보를 바탕으로 새로운 아이템이 유저가 선호하는 아이템 중 어떤 것에 속할지를 선택하는 것이다.
    • 즉, 기존에 유저가 평가한 5개의 아이템($i_1, i_2,..., i_5$) 이 있다고 가정할 때, 새로운 아이템이 어디에 속할 것인지를 찾는 것이다.

 

다시 말해 컨텐츠 기반 추천 시스템은 Item Representation을 바탕으로 User Profiling 작업을 수행하고 얻어진 User Profile 결과를 바탕으로 새로운 Item이 들어왔을 때 어떤 User에게 추천해줄지를 찾는 것이다.

 

 

 

컨텐츠기반 추천시스템 구조


아래 그림은 컨텐츠 기반의 추천 시스템이 어떤 구조로 이루어져 있는지를 보여준다.
DB에서 꺼낸 raw data로부터 분석-추천리스트 생성까지의 프로세스이며 좋은 품질의 시스템을 위해 아래와 같은 과정을 지속적으로 반복해야 한다.

 

 

  1. 컨텐츠 분석(Contents Analyzer)
    • 얻어진 데이터로부터 특성을 추출하고, 백터 화하는 과정이다.
    • 다시 말하면 비정형 데이터로부터 우리에게 필요한 데이터를 추출(feature extraction)하고 추출된 데이터를 모델이 이해할 수 있는 구조로 변경(vector representiation)하는 것이다.
  1. 유저 프로필 파악(Profile Learner)
    • 유저가 선호하는 아이템과 취향을 파악하고 알고리즘을 통해서 유저의 데이터를 일반화한다.
  1. 유사 아이템 선택(Filtering Component)
    • 유저가 선호하는 아이템과 가장 유사한 아이템을 선택하는 과정이다.
    • 분석된 아이템의 특성과 남은 아이템과의 유사성을 계산하여 최종 추천 리스트를 생성한다.
  1. 1-3 과정 반복
    • 최종적으로 아이템을 추천해줬을 때, 유저가 추천된 아이템 중 선택하고 선택하지 않은 데이터를 얻는다.
    • 얻어진 데이터를 다시 추가하여 추천 시스템을 계속 업데이트한다.

 



컨텐츠 기반 추천 시스템의 장단점

 

각 추천 알고리즘의 특징과 장단점을 이해해야 과제를 수행할 때 어떤 종류의 방법론을 적용해야 하는지 판단할 수 있다.

 

Advantage


  1. 다른 유저의 데이터가 필요하지 않다. → 각 유저가 구매한 아이템의 데이터가 중요.
    • 협업 필터링 같은 경우엔 비슷한 유저를 찾아 비슷한 유저가 구매한 아이템을 추천해주지만 컨텐츠 기반은 유저가 구매한 아이템을 기반으로 추천해주기 때문에 다른 유저를 고려하지 않아도 된다.
  1. 추천할 수 있는 아이템의 범위가 넓다. → unique, new, unpopular 아이템 모두 가능. (cold start 커버 가능)
    • 단순히 그 아이템의 기본 특성만을 가지고 컨텐츠 기반 시스템을 수행한다면 신제품이나 유저들의 구매이력이 없는 아이템이더라도 아이템의 기본 특성(아이템의 카테고리, 가격 등)은 존재하기 때문에 비교적 cold start 문제에 빠지는 경향이 덜하다.
    • 하지만 컨텐츠 기반에서 아이템의 특성을 구할 때 유저에서 도출된 특성을 포함한다면 역시 cold start 문제에 직면할 가능성이 높다.
  1. 추천하는 이유를 제시할 수 있다. → 특정 feature가 추천의 이유가 됐다고 설명 가능.
    • 즉, 유저가 좋아하는 5개 아이템의 특성을 분석하여 그 feature를 다른 아이템을 추천하는 이유로 설명을 할 수 있다.
    • ex) 유저가 스파이더맨, 토르, 아이언맨을 즐겨보았다. 해당 장르와 감독, 영화사 등등의 어떠한 공통점을 찾아 feature로 선정하고 장르와 감독, 영화사 등 겹치는 캡틴 아메리카를 추천하게 되는 이유로 제시가 가능하다.

 

Disadvantage


  1. 적절한 feature를 찾기가 어렵다.
    • 영화 시청 시간, 배우, 시놉시스, 나라, 장르, 감동 등 굉장히 많은 영화의 특성 중 어떠한 feature 조합이 적절한지 찾는 것이 어렵다.
  1. 새로운 유저를 위한 추천이 어렵다. → 과거 데이터가 없는 유저에 대해 제품을 추천하는 것이 쉽지 않음.
    • 새로운 아이템 추천에는 효과적이라 하더라도, 새로운 사용자에게 제안하는 추천은 효과적이지 않다.
    • 각 유저가 이미 구매한 아이템(또는 자주 클릭했거나 선호하는 아이템)이 존재하지 않는다면 제품을 추천하는 것이 쉽지 않다.
  1. 선호하는 특성을 가진 항목을 반복 추천(overspecialization)한다.
    • 장점 2번과 상반되는 개념이지만 맥락은 조금 다르다. 한 유저가 액션 장르 영화만 100개를 보았다고 추천 pool에 있는 영화가 모두 로맨스 장르라면 추천이 어려울 수 있다.(feture를 장르 하나로만 선정했다는 가정하에)
    • 유저의 성향을 파악하게 되면 해당 성향을 위주로만 추천을 하게 되기 때문에 해당 측면으로는 추천 아이템의 범위가 좁다고도 볼 수 있다.



[click] 부가 설명 및 참고 자료

cold start

  • Cold Start란 추천 시스템이 새롭게 들어온 유저(고객)이나 특정 컨셉(매니악한)을 가진 유저(고객)에 대한 정보가 충분하지 않아 적절한 상품을 추천해주지 못하는 문제를 말한다.
  • 데이터가 부족한 상품에 대한 추천이 어렵기 때문에 기본적인 성능을 보장하는 협업 필터링 모델 구축이 쉽지 않다.

이 포스팅은 패스트캠퍼스 딥러닝을 활용한 추천시스템 구현 강의를 듣고 작성한 내용입니다.

반응형

'Recommender System > Recommendation' 카테고리의 다른 글

추천시스템이란?  (0) 2022.10.09