밑바닥부터 시작하는 trivago 추천시스템
: '수백만개의 호텔 중에서 나한테 왜 이 호텔을 추천해준 거지?'
내 화면에 보이는 호텔은 수백만개의 호텔 중 아주 일부란 사실 알고 계신가요?
데이터 관심 있는 사람이라면 한 번쯤 궁금했을 추천 시스템!
Trivago의 실제 로그 데이터를 가지고 직접 밑바닥부터 구현해 보았습니다.
그리고 직접 만든 추천 시스템 시연까지!
이제는 "뭘 좋아할지 몰라서 다 준비"하지 않아도 돼요.
왜냐하면 우린 당신이 좋아할 것을 알고 있거든요.
일상이 된 추천 서비스들, 이제는 알고 이용해봐요!
11기 신승진 박보정 박효선 위승민
[국내 최초 빅데이터 연합동아리 BOAZ]
유튜브 - https://www.youtube.com/channel/UCSniI26A56n2QZ71opJtTUg
페이스북 - https://www.facebook.com/BOAZbigdata
인스타그램 - http://www.instagram.com/boaz_bigdata
블로그 - https://blog.naver.com/boazbigdata
5. Resources
Search engine
Meta search engine
Introduction
Trivago
• 호텔과 직접 계약하는 플랫폼 X
• 호텔 검색엔진들의 검색엔진
• 일종의 중개매체
도메인
Hotels
Hotel Hotel Hotel Hotel Hotel Hotel
7. Introduction
Data
• 한 유저가 여러 번 접속한다.
• 한 유저의 세션이 여러 개이다.
유저 896,088 명
세션 1,141,446 개
유저1
유저2
유저3
유저4
2018-11-06 2018-11-082018-11-01
유저와 세션의 개념
세션1
X
세션2세션1 세션3 세션4
X X X X ?X
세션1 세션2
X X X ?
세션1 세션2
X ?
8. Introduction
Data
세션 내 유저행동의 개념
실제 UI 에서 행동한 하나 하나의 단위
• 어떤 행동을 했는지 .
• 무엇과 상호작용 했는지
데이터의 트랜젝션
• Action_type
• Reference .
9. 유저의 행동 정보
세션 based
Introduction
Data 세션 내 유저행동의 개념
• 유저의 행동을 반영하는 추천 시스템
• 유저의 세션을 기반으로 분석
개인화 모델
10. Introduction
Trivago
Goal
유저가 click out 할 것 같은 순서로 Top 25 호텔 추천
Estimation : MRR
추천한 25개 중에 유저가 실제로 click out 한 호텔의 순위점수
목표와 평가
1.
2.
3. Test data : 121,526개의 session의 ‘click out’을 맞혀라
13. Mexico City, Four Seasons Hotel
Sort by: ‘intersect count’
Mexico City, The Saint Hotel
Recommendation system
Content Based Filtering
이 유저가 실제로 상호작용한 아이템
이 유저가 실제로 Click out한 아이템
The Saint Hotel
Four Seasons Hotel
16. : 이용자가 직접 평가한 점수 = 선호도 지표
평점
좋아요
Explicit rating
1 Feedback
Problem
17. : 유저의 직접적인 평가가 아님. 유저들의 행동들을 관측하여 그들의 행동에서 그들의 선호도를 파악.
사용자가 어떤 아이템을 조회했는지 사용자의 시청 횟수, 머문 시간 등
Explicit rating → Implicit rating
1 Feedback
Solution
18. 2. Dwelling time
더 오랜 시간 상호작용한 아이템일 수록
유저의 선호도가 높다.
1. Interaction count
상호작용(사진〮정보 보기)을 많이 한 아이템일 수록
유저의 선호도가 높다.
Explicit rating → Implicit rating
1 Feedback
Solution
19. Item_id
Session_id
666856 109038 1257342 … 3377332 3066244
1d688ec168932 4 2
f05ab0de907e2
26b6d294d66e7 10
…
4a01c3afbc224
07628a0f5be0b 23
928016 개
Train 에 사용한 matrix : 1141446 * 928016
Test 에 사용한 matrix : 121526 * 929016
Sparse Matrix
보통 사용자들은 굉장히 적은 item에 대해서만 interaction을 함
2 Sparsity
Problem
20. Session_id 당 interaction하는(implicit rating 값이 있는) item_id 수
mean 2.68132
Min 1
Q1 1
Q2 2
Q3 3
Max 166
2 Sparsity
Problem
Sparse Matrix
보통 사용자들은 굉장히 적은 item에 대해서만 interaction을 함
21. user
co-rated user: 6
Hilton, Busan
Highest Rating
Recommendation system
Neighborhood Model
Lotte Shilla Joseo
n
Hyatt HILTON
보정 5 7
승민 3 8 1
승진 2
효선
승현 1 10 1
대왕 2 2
25. 𝜇 : 전체 rating의 평균
𝑏 𝑢 : 특정 user의 deviation(평균과 얼마나 차이가 있나)
𝑏𝑖 : 특정 item의 deviation(평균과 얼마나 차이가 있나)
Item_id
Session_id 666856 109038 1257342 … 3377332 3066244
1d688ec168932
4 2
f05ab0de907e2
26b6d294d66e7
10
…
4a01c3afbc224
07628a0f5be0b
23
Baseline Only Algorithm
Recommendation system
Matrix Factorization
26. m X n m X r r X r r X n
SVD(Singular Value Decomposition) Algorithm
Data
User의 특징
Item의 특징
Recommendation system
Matrix Factorization
27. SVD(Singular Value Decomposition) Algorithm
추천 문제를-> 최적화 문제로 전환
한 유저에 대해서 어떤 아이템에 대한 레이팅을 얼마나 잘 예측하냐를 보는 것(RMSE)
Recommendation system
Matrix Factorization
28. Algorithm Test RMSE
SVD 6.5272
SVDpp 6.7223
BaselineOnly 6.3431
MRR
0.350
Reference count
Range 1 ~ 21
Recommendation system
Matrix Factorization
32. 1. 호텔 도메인
- 호텔의 특징(‘FILTER’, ‘호텔 특징')은 중요한 지표가 아니다.
- 중요한 지표는 ‘유저의 행동‘ (‘INTERACTION COUNT’, ‘DWELLING TIME’)
2. 모델
- Neighborhood 모델 GOOD
- 앙상블 모델과 Collaborative Filtering 함께 사용 추천
Recommendation system
Conclusion