본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
Context-Aware Recommender System
Context를 어떻게 활용할 것인지(filtering) 알아보자 (대표적인 방법)
- Contextual Pre-filtering
- Contextual Post-filtering
ex) Spotify Music Recommender System (음악 추천)
- Spotify: 미국에서 추천 알고리즘을 굉장히 잘 활용하는 업체 중 하나 (+ Netflix, Youtube ..)
- Discover Weekly, Daily Mix 1, Daily Mix 2, Daily Mix 3 등 주별 추천과 매일매일 추천도 해줌
- 각각 다 다른 음악이 들어있음 ➡️ contextual한 정보를 넣었기 때문에 가능
- Daily라고 적어놨을 뿐이지 주중/주말 등 또는 오전/오후/저녁대/자기 전 등 여러 contextual 정보를 활용하여 모두 다른 음악 추천을 해주었을 것!
Figure 1. Contextual Information Dimensions
Gediminas Adomavicius, Bamshad Mobasher, Francesco Ricci, and Alex Tuzhilin. Contextual-Aware Recommender System, AI Magazine, Fall 2021
Contexutal factor
-
Contexutal factor는 explicit 하거나 implicit하게 알 수 있다
- Fully Observable: explicit
- Unobservable: implicit
- Partially Observable: 둘이 섞여 있는
-
Contexutal factor는 시간의 흐름에 따라 변하거나 그대로 일 수 있다
- Static / Dynamic: 시간의 흐름에 따라 고정되거나 변할 수 있다
- ex) 특정 장소: 처음에는 많이 알려지지 않아 많이 붐비지 않았는데, 그 장소가 유명해지면서 사람들이 많이 붐비는 장소로 변할 수 있다, 반면 가정집은 시간의 흐름에 따라 크게 변할 수가 없는 장소
-
ex) Dynamic + Unobservable: 아무 것도 알려진 것이 없는 context
-
ex) Static + Fully Observable: 모든 것이 알려진 context
Contextual Information 적용
1. Contextual Pre-filtering
- Context 정보 활용하여 처음 데이터를 filtering 하는 기법 (먼저)
- 어떠한 추천 알고리즘 적용하기 이전에 Contextual 정보 바탕으로 먼저 데이터 필터링
- Context 정보 기준으로 user 또는 item을 나누는 방법
2. Contextual Post-filtering
- User, Item, Contextual information 등 다양한 features로 모델링을 먼저 진행
- 모델 추천 결과에 Context 정보 활용하여 filtering 하는 기법
둘의 차이는 Contextual information을 언제 사용하느냐의 차이, 크게 어려운 것이 아님!
(이때 사용하는 Contextual information은 동일)
3. Contextual Modeling
Gediminas Adomavicius, Bamshad Mobasher, Francesco Ricci, and Alex Tuzhilin. Contextual-Aware Recommender System, AI Magazine, Fall 2021
(a) Contextual Prefilteirng
- Data에 c(context)를 반영해 filtering을 거친 Contextualized Data가 만들어짐 (가장 처음에 context를 사용)
- 이를 바탕으로 2D Recomender를 통해 u(user)마다 Contextual Recommendations 생성
(b) Contexutal Postfiltering
- 기존 Data에 먼저 2D Recomender를 생성하여 그 결과로 만들어진 Recommendations에 context를 얹어서 Contextual Recommendations 만들어짐 (가장 마지막에 context를 사용)
(c) Contextual Modeling
- Data를 MD Recomender(Multi-Dimension Recomender)를 학습시키는 것
- 이미 user, item, context 정보가 모두 활용된 상태
- 이 모델이 생성한 결과가 Contextual Recommendations이 되는 것
Contextual Pre-filtering
Main method
- context 정보 활용하여 가장 관련있는 2D (Users X item) 데이터 만듦
- 그 후, 많이 알려진 다양한 추천 알고리즘 사용
- 🌟 여기서 Context는 query의 역할로써 가장 관련있는 데이터를 선택하는 역할
Context generalization
- <girlfriend, theater, saturday> ➡️
too specific context
- 위 예시처럼 <user, item, context>가 주어질 때 너무 specific한 context라는 문제가 있을 수 있음
-
왜 문제냐? specific context는 girlfriend에게 맞는 추천을 잘 해줄 수도 있겠지만, 때로는 girlfriend 데이터가 너무 부족한 상태라면 새로운 데이터 들어왔을 때 풍부한 추천이 어렵다
-
specific context는 보통 충분하지 않기 때문에 sparsity 문제
발생
➡️ 따라서 girlfriend 보다 friend로 바꾸는 등 조금 더 general
한 데이터로 바꿔주는 작업이 context를 활용할 때 필요한 방법
- ex) 요일 context 활용할 때, 월-일 각각 쪼개는 것이 아닌 주중/주말로 쪼개는 등
- 적절한 Filtering을 위해 computation이 많이 필요할 수 있음
Contextual Post-filtering
Main method
- Context 정보 무시하고, User와 Item 정보로 2D 추천시스템 모델 먼저 학습
- 추천 결과를 Context 정보를 활용하여 filter 또는 adjust
- user의 Specific 취향 또는 패턴을 context를 통해 찾을 수 있음
- 전체 데이터로 학습시켰는데 마지막에 Context 정보로 filtering 했을 때, 선택되지 않은 아이템에 대해서 이 user의 취향이 아니구나하면서 조금 더 specific한 정보 얻을 수 있겠지
Heuristic approach
- 주어진 Context로 특정 user가 관심있는 공통 item의 특징 활용
Model-based approach
-
주어진 Context로 user가 item을 선호할 확률을 예측하는 모델 만듦
-
추천 리스트 중 user가 각각을 선택할 확률을 Context를 통해 예측
-
마찬가지로 Context generlization을 적용할 수 있고, 대부분의 잘 알려진 추천알고리즘 적용 가능
Contextual Modeling
Main method
- 모든 정보(User, Item, Context)를 전부 활용하여 모델링
Predictive model
또는 heuristic approach 사용
Recap
- 추천 알고리즘 만들 때 Contextual한 정보를 filtering할 때 사용할 수 있는데, pre-filteirng에 사용할 것인지 post-filtering에 사용할 것인지 우리가 선택
- 이때, 그냥 전체 다 넣고 모델 학습할 수도 있음 (Contextual Modeling)