1. Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
Making Travel Schedule
2. • Goal
- 가고자 하는 여행지에서 유저의 취향에 맞는 Attraction을 추천
- 추천 시 여행지에서 머무는 일정을 고려하여 후보 여행지 집단에서 일정치의 여행지를 추출
- 추출한 여행지들을 일정 별로 묶어 Dictionary 형태로 만든 후 json 파일로 변환하여 웹에 출력
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
3. • Why? (프로젝트 선정 이유)
- 일단 내가 좋아하는 것을 프로젝트 주제로 삼자 (여행, 영화)
- 여행을 갈 때 보이는 사람들의 일련의 패턴 중 알고리즘화 할 수 있는 과정을 생각해보자
- 이를 자동화 해보자
자신의 취향을 바탕으로
후보지 선정
여행 일정의 효율을 위해
후보지 주변 탐색
일정 작성
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
4. • How? (프로젝트 구현 과정)
① Data for Trip Information
Trip Advisor Web Service와 Google maps Open API를 활용하여 데이터 수집
1) 데이터 수집
Trip Advisor
• 도시 별 관광지 이름
• 관광지 별 타입
(박물관, 관광 명소, 산책로 등)
• 관광지 별 리뷰 정보
Google Maps Open API
• 관광지 별 위도, 경도 정보
• 관광지 별 ID
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
5. ② Data for User Preference
유저가 선호하는 관광지를 Google Maps Open API의 place_id 형식에 맞춰 저장
③ Making Database
위의 정보들을 4 개의 Table로 MySQL에 저장
Geoinfos
• 관광지 ID, 이름
• 도시, 주소
• 위도, 경도
Ratings
• 관광지 별 리뷰 수
• 관광지 별 평점
Types
• 관광지 Type
Users
• User ID
• 유저 선호 기방문 관
광지
(Google Maps Place_ID)
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
6. ㆍContent Based Filtering
- Trip Advisor Open API 접근 미승인으로 유저들에 대한 대량의 Data Set이 없어 본인과 지인들이
방문한 장소를 ID 별로 입력
- 상대적으로 적은 Data Set으로 추천 알고리즘을 구현해야 하므로 Collaborating Filtering이 아닌
Content Based Filtering 방법 선택
2) 유저 선호도 파악
회원 정보 입력
• 회원 ID, Target City 입력
선호도 계산
• 회원 선호 방문지 Filter
• 방문지들의 Type을 Count하
여 선호도 파악
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
7. • User 들의 선호도가 높은 관광지 별로 주변 관광지를 탐색
- 관광지의 위도, 경도 정보를 거리로 전환하여 일정 거리에 있는 관광지들을 탐색
(해당 거리는 User 별로 Customizing)
- 탐색하여 나온 관광지와 기준 관광지를 하나의 Node로 Grouping
3) Making Node
User 선호 관광지 1
<Node : 0>
주변 관광지 1 주변 관광지 2 주변 관광지 3
User 선호도를 기준으로 추출된 관광지
User 선호도와 관련 없는 관광지
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
8. • 하루 일정을 관광지간의 거리로 기준하여 일정 작성
4) Making Schedule
Node 탐색
+
Node 간 거리
합
(Node 가 1개
이면 생략)
Node에 해당
하는 관광지
별 거리 합
거리들의 합
이 일정치 이
상인가?
하나의 일정
제작
일정의 합이
유저의 일정
과 맞는가?
결과 출력
No
No
Yes Yes
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
9. • Summary
Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
1) 결과
<결과의 Excel 출력 화면>
• 입력
1) 본인이 인상 깊었던 장소 입력
2) 도시 : Moscow
3) 일정 : 3일
10. Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
<결과를 토대로 Google Maps에 찍어본 결과; 1일 – 빨간색, 2일 – 노란색, 3일 – 파란색>
11. Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
2) 모델 평가
추천 장소 : 29 비추천 장소
실제 방문 : 20 True Positive : 16 False Negative : 4
실제 미방문 : - False Positive : 13 True Negative : -
• Precision : 55 %
• Recall : 80%
12. Data Science School - 이정호
Personal Project / 2016.11 ~ 2016.12
3) 아쉬운 점
- 좀 더 빠른 반응 속도
웹 서비스를 하기에는 다소 느린 반응 속도
- 일정의 기준
지금은 단순 이동거리만을 일정의 기준으로 하고 있지만 관광지별 소요시간까지 고려하면
더 나은 일정 작성이 가능
이를 개선한다면 지금보다 낮은 추천 장소가 나올 것이며 이는 곧 Precision의 증가
4) 활용 방안
- 숙소, 식당 추천
해당 모델은 클래스 안에 Node 별 중심 위도와 경도를 저장하고 있으므로, 이를 기준으로
식당 및 숙소 추천 또한 가능