[RecSys’23]Trending Now: Modeling Trend Recommendations 리뷰

Austin Park
recsys-summarize
Published in
8 min readMar 3, 2024

추천 상황에서 trend의 정의를 내리고 trending item을 찾는 모델 제안

배경

“trending now” 는 현재 유행하고 있는 (trending) 상품들을 추천하고, 그들의 popularity를 향상 시키기 위해 사용된다. “trending now”는 두 가지 목표를 달성하기 위해 사용된다. 1) 당장은 popular 하지 않지만 앞으로 popular하게 될 상품을 추천해서 이들을 더욱 빠르게 popular 상품으로 만든다. 2) “recommend for you”, “buy it again”, “freqently bought together” 와 같은 다른 추천 구좌와는 다른 관점의 추천을 제공해서 서로의 추천 품질을 보완한다.

동기

기존의 “trending now” 연구는 개인화 성능에 집중하거나, 추천 분야가 아닌 도메인에서 주로 이루어졌는데, 이는 “진짜" trending item은 무엇인지에는 많은 관심을 기울이지 않았다.

본 논문에서 저자들은 추천 상황에서 아래와 같이 trend의 정의를 내리고, 단순한 time-series forecasting 모델이 추천 맥락을 고려해서 진짜 trending item을 찾는 모델을 제안한다.

  • Popularity: the number of interactions at a certain time interval
  • Trend: the change rate of popularity, or acceleration

문제

위 trend의 정의에 따라 상품별 trend (acceleration)를 계산할 수 있지만, 이를 위해서는 충분한 interaction 데이터를 수집해야 하기 때문에 실시간으로 trend를 계산하기 어렵기 때문에, interaction 데이터를 수집하는 시간만큼 현재 trend와 계산된 trend 사이에는 간극이 존재한다.

제안 방법

위와 같은 문제를 해결하기 위해 저자들은 trending item recommendation 문제를 one-step forecasting problem 로 정의한다.

즉, 수집된 데이터를 통해 계산된 trend를 바로 추천하지 않고, 이를 사용해서 next step의 trend를 예측해서 이 예측된 trend가 높은 상품 top-k개를 추천해서 시간 간극 문제를 해결한다 (아래 그림 왼쪽 참고).

또한, 데이터 분석을 통해 발견한 “두 상품이 interaction한 사용자가 많이 겹칠수록 trend 변화 패턴이 유사하다”는 사실을 통해 (위 그림 오른쪽 참고) collaborative filtering signal이 trend 예측에 도움이 된다는 가정을 하였고, 이러한 context 정보를 함께 학습할 수 있는 모델인 TrendRec을 제안한다.

TrendRec의 모델 구조를 이해하기 위해서는 아래의 용어를 이해해야한다.

  • Time Step: time interval, 다음 trend를 계산하는데 필요한 data를 수집하는 시간
  • Velocity: popularty, 한 time step동안 한 발생한 interaction 수, W_j,t는 time step t 동안 상품 j가 interaction된 횟수
  • Acceleration: trend, time step t 동안 velocity의 변화량, A_j, tW_j,t — W_j,(t-1)

문제 정의

임의의 상품 j에 대해서, 현재까지의 trend와 추가 contextual 정보 (time step별 j와 interaction한 사용자들)를 사용해서 다음 time step t+1 에서의 trend (acceleration)를 예측한다.

time step 길이의 중요성

time step의 길이는 너무 짧으면 충분한 데이터를 확보하지 못해 변동성이 많아지고 노이즈의 비율이 많아진다. 반대로 너무 길 경우 데이터가 이미 다른 성격으로 변해서 정확한 예측이 어려워 진다. 따라서 도메인, 서비스의 크기를 고려해서 적절한 time step 길이를 설정하는 것이 중요하다.

TrendRec

TrendRec의 학습은 1) next-item recommendation (위 그림 파란색), 2) time series forecasting (위 그림 빨간색) 2-phase 방식으로 이루어진다.

이때 각 단계별 모델은 GRU4Rec, DeepAR 와 같은 각 task에 맞는 모델을 사용하고, 각 task별 objective는 아래와 같다.

첫번째 단계에서 time step별로 학습한 상품 임베딩 V_t 을 두번째 단계에 활용한다.

inference를 할 때는 time series forecasting 모델만 사용해서 다음 time step에서의 velocity를 예측한 뒤, 직전 velocity와의 차이를 acceleration으로 사용한다.

**acceleration 기호 A를 사용하다가 갑자기 velocity를 예측한다고 해서 혼란스러울 수 있지만, 논문의 Appendix A.2에 acceleration 대신 velocity time series를 사용했다고 적혀있다. 나 또한 당황스러웠다.

실험

데이터셋

비교 모델

  • Oracle (ground truth)
  • Random
  • Markov
  • Exponential Moving Average (EMA)
  • DeepAR
  • TrendRec (GRU4Rec + DeepAR)

Oracle과 Random 모델은 성능 비교가 아닌 metric 계산에 사용된다.

평가 지표

본 논문에서는 단순히 추천 결과에 대해서 recall, nDCG 등을 계산하기 않고, 실제 정답인 top-k 상품들의 time step t 에서의 trend의 합을 최대치 (Oracle), Random model의 top-k 상품들의 trend 합을 최저치로 설정해서 그 상대적인 값을 metric으로 사용한다.

acceleration이 DCG의 weight로 사용된다.

실험 결과

  1. 모델 별 성능 비교

TrendRec가 모든 모델들 중 가장 좋았다. 특히 DeepAR과 비교했을 때 TaoBao 데이터셋에서 더 큰 성능 향상이 있었는데, next-item recommendation task가 TrendRec의 전체 성능 향상 폭이 증가된 것과 관련있다고 볼 수 있다.

실제로 TaoBao 데이터셋에서는 GRU4Rec이 잘 학습되어 다른 데이터셋보다 높은 추천 정확도를 보였다.

2. time-step 길이별 성능 변화

time step 길이의 중요성 섹션에서 얘기했듯이, time step 길이가 길어짐에 따라 성능이 향상하다가 일정 기준을 넘어가면 data drift의 영향으로 인해 다시 떨어지는 것을 확인할 수 있다.

특히 최신 뉴스 위주로 소비되는 뉴스 도메인인 MIND 데이터셋의 경우 최적 time step interval이 가장 짧았다.

소감

  • 크게 관심 갖지 않았던 trending item에 대한 깊이있는 분석과 제안 방법이 흥미로웠다.
  • 하지만 time step별로 user, item embedding이 따로 필요한 거 같은데, 이 경우 너무 많은 메모리가 필요할 거 같다는 생각을 했다.
  • 위에 설명에도 적혀있지만, 모델 학습과 예측부분에서는 acceleration 기호를 사용해서 objective를 설명하는데, 마지막 appendix에서는 velocity를 사용했다고 해서 혼란스러웠다.
  • 실제 온라인 테스트를 해봐야 알겠지만, acceleration (trend)의 정의가 단순 velocity의 변화량으로 해도 괜찮을 지 의문이었다. 예를 들어 저자들의 정의에 따르면 velocity가 5인 상품이 100이 되었을때 보다 1000인 상품이 1100이 되었을 때 더 큰 acceleration을 갖게 된다.

--

--