본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
Context-Aware Recommender System
📑 Paper Review
2021 IEEE 28th International Conference on Data Engineering
- 위치기반 추천시스템: 위치를 어떻게 추가하는지 설명하는 논문
- context를 추천시스템에 어떻게 적용할 수 있는지에 더 focus해서 논문 읽어보자!
Abstract & Introduction
- LARS(라스)
- location-based ratings을 사용하여 추천
- 3 calsses of location-based ratings: location-based ratings을 구할 때 총 3가지 클래스에 대해 다뤄볼 예정
-
Spatial(장소) ratings for non-spatial times (user, ulocation, rating, item)
- user location이 rating에 어떤 영향 미치는지
-
Non-spatial ratings for spatial items (user, rating, item, ilocation)
- item location이 rating에 어떤 영향 미치는지
-
Spatial ratings for spatial items (user, ulocation, rating, item, ilocation)
- user, item location 둘 다 rating에 어떤 영향 미치는지
- 중요 키워드
- Preference Locality
- Travel Penalty
Motivation
저자들이 왜 이런 생각을 하게 되었을까
(a) Movielens preference locality
- 미국의 3개 주에 대해 영화 평점을 높은 순서로 나열한 것
- 근데 Florida에서 갑자기 'Musical'이라는 장르가 등장 ➡️ 첫 번째 motivation
- 아래 지도에서 보면 Florida는 미국 남부에 완전히 다른 지역으로 위치하고 있음
➡️ Minesota와 Wisconsin은 위치적으로 붙어있기 때문에 서로 비슷한 영화 장르를 지니는 반면, Florida는 둘과 지역적으로 멀리 떨어져있어 생뚱맞은 영화 장르를 가짐
(b) Foursquare preference locality
- Minesota user 중 county 출신 별로 어느 장소에 방문했는지
- 마찬가지로 거리 정보를 바탕으로 통계의 차이 발견 ➡️ 두 번째 motivation
- ex) 서울 살고 있는데 아무리 맛집이라해도 부산까지 잘 안 가지
- 따라서 서울 근교 맛집을 추천해줘야 user의 만족도가 높아지겠지
➡️ 따라서, 지역적 정보를 추천시스템이 추가로 적용하면 성능 향상이 될 것이라 기대
- Spatially Close: 가까이 위치하는지
- Travel distances: travel distanes가 얼마나 떨어져있는지
Contribution
1. location-based ratings의 세 가지 타입 제공
-
Spatial ratings for non-spatial times
-
Non-spatial ratings for spatial items
-
Spatial ratings for spatial items
2. 세 가지 location-based ratings을 사용한 LARS 제안
- 2가지 기법 적용
- User-partitioning technique
- Travel Penalty
3. 다양한 실험을 통한 추천 퀄리티 향상
LARS Overview
1. LARS Query Model
-
Input: User id U, numeric limit K and location L
-
Output: K 개의 추천 아이템
-
Snapshot
& continuous queries
➡️ user는 위치가 변함에 따라 업데이트된 추천을 받음
- 즉, user의 위치가 변함에 따라 query가 변하게 됨
- location이 드문드문 바뀌면
Snapshot query
- location이 계속 바뀌면
continuous query
2 . Item-Based Collaborative Filtering
- Item-based: 유저의 취향과 비슷한 아이템들을 모아 추천
- popularity 해서 item-based 모델을 사용했다고 함
- 근데 저자들은 복잡한 모델도 사용할 수 있었겠지만, 아마도 location이라는 정보를 사용해보기 위해 복잡한 모델보다 우선 간단한 모델부터 해보는 것이 좋다고 생각했을 것이라고 생각함..!
- user-item matrix로 collaborative filtering을 했는데, 거기에 context(location)을 추가해봄으로써 추천 품질에 큰 영향 안 끼치게 간단한 모델로 구현(했는데 성능이 좋게 나온거지)
1. Model Building
- Item pair (p, q)에 대해서 similarity score 계산
2. Recommendation Generation
- query하는 user u가 주어지면, user u가 rating하지 않은 아이템들로 유사도를 reduce
- similarity list 만들 때 코사인 유사도 사용 (이도 마찬가지로 popularity해서)
Spatial User Ratings for Non-Spatial Items
1. User의 출신 또는 지역에 따라 선호도가 다르다라는 기준에서 출발
2. spartial user ratings를 사용하기 위한 세 가지 필수 조건
-
1. Locality
: spatial neighborhood에서 user와 가까이 있는 추천을 해야한다
-
2. Scalability
: 추천 과정과 데이터 구조가 더 많은 user로 확장 가능해야 한다
-
3. Influence
: spatial neighborhood의 크기를 조절해서 추천할 수 있어야 한다
- user가 살고있는 동네의 크기에 따라서도 추천의 영향을 받을 수 있어야 한다는 것
- ex) 살고 있는 동네가 커져서 사람들이 많이 유입 ➡️ 많이 유입된 사람들의 정보가 또 추천알고리즘에 적용되야 함
3. User partitioning 기법 (a.k.a 피라미드 구조)
위 세 가지 필수 조건을 만족시키기 위해 저자들이 제안하는 방법
- ulocaiton을 제외한 (user, rating, item) 로 spatial regions를 구성하고 CF로 추천한다
level 0
: 전체 시스템 Area
- ex) 데이터를 미국 전체에서 얻었다면 이 부분은 미국 전체
level 1
: 미국 안에서도 서부,동부 등의 지역으로 나눔
level 2
: 그 안에서도 또 세부 지역으로 나눔
level 3
: 각각의 셀이 CID
를 갖게 되고, 이 CID 값을 기준으로 같은 region인지 아닌지 spatial 정보 확인 가능
➡️ 이러한 데이터 구조로 만들어놓고 Spatial User Ratings를 학습 시킴
Non-Spatial User Ratings for Spatial Items
1. Using non-spatial rating for spatial items ➡️ (user, rating, item, ilocation)
- 아이템의 spatial 정보를 바탕으로 rating을 매긴다
- ilocation: 아래의
travel locality
, travel penalty
로 얘기 해볼 수 있다
2. Travel Locality
- 이동 거리가 user의 선택에 영향이 있다는 가정을 둔다
- 아무리 맛있는 맛집이라도 이동 거리가 멀면 선택하기 부담스럽겠지
- 추천 점수에 travel penalty를 부여한다
- 그 부분에 거리에 따라서 penalty를 주자는 것
3. Travel Penelty
-
계산 방법: Road network travel distance between u and i
-
Rating scale (e.g. [0,5])로 normalize ➡️ 같은 공간 안에서 RecScore 계산 가능
RecScore(u,i)=P(u,i)−TravelPenalty(u,i)
이때, Item-Based CF 후에 Travel Penelty를 부여해야 하는데, Travel Penelty를 줄 때 추천된 모든 것들에 대해 계산해야해서 계산량이 굉장히 큼
따라서 계산량이 많아지는 부분에서 저자들은 발전시켜야한다고 얘기하고 있음
Experiments (1)
- LARS: Spatial ratings for spatial items (유저 위치 + 아이템 위치)
- LARS-U: LARS-User (유저 위치)
- LARS-T: LARS-Travel (아이템 위치)
- CF: Item-based Collaborative Filtering
1. (a)
-
CF와 LARS-T(Travel): 피라미드 구조 사용 X (Spatial User Ratings에서 피라미드 사용) ➡️ 품질 점수가 일정함
- 이때 MSE, RMSE같은 지표가 아닌 recommendation의 quality(품질) 점수로 매김
-
CF와 LARS-T 점수 차이는 travel penalty에서 발생
- 피라미드 구조 사용하지 않았기때문에 품질 점수는 일정하지만, 이 일정한 점수 사이에서도 차이를 보이는 것은 travel penalty를 줬냐 안 줬냐에 따라
- 즉, 기본보다는 travel penalty라도 주는 것이 도움이 된다
-
More localized pyramid 일수록 (피라미드 레벨이 높아질수록 ➡️ 더 세부 지역으로 나뉠수록) 품질이 증가한다(LARS, LARS-U) ➡️ user partitioning과 location-based ratings가 효과가 있음을 의미한다
-
LARS는 travel penalty까지 적용한 시스템 ➡️ 즉 저자들이 제안하는 user 위치, item 위치 모두 합친 모델이 좋다!
2. (b)
Experiments (2)
- 추천하는 아이템 수, 즉 k 값이 얼마나 증가하냐에 따라(시스템 입장에서 추천 폭을 넓히는 게 더 유리하겠지) 모델들의 성능 살펴본 실험
- LARS와 LARS-U 모두 k가 증가함에 따라 품질이 증가
- LARS는 CF에 비해 거의 모든 k에서 2배 이상 더 나은 정확도를 나타낸다
- MovieLens와 Foursquare 데이터셋 모두 동일한 지표를 보인다
Experiments (3)
-
spartial user ratings를 사용하기 위한 세 가지 필수 조건을 확인하는 실험
-
M: [0,1] 사이의 scalability gain과 locality loss의 tradeoff
-
scalability와 locality 부분에 대해 체크해보니 LARS에 좋은 영향이 있고, 또 LARS에 적절한 M이 얼마인지 나타냄
More on this paper
- 기술별(user partitioning, travel penalty) 자세한 내용은 논문 참고
-
Data Structure
-
Query Processing
-
User Partitioning
- Data Structure Maintenance: Model Rebuild, Merging/Split Maintenance(Calculating locality loss/gain, Calculating scalability loss/gain)
- Partial Merging and Splitting
- Partial Merging and Splitting
-
Travel Penalty
- Incremental Travel Penatly and Splitting
-
STELLAR: Spatial-Temporal Latent Ranking for Successive Point-of-Interest Recommendation
- Shenglin Zhao, et al. Published in AAAI 2016
Conclusions
-
기존 traditional recommender system에 적용되지 않은 location을 활용한 recommender system 제안
-
이때 location-based ratings을 3가지 형태로 구분하여 제안
-
Spatial ratings for non-spatial times
-
Non-spatial ratings for spatial items
-
Spatial ratings for spatial items
-
User partitioning
과 travel penalty
를 도입하여 spatial ratings와 spatial items 모두 적용 가능
-
2가지 기법을 함께 또는 따로 사용 가능
-
여러가지 실험 통해 LARS가 efficient, scalable, better quality 임을 증명