본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
Context-Aware Recommender System
- Context-Aware: 맥락 인지
➡️ 맥락기반 추천시스템
추천시스템의 틀에서 벗어나보자
- 현재까지 추천시스템
-
유저와 아이템이 제공된 explicit 데이터 활용
- 위 데이터가 부족한 경우 implicit 데이터 활용하려고 노력함
-
확보(implicit data)하거나 주어진 데이터(explicit data)로 유저-아이템 matrix 생성
-
유저-아이템 간의 관계(누가 무엇을 좋아하는지), 유저와 아이템의 특징 활용
-
위의 행렬 바탕으로 평점 또는 랭킹을 추천
➡️ 아이템, 유저 등 직접적으로 관련된 정보 외에 다른걸 활용 (간접적인 정보) 할 순 없을까?
Context-Aware Recommender System
- Context = 맥락
-
맥락을 이해 = 유저의 상황을 이해
-
유저와 아이템과 관련있지만, 상호관계를 설명하진 않음
- 유저와 아이템과 관련있는 맥락 또는 상황이 그 둘의 정확한 interaction을 설명해주진 않음
-
개체(유저,아이템)의 상황을 설명하는 특징적인 정보를 추출 (e.g. 시간, 위치 정보)
- Context-Aware Recommender System = 맥락기반 추천시스템
- 즉 맥락(유저의 상황)을 이해한 추천시스템
- 유저와 아이템의 단순 상호관계 파악뿐만 아니라 상황 정보 도 포함된 포괄적인 추천시스템
- Contexts와 Context의 차이를 이해하고 추천시스템 구축
- 둘은 분명한 차이가 있음! 둘의 차이를 이해하는 것이 중요
Context-Aware Recommender System 예시
뉴스 추천
- 기존 방법: 유저와 성향과 뉴스 컨텐츠와 유사도 등을 판단하여 추천 (e.g. 스포츠에서도 야구를 좋아하는 유저 ➡️ 야구와 관련된 스포츠 뉴스 추천)
- 맥락기반 방법: 유저가 월요일(시간)에 뉴스를 읽는다면, 한 주의 날씨 등 한 주를 시작할 때 관심 갖을 내용을 추천
장소 추천
- 기존 방법: 유저가 좋아하는 취향과 과거 선택했던 아이템 기반으로 추천 (e.g. 술을 좋아하는 유저 ➡️ 안주 맛있는 술집 추천)
- 맥락기반 방법: 오후, 저녁 등 가고자하는 시간 정보를 바탕으로 추천
- Context Provider: 날씨, 온도, 위치, Companion(동반자)
- User model과 Item model을 합친 + Context Manager(Context Provider의 정보) ➡️ 하나의 Model adapter
- Prediction Engine을 사용하여 최종적으로 Pred.list 생성 ➡️ Users에 추천해줄 때 Context Manager를 통해 추천 이유 부가 설명 (Explanation Engine) ➡️ Rec.list + Explanations
Model Structure
-
기존 방법
- R:user×item→rating
- matrix가 아닌 cube 형태
- Time 예시: 104번 user가 7번 아이템을 1번 time에 썼다 (or 2번 time에 썼다 등등)
Context-Aware Recommender System 정리
- 다양한 상황의 많은 context 정보 활용 가능
- 주로 시간, 장소 등의 정보
- 다양한 메타정보(판매자 정보), 대표 키워드, 태그 등
- 더욱 다양한 정보가 추가되어 추천시스템 성능 향상 기대
- Context 정보 얻는 방법도 다양
- Explicit하게 또는 Implicit하게 얻기 가능
- 접속 시간, 접속 위치, 접속 날짜, 접속 기기, 평점을 준 이벤트 정보, 날씨 정보 등
- 적절한 context 정보로 초기 filtering 가능
- ex) 특정 시간대의 음식 취향을 알고 있다면 싫어하는 음식을 초기에 filtering 하여 추천 목록에서 제외되게끔
- Context 정보 활용하여 A/B test 등 다양한 실험 가능
- ex) 술집을 좋아하는 유저에게 time context 넣어서 A/B test 실험을 통해 time에 맞는 추천을 좋아하는지 안 좋아하는지 판단
- Context-Aware 추천시스템은 도메인 지식을 더욱 잘 활용할 수 있는 방법
- 그 데이터의 가장 중요한 상황적 특징을 도메인 지식을 활용해 더 잘 알 수 있다면, 더 좋은 성능이 나오겠지