다음에 볼 영화 예측하기

Nam Eun-Ji·2021년 3월 13일
0

EXPLORATION

목록 보기
4/4

Session-Based Recommendation

세션 데이터를 기반으로 유저가 다음에 클릭 또는 구매할 아이템을 예측하는 추천.
세션은 유저가 서비스를 이용하면서 발생하는 중요한 정보를 담은 데이터를 말하며, 서버 쪽에 저장된다. 여기서는 세션을 브라우저가 종료되기 전까지 유저의 행동을 담은 시퀀스 데이터 같은 의미로 사용한다.





문제

  • data
    • YOOCHOOSE E-Commerce data
    • https://2015.recsyschallenge.com/challenge.html
    • 비로그인 상태로 탐색하는 유저가 많다.
    • 로그인 상태로 탐색한다고 할지라도 접속할 때마다 탐색하는 의도가 뚜렷하게 다르다.

모델링

논문 : SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS

GRU

  • 해당 논문에서는 여러 RNN 계열의 모델을 실험해본 결과 GRU 성능이 제일 좋았다고 한다.
  • 또한 Embedding Layer를 사용하지 않았을 때가 사용했을 때보다 성능이 더 좋았다고 한다.

Session-Parallel Mini-Batches

세션들의 길이는 짧은 것도 매우 긴 것들도 존재하기 때문에, 이 세션들을 데이터 샘플 하나로 보고 mini-batch를 구성하여 input으로 넣는다면 길이가 제일 긴 세션의 연산이 끝날 때까지 짧은 세션들이 기다려야 한다. 그래서 세션이 끝날 때까지 기다리지 않고 병렬적으로 계산하는 것을 사용한다.

  • 세션 1,2,3을 하나의 mini-batch로 만든다면, 이 mini-batch의 shape는 (3,1,1)이 되고, RNN cell의 state가 1개로만 이루어진다.
  • tensorflow를 기준으로 RNN을 만들 때 stateful=True 옵션을 사용하고 세션이 끝나면 state를 0으로 만들어준다.
  • RNN API 보기

SAMPLING ON THE OUTPUT

Negative Sampling와 같은 개념으로, Item수가 많기 때문에 loss를 계산할 때 모든 아이템을 비교하지 않고 인기도를 고려하여 sampling한다.

Ranking Loss

ranking loss의 목표는 inputs 사이의 상대적인 거리를 예측하는 것으로, metric learning이라고 불리기도 한다.
참고 : https://gombru.github.io/2019/04/03/ranking_loss/

profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글