본문 바로가기
ML&DL/Recommender System

[Recommender System / Paper review] #14 Context-Aware Recommender System

by 거북이주인장 2023. 4. 12.

Summary

  • 유저에게 추천을 하는 그 당시의 상황(context)을 고려한 추천 방법인 context-aware RS의 방법을 리뷰하고 정리한다 (CARS을 처음 제시한 논문은 아니다)
  • contextual factors는 시간에 따라 변화하는지 그 여부에 따라 static/dynamic으로 나뉘고 얼마나 contextual factors에 대해 알고있는지에 따라 fully observable / partially observable / unobservable로 나뉜다.
  • 이러한 contextual information을 사용하는 방법은 크게 세가지가 있다. contextual prefiltering / contextual postfiltering / contextual modeling
  • contextual information는 여러 RS에서 이미 사용되고 있으며 많은 예시가 있다.

Motivation

  • 기존의 collaborative filtering은 유저의 context을 고려하지 않고 추천을 진행한다.
  • 추천을 할 당시의 여러 context을 고려한다면 유저에게 더 정확한 추천을 해줄 수 있다.
    • 비가오는 꿀꿀한 평일 저녁에 추천되는 음악 vs 맑은 날씨의 토요일 나제 추천되는 음악
  • context의 형태 및 사용하는 방식에 따라 CARS에 어떻게 적용되는지 알아보자.

Approach

RS가 알고 있는 contextual factors는 몇몇 형태로 분류할 수 있다. 이에 대해 알아보자.

What a recommender system knows about contextual factors

  • fully observable
    • 유저에게 추천될 당시 어플리케이션과 관련된 contextual factors을 명확하게 알고 있는 상황이다.
    • 예를 들어, 셔츠를 추천하고자할 때, 구매하려는 목적, 구매 동행인, 구매하고자 하는 날짜가 휴일인지 주말인지 등이 알려진 상황이다.
  • partially observable
    • contextual information이 전부 공개된 것이 아니라, 그 중 일부의 정보만 알려진 상황이다.
    • 예를 들어, 셔츠를 구매하고자 하는 시간은 알지만 구매하려는 목적은 모를 수 있다.
  • unobservable
    • RS에 contextual information이 제공되지 않은 상황이다.
    • 이런 상황에서는 implicit manner을 통해 latent knowledge을 사용하는 수밖에 없다.
    • 예를 들어, hidden markove model을 통해 점수를 예측하는 등의 방법이 여기에 포함된다.

How contextual factors change over time

  • static
    • 시간에 따라 contextual factors가 변하지 않은 경우이다.
  • dynamic
    • 시간에 따라 contextual factors가 변하는 경우이다.
    • 시간이 지남에 따라 쇼핑 동행인이 바뀌는 경우, 추천할 때 고려하는 context가 달라진다.

Example of contextual information

  • physical context: 유저의 시간, 위치, 활동, 날씨, 온도
  • social context: 유저 주변에 있는 사람들, 그들과의 관계
  • interaction media context: 시스템에 접근하기 위한 디바이스 종류. 핸드폰, 키오스크 등
  • modal context: 유저의 현재 감정, 기분 등

Paradigms for using contextual information

이전의 cf에 기반한 RS는 <user, item, rating> 형태의 데이터를 사용한다. 반면에 CARS은  <user, item, context, rating> 형태의 데이터를 사용한다. context라는 새로운 데이터를 사용한다 (ex: context=saturday) CARS은 context information을 어떻게 사용하는지에 따라 크게 세 가지로 나뉜다.

Contextual prefiltering

  • contextual information을 가장 연관된 2차원의 유저x아이템 행렬을 선택하는데 사용한다.
  • 여러 context 중에, 가장 적합한 context을 고르고 이전에 개발된 모든 추천 알고리즘을 적용할 수 있다는 것이 장점이다.
  • 예를 들어, 토요일에 영화를 추천받고자 하는 유저에게 토요일에 평점이 매겨진 영화만 추천 대상에 포함하는 방식이다.
  • 그러나 이런 prefiltering을 너무 좁게 한다면, 문제가 발생할 수 있다. 예를 들어, 토요일에 친구와 함께 액션 장르 영화를 추천받고 싶은 상황에서 (토요일, 친구, 액션장르) 라는 필터를 세부적으로 걸면 데이터의 수가 적어져서 정확한 추천을 하기가 어렵기 때문이다.

Contextual postfiltering

  • 추천을 생성할 때 context을 무시하고 추천을 모두 생성하고 나서 유저에게 전달할 때, context 정보를 이용하여 조정된 추천 리스트를 유저에게 전달한다.
  • context 상에서 부적합한 추천 리스트를 제외하거나 추천 랭킹을 조정한다.
  • 예를 들어, 어떤 유저가 보통 주말에 코미디 영화를 보는 패턴이 있을 때, 추천 리스트에 코미디가 아닌 영화가 포함된다면 이를 제외하는 방식이다.
  • prefiltering과 마찬가지로 이전에 개발된 모든 추천 알고리즘과 결합하여 사용될 수 있다.

Contextual modeling

  • 유저의 context information을 평점을 모델링하는데 predictor로 넣는다. 따라서 유저x아이템 행렬의 2차원 문제가 아닌 유저x아이템xContext의 다차원 문제로 바뀐다.
  • 넷플릭스 대회에서 성공적인 결과를 거둔 matrix factorization에 contextual modeling을 적용한 방법이 제안되었다.
  • 또한 hierarchical regression 모형이나 svm에도 contextual modeling을 적용한 방법이 제안되었다.

Application of CARS

  • information search
    • physical context (temporal, location) 사용
    • postfiltering model
  • travel guides
    • physical context (계절, 시간대, 날씨, 온도) 사용
  • music recommender system
    • physical context (장소, 시간대, 요일, 교통체증 정도 등) 사용
    • emotional context 사용 (어떻게 알아내는거지?)

Results

survey 느낌이라 실험 결과는 없다.

Conclusion

  • 더 정교한 RS을 구축하기 위해 사용 가능한 데이터를 얼마나 잘 통합하고 모델에 녹여내느냐가 중요한 것 같다.
  • 단순 유저x평점 행렬만 고려할게 아니라, 추천할 당시의 context가 어떤지 모형에 포함한다면 더 정교한 추천시스템을 구축할 수 있을 것 같다.
  • 다만,, 이런 데이터를 어떻게 수집할지가 문제이다 ㅋㅋ
    • 넷플릭스에서 영화 추천을 해주는데 그 사람이 현재 누구와 영화를 보고 있고 어떤 기분인지 어떻게 알 수 있을까? 어느 장소에 있는지는? 날씨는?
    • 위치 정보 제공 동의를 한다면.. 장소와 날씨 정도는 알아낼 수 있을 것 같다. 그 나라에 맞는 시간대도!

댓글