.__.

[추천 시스템 입문] CH04. 추천 알고리즘 개요 - (1) Content based filtering vs collaborative filtering 본문

추천 시스템/추천시스템입문

[추천 시스템 입문] CH04. 추천 알고리즘 개요 - (1) Content based filtering vs collaborative filtering

yesjiyoung 2024. 3. 18. 01:22

들어가는글


4장을 통해 1장에서 설명한 추천 시스템의 3가지 구성요소 중 '프로세스(추천 설계)'에 해당하는 내용을 공부한다.

이번 장에서는 추천 시스템 알고리즘에서는 어떤 종류가 있는지, 각 알고리즘은 어떻게 사용자가 좋아하는 아이템을 추출하는지, 어떤 특징이 있는지, 어떤 경우에 사용되는지를 직관적으로 이해하는 것이 첫번째 목적이다.

구체적인 구현 과정은 5장에서 이어진다.

 

4.1 추천 알고리즘 분류


추천 알고리즘 분류

  • content-based filtering
    • 책의 제목이나 저자, 장르 등과 같이 아이템의 내용을 나타내는 정보를 사용
      -> (in e-commerce) 상품의 브랜드, 카테고리 정보와 같이 상품이라는 아이템 자체가 가지는 정보
    • 사용자가 선호하는 정보를 기반으로 내용이 비슷한 아이템을 계산함으로써 추천을 수행하는 알고리즘 
    • ex1)
      • 정보1 : '사용자1은 미스터리 장르를 좋아한다'
      • 정보2 : '책 A의 장르는 미스터리이다' 
      • 추천 알고리즘  -> 사용자1에게 책 A를 추천 
    • ex2) 커머스 
      • 정보1 : '사용자1은 애플 브랜드를 좋아한다'
      • 정보2 : '에어팟맥스화이트(🎧)는 애플 제품이다'
      • 추천 알고리즘 -> 사용자1에게 에어팟맥스화이트(🎧) 제품 추천 
  • collaborate filtering
    • (자신과 선호도가 비슷한 지인이 재미있게 읽은 책을 알려주며 '입소문'을 내는 과정처럼)
      서비스 내에 다른 사용자의 과거 행동 등을 통해 얻어진 기호 경향을 활용하여 추천하는 알고리즘 
    • 추천받은 사용자뿐 아니라 서비스 내 다른 사용자와의 협조적인 작업(=협업)을 통해 추천할 아이템을 결정하므로 '협업'필터링이라고 부름 
    • ex1)
      • 사용자1과 사용자2가 같은 책을 좋아한다는 것을 알았다면, 사용자2가 구입했지만 사용자1은 구입하지 않은 다른 책을 사용자1에게 추천하는 형태 
    • ex2) 
      • 사용자1과 사용자2가 같은 상품을 좋아한다는 것을 알았다면, 사용자2가 구입했지만 사용자1은 구입하지 않은 다른 상품을 사용자2에게 추천하는 형태 
    • 예측을 실행하는 방법 관점에서 메모리 기반 방법모델 기반 방법으로 나뉜다.
      • Memory Based
        • 추천 시스템이 사용될 때까지 시스템에 사용자의 데이터를 축적하기만하고 예측을 위한 계산은 수행하지 않는다. (=사전 학습과정이 없다.)
        • 예측을 수행하는 시점에 축적된 데이터 중 필요한 모든 데이터를 사용해, 예측 계산을 수행.
        • 예측 시점에 사용하는 모든 데이터를 메모리에 모두 저장해 계산을 수행하기에 '메모리'기반 방법이라 부름.
      • Model Based 
        • 추천 시스템을 사용하기 전에 미리 시스템 내 축적된 데이터의 규칙성을 학습한 모델을 만들어 두고, 미리 만든 모델과 추천을 제공하는 대상 사용자의 데이터만 사용해 계산을 수행한다. 
          -> VT모델은..? 기준상품 : 추천상품1, 추천상품2, ..., 추천상품N 이 몽고DB에 저장되고 있지 않나..? 
        • 사전에 모델을 만들기 때문에 '모델'기반 방법이라 부름.

 

4.2 내용 기반 필터링


4.2.1 개요

  • 사용자가 어떤 내용의 아이템을 좋아하는지 나타내는 사용자 프로필(user-profile)과 아이템의 다양한 성질을 나타내는 특징을 추출한 아이템 특징(item-profile)과의 일치도 즉 유사도를 계산함으로써 좋아할 만한 아이템을 사용자에게 추천하는 알고리즘
  • ex. 사용자1의 사용자 프로필과 비슷한 아이템 특징 찾기 & 더 비슷한 아이템 특징을 가진 것을 사용자 1에게 추천 

아이템C의 item-profile이 사용자1의 user-profile과 유사도가 가장 높다.

4.2.2 아이템 특징(item-profile) 획득

  • 아이템 마다 그 특징은 다르다. 
    • ex.
      • 상품 : 상품명, 카테고리, 브랜드, 제조사, 셀러
      • 음악 : 작곡가, 작곡연도, (음성분석을 통해) 음색, 음량 
      • 이미지 : 대상 물체, 촬영장소, 시간, (이미지분석을 통해) 색체 정보, 피사체 형태

4.2.3 사용자 프로필(user-profile) 획득

  • 아이템에 대한 사용자의 선호도를 나타내는 사용자 프로필 획득 방법은 크게 2가지가 있다. 
  • 1. 간접 지정형 
    • 사용자의 과거 행동 이력을 기반으로 이 사용자의 프로필을 작성하는 것 
      -> 사용자1은 7일동안 클릭한 상품의 70%이상이 애플 브랜드 상품이야 -> 선호 브랜드 : 애플
      -> 사용자1은 7일동안 클릭한 상품의  90%이상이 이어폰 카테고리 상품이야 -> 선호 카테고리 : 이어폰 
  • 2. 직접 지정형
    • 서비스 가입 직후의 온보딩이나 마이페이지에서 지정
      -> 환영합니다. 어떤 브랜드를 좋아하시나요? -> 애플 지정 -> 선호 브랜드 : 애플
      -> 답변 감사합니다.^^ 다음으로는 어떤 카테고리에 관심이 있으신가요? -> 이어폰 지정 -> 선호 카테고리 : 이어폰  

 

4.3 협업 필터링


  • 메모리기반과 모델기반의 협업 필터링 알고리즘이 있다.
  • 메모리기반은 user2user, item2item기반 방식이 있다.
  • 4.3에서는 메모리기반 중에서 user2user 알고리즘에 대해 공부한다.
  • 또한 모델 기반으로는 어떤 알고리즘이 있는지 간략하게 살펴본다.

4.3.1 메모리 기반 방법 알고리즘 개요

  • 메모리기반 협업 필터링 로직 중에서도 user2user 메모리 기반의 로직은 다음의 세 단계로 구성된다.
  • 1단계. 기준유저와 비슷한 유저를 찾는다.
  • 2단계. 비슷한 유저 군의 선호 아이템을 찾는다.
  • 3단계. 기존유저에게 비슷한 유저 군의 선호 아이템을 추천해준다. 
  • 1단계는 어떻게 찾는거지? 
    • = 추천받을 사용자와 선호도가 비슷한 사용자를 어떻게 찾아낼까?
    • 사용자의 구매 이력으로 아이템 선호도 추측하여 선호도 경향이 비슷한 사용자를 찾아낸다.
    • ex. 사용자가 과거에 구입한 아이템 -> 선호 아이템 / 구입하지 않은 아이템 -> 비선호 아이템 
    • 이처럼 아이템의 구체적인 속성 정보를 사용하지 않는 다는 것이 협업 필터링의 큰 특징! 

0. 서비스 내에 8명의 유저가 존재한다.

 

1. 춘식이는 유저4명과 비슷한 아이템 선호도를 가지고 있다.
2. 유저 4명은 노트북보다 헤드셋상품에 관심을 갖고 있다.
3. 춘식이에게 노트북이 아닌 헤드셋을 추천해준다.

4.3.2 기호 데이터 획득과 평가값 행렬

기호 데이터 획득 

  • 기호 데이터(preference data) : 사용자의 아이템에 대한 선호도 정보
  • 기호 데이터를 획득하기 위한 방법 명시적 피드백, 암묵적 피드백으로 나눌 수 있다.
    • 명시적 피드백 : 이 상품 어때요?(👍 / 👎), 리뷰 별점
    • 암묵적 피드백 : 클릭, 찜, 장바구니, 구매

평가값 행렬 

  • 수집한 기호 데이터 등에 기반해 사용자가 해당 아이템의 선호도 정도를 정량적으로 나타낸 것을 평갓값(rating)이라고 한다.
  • 그 평가값을 성분으로 하는 User X Item 행렬평가값 행렬(rating matrix)라고 한다.
    // 행령 이미지 추가 

4.3.3 모델 기반 방법 알고리즘 개요

  • 미리 데이터의 규칙성을 파악해 학습한 모델을 만들어둠으로써 아이템의 평가값을 예측하여 추천하는 방법이 있다.
    • 클러스터링 모델
    • 회귀 문제 및 분류 문제로 평가값을 직접 예측하는 모델 
    • 토픽 모델(Topic Model)을 사용한 모델
    • 행렬분해(Matrix Factorization)를 사용한 모델 
    • 등등...
  • 평가값을 회귀 문제나 분류 문제로 직접 예측하는 모델에서는 예를들면 선형회귀 등의 회귀 모델을 사용해 과거 사용자로부터 얻은 아이템의 평가값 데이터를 훈련데이터로 하여 모델을 학습함으로써 모르는 아이템에 대한 평가값을 예측한다.
  • 토픽 모델을 사용하면 LDA(Latent Dirichlet Allocation) 등의 방법을 적용해 평가값 행렬을 차원 압축함을써 '애플이 좋다'와 같은 잠재적인 의미를 표현하는 정보를 취득해 추천에 사용한다.
  • 행렬 분해에서는 평가값 형렬을 그 곱이 원래의 행렬을 최대한 재현하는 형태로 하여 사용자 행렬과 아이템 행렬로 분해한다. 
    • 분해된 행렬에서 얻은 사용자 벡터와 아이템 벡터의 유사도 계산을 통해 임의의 아이템에 대한 예측 평가값을 계산한다. 
    • 또 분해해서 얻은 사용자 벡터와 아이템 벡터를 다른 알고리즘의 입력으로도 사용한다. 

4.3.4 메모리 기반 방법과 모델 기반 방법의 협업 필터링 비교

  • 메모리 기반, 모델기반 방법을 '추천에 걸리는 시간', '운용성' 이라는 관점에서 간단히 비교해보자.

  메모리 기반  모델 기반
추천에 걸리는 시간 추천 시 매번 모든 데이터에서 비슷한 사용자나 아이템을 찾은 뒤 예측하므로 시간이 걸린다. 데이터의 규칙성을 바탕으로 미리 모델을 만들어 두었기 때문에, 만들어진 모델만 사용한다는 측면에서 예측후 곧바로 추천 수행이 가능하여 시간이 걸리지 않는다.
운용성 사용자나 아이템 데이터가 변경돼도 추천할 때마다 모든 데이터를 사용하므로 항상 최신 데이터를 반영해 추천할 수 있다. 사용자나 아이템 데이터가 변경되고 그 변경을 반영해 추천하려면 모델을 새로 만들어야 하므로 모델 업데이트 시점이나 재학습에 걸리는 계산 비용 등을 고려하면 운용이 비교적 어렵다.

 

 

4.4 내용기반 필터링 vs 협조 필터링 


  • 가미시마 도시히로의 추천시스템 알고리즘을 참고한 Balabanovi, Burke의 연구 등에 기반해 7가지 관점으로 두 추천알고리즘을 비교해보자.
  • 각 방식의 개요를 통해 어떤 추천알고리즘인지 알고 있으니, 아래 칸을 채워봐도 좋겠다 :) 
  Collaborative Filtering  Content based Filtering
다양성 향상    
도메인 지식 취급 비용    
콜드 스타트 문제에 대한 대응    
사용자 수가 적은 서비스에서의 추천    
커버리지 향상    
아이템 특징 활용    
예측 정확도    
더보기

 

  Collaborative Filtering  Content based Filtering
다양성 향상 👍 👎🏻
도메인 지식 취급 비용 👍 👎🏻
콜드 스타트 문제에 대한 대응 👎🏻 🤔
사용자 수가 적은 서비스에서의 추천 👎🏻 👍
커버리지 향상 👎🏻 👍
아이템 특징 활용 👎🏻 👍
예측 정확도 👍 🤔
다양성 향상
  • 다양성 (in 추천 시스템) :  추천 결과에 포함된 아이템이 서로 비슷하지 않은 것을 의미한다. 
  • 협업 필터링 : 설령 추천 받은 사용자 자신이 모르더라도, 서비스 내의 다른 사용자가 알고 평가하면 그 정보를 기반으로 추천이 가능하기 때문에 다양성이 높다.
  • 내용기반 필터링 : 추천 받을 사용자의 사용자 프로필은 해당 사용자가 모르는 작가나 장르 정보를 반영할 수 없다. 따라서 다다영성이 낮다.
  • 다양성 : 협업 > 내용기반 

 

콜드 스타트 문제에 대한 대응
  • 콜드 스타트 문제 : 서비스에 사용자/아이템에 관한 정보가 적은 경우 특히 신규 사용자나 신규 아이템에 관해 적절한 것을 추천하기 어려운 상황
  • 협업 필터링 : 사용자의 과거 기호 데이터가 없으면 추천할 수 없다는 측면에서 콜드 스타트 문제를 대응하기 어렵다.
  • 내용기반 필터링 : 아이템 특징 또는 사용자의 프로필만 얻을 수 있다면 추천이 가능하여, 신규사용자이더라도 명시적으로 아이템에 대한 기호만 입력하게 된다면 추천 가능 
  • 콜드 스타트 문제 대응 : 내용기반 > 협업 
    • 결국 협업 필터링보다는 내용기반 필터링이 더 대응 가능한 상황이지만, 사용자가 명시적 기호 정보를 입력하지 않을 수 있기 때문에 충분히 대응한다고 볼 수 없다.

커버리지 향상 
  • 커버리지 : 서비스에 있는 모든 아이템 중 추천 시스템으로 사용자에게 추천할 수 있는 아이템의 비율을 나타낸다. 
    • 커버리지가 낮은 상황 : 일부 아이템의 치우쳐 추천되는 상황 -> 사용자 및 서비스 제공자 모두에게 안좋은 상황
  • 협업 필터링 : 사용자의 행동 이력만을 기반으로 추천하게 되면, 비슷한 사용자 기반으로 추천된다 할지라도 그 사용자가 아무도 시도하지 않은 즉, 평가하지 않은 아이템은 추천할 수 없다. 따라서 서비스에 있는 아이템 중 추천할 수 있는 아이템이 제한된다.
  • 내용기반 필터링 : 사용자의 프로필과 연관된 특징을 가진 아이템이라면 서비스에 존재하는 어떤 아이템이든 추천할 수 있다. 따라서 적절하게 아이템의 특징을 잘 관리하고 사용자 프로필에 반영되도록 함으로써 전혀 추천되지 않은 아이템을 줄일 수 있다.
  • 커버리지 향상 : 내용기반 > 협업

 

예측 정확도
  • 각 알고리즘에는 장단점이 있으며, 어떤 상황에서 어떤 알고리즘의 예측 정확도가 좋다고 말할 수 없다. 
  • 단, 어느 정도 규모가 있는 서비스에서 다수파 즉, 서비스를 적극적으로 사용하며 일반적인 선호도 경향을 가진 사용자에 대한 추천 상황에서
    • 협업 필터링 :  나와 비슷한 다양한 사용자의 행동이력이 추천 결과에 반영되면, 복잡한 사용자의 기호를 고려할 수 있기 때문에 예측 정확도 높아짐
    • 내용기반 필터링 : 규모가 큰 서비스에서는 보통 사용자 프로필이나 아이템 특징이 빈번하게 바뀔 수가 있음, 따라서 추천 시간 측면에서 예측 정확도가 비교적 낮을 수 있음
    • 예측 정확도 : 협업 > 내용기반 

 

마무리 글 


 

4.1 ~ 4.4 내용을 통해 Content based filtering, Collaborative filtering 추천 방식에 대해 알아보고, 7가지 관점에서 비교해보았다.

다음글은 4.5와 4.6의 내용을 포함할 예정인데 어떤 추천 알고리즘을 선택해야하는지와 기호 데이터의 특징에 대해 공부해볼 것이다.