본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
Context-Aware Recommender System
Context를 어떻게 활용할 것인지(filtering) 알아보자 (대표적인 방법)
- Contextual Pre-filtering
- Contextual Post-filtering
![](https://velog.velcdn.com/images/hyxxnii/post/d2673170-00de-4559-a206-54be0c89892b/image.png)
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
![](https://velog.velcdn.com/images/hyxxnii/post/a392497a-3c63-48f9-86ea-c38e7fffe325/image.png)
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
![](https://velog.velcdn.com/images/hyxxnii/post/56581970-6769-45c7-a480-1f1d82c1c3ef/image.png)
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)