숙소와 가깝고 여행 스타일이 유사한 다른 여행객들이 방문한 여행지들의 평점을 반영하고 이를 재구성하여 최적의 여행 경로를 추천합니다.
KHUDA 5기 ML 세션 2조, 해보조☀️입니다.
김민권 | 김시우 | 김정환 | 이두원 |
---|---|---|---|
이태웅 | 장서연 | 허윤지 |
---|---|---|
여행객의 정보가 담겨 있는 여행객master.csv의 여행 스타일 7가지 특성 (
자연
vs도시
,숙박
vs당일
,새로운지역
vs익숙한지역
,휴양/휴식
vs체험활동
,잘 알려지지 않은 방문지
vs알려진 방문지
,계획에 따른 여행
vs상황에 따른 여행
,사진 촬영 중요하지 않음
vs사진 촬영 중요
) 을 추출했습니다. 이때 여행객의 숙소는 이미 정해졌기 때문에편하지만 비싼 숙소
vs불편하지만 저렴한 숙소
는 추출하지 않았습니다. 이로써 8개의 특성(여행객ID, 여행스타일7개)과 3200개의 샘플로 전처리 하였고 이를 traveler_master.csv파일에 저장하였습니다.
방문지 정보가 담겨있는 방문지 정보.csv의 62273개의 샘플 중 위도, 경도가 없는 일부 데이터들의 값들을 추가하였습니다. 또한 ‘올레길’, ‘올레길 주차장’처럼 같은 장소를 다른 표기로 기재된 장소를 한 장소로 통일했습니다. 방문지를 관광지 그리고 식당/카페로 분류하기 위해 호텔, 집, 사적 장소들을 데이터에서 배제하였습니다. 관광지와 식당/카페를 구분하여 식당이면 RES, 관광지면 TOU로 새로운 특성을 추가하고 프로젝트에 활용되지 않는 특성을 제거하여 데이터를 간소화했습니다. 이로써 11개의 특성(
여행객ID
,여행ID
,방문 순서
,장소
,여행 유형
,경도
,위도
,만족도
,재방문의향
,추천의향
)과 39059개의 샘플로 전처리하였고 이를 visit_info.csv 파일에 저장하였습니다.
여행 정보가 담겨있는 여행.csv의 데이터 중 여행객 ID와 주요 이동 수단 특성을 추출했습니다. 이를 travel.csv파일에 저장하였습니다. visit_data에 travel.csv와 visit_info.csv 파일을 travel ID 기준으로 합치고 visit_final에 traveler_master.csv를 travel ID 기준으로 합쳤습니다.
제주도 여행객 숙소의 위도, 경도 데이터를 활용하여 군집을 분류했습니다. 이때 최적의 클러스터 개수(k) 값을 찾기 위해 k를 제주도 읍면리의 총 개수인 43개까지 점차 증가시키면서 클러스터링을 수행하고, 이에 따른 SSE(Sum of Squared Errors) 값을 계산하여 그래프로 나타냈습니다.
k=5를 최적의 클러스터 개수로 선정하였습니다. 데이터의 위도, 경도 상 센트로이드(centroid)는 아래와 같이 나왔습니다. 각 데이터를 군집화하였을 때 위와 같이 숙소의 위치가 분류됨을 확인하였습니다.
사용자의
여행 스타일
데이터를 입력 받습니다.
자동차의 유무
로 두집단을 나눕니다.
MSE 평균 제곱 오차
방법을 이용하여 숙소의 군집에 포함된 범위에서 여행 스타일이 유사한 여행객 상위 5명을 선정합니다. 이때 유사도 측정을 위해MSE 평균 제곱 오차
방법을 선정한 이유는 선호도가 나타내는 특징 공간 내에서 벡터의 방향의 유사도 보다는 벡터의 길이의 유사도를 따져야 하기 때문입니다.
여행지 만족도는 1부터 5까지의 점수로 구성된 방문지 정보의 특성인
만족도
,재방문 의향
그리고추천 의향
점수의 합으로 정의했습니다.
선호도가 유사한 5명의 여행객의 방문지 정보를 추출한 후
관광지
와식당/카페
로 분류합니다. 그 다음 관광지 그룹을 만족도가 높은 순으로 정렬한 후 중복 위치를 제외한4가지 여행지
를 추출합니다.
선정한 장소 네 곳을 지도에 표시하여 숙소에서 각 장소와의 거리 계산 후, 숙소와 가장 가까운 장소 A를 선정합니다. A에서 남은 장소와 거리 계산 후 A와 가장 가까운 장소 B를 선정합니다. B에서 남은 장소와 거리 계산 후, B와 가장 가까운 장소 C를 선정한다. 남은 D는 마지막 장소로 관광지만으로 구성된
A-B-C-D 경로
를 완성합니다.