최근 국내 여행의 수요가 증가했지만 여전히 관광산업의 규모는 낮았고, 그 원인은 관광 수요가 특정 지역에 집중되었기 때문입니다.
이에 따라 기존 예측과는 벗어난 소비를 보이는곳은 어떤 특성을 지니고 있는지 확인하고
현재 정체 되어있는 지역들에 새로운 관점을 제시하는 프로젝트입니다.
-
6명의 팀원들이 각자 데이터수집과 분석, 모델링, DB구축 및 자연어 처리 등의 역할을 나누어 수행
-
🕰️ 프로젝트 기간 : 2023-05-03 ~ 2023-05-24
python : 3.9.7
sklearn : 1.0.1
lightgbm : 3.1.1
tensorflow : 2.7
pandas : 1.3.5
numpy : 1.21.4
matplotlib.pyplot : 3.5.0
- 독립변수 : 거리별 방문자 수 / 내비게이션 검색량
- 종속변수 : 방문자 소비액
-
데이터 수집
거리별 방문자 수 , 내비 검색 건수, 지출액, 블로그 크롤링 (한국관광 데이터랩, 네이버 블로그, 네이버뉴스, 빅카인즈)
-
전처리
-
Pandas, MinMax Scalar, One-Hot encoding, Okt, Mecab
-
머신러닝 Scikit-Learning
- TF-IDF vectorizer, Countervectorizer, K-means, LDA
-
딥러닝 Tensorflow
- Tokenizer
-
MySQL을 활용하여 AWS Cloud에 저장
- 팀 프로젝트로 완성한 서비스를 서버로 제공할 때 Amazon EC2의 웹 서비스 인터페이스를 사용하여 인스턴스(서버)를 쉽고 간단하게 구현할 수 있으며, 높은 안정성으로 유연하게 서비스 관리를 할 수 있기 때문에 aws를 선택
-
-
EDA 및 데이터 시각화
- Matplotlib, Seaborn
-
예측모델을 통한 지역 예측
- K-means 클러스터링 결과
-
정량적 분석
- 지역별 방문자 수, 검색량 증가 등의 지표를 분석하여 트렌드 도출
-
정성적 분석
- 여행자 리뷰, 소셜 미디어 게시물 등을 분석하여 인기 증가의 원인과 관련된 의견 수집
-
머신러닝
- LightGBM(250개의 지역의 상위 10위 지역 추출) : 모델의 일반화를 보여주는 잔차를 통해 이상 지역 탐지
-
군집화, 토픽모델링
- K-means, LDA
- 구성 : sql.py, encoding.py, XGBR.py, LSTM_Module.py
- 순서 : sql.py -> encoding.py -> XGBR.py or LSTM_Module.py
- sql.py : SQLite로 DB 파일 만들고 데이터를 저장한 후 데이터테이블을 파이썬에 재추출
- encoding.py : DB에서 추출한 데이터를 분석에 적합하도록 조작
- LSTM_Module.py : LSTM 시계열 예측 분석(구글 코랩에서 분석되도록 세팅)
- LGBM
- LDA 단어 빈도수를 기반하여 DTM 단어 행렬을 생성
- 토큰화 한 단어들의 counterverctorizer 사용하여 벡터화
from konlpy.tag import Okt
import numpy as np
import pandas as pd
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split
의의
- 기존의 인기지역과 대비되는 특이 지역들은 지역적 특색 부족으로 인해 방문객의 유입이 일정한 패턴을 띄지 않는다는 결과를 도출할 수 있음 따라서 이러한 특이 지역들도 인기 관광 지역처럼 성장하기 위하여 유휴 공간 활성화, 지역 고유 문화 컨텐츠 구축 등의 방법을 활용하는 것을 제안
- 언제 어디서든 찾기 쉬운 지역 관광 정보 제공
- 유휴 공간의 활성화
- 지역 고유의 문화 콘텐츠 구축
- 잠재 관광수요 촉진을 위한 부가혜택
한계
-
국내 여행 행태가 일반적이지 않은 지역을 발견하고 싶었다.
- 매출액, 네비게이션 검색량, 방문자 수의 일반화된 관계가 존재할 것이라고 가정
- 일반적이지 않은 지역을 발견하고자 하였다.
- 매출액을 종속변수로 설정하고 예측된 매출액과의 잔차를 확인하여 관계를 파악하고자 함
- 생각보다 극명한 차이가 존재하는 지역을 발견하지는 못했다.
- Q. 가설 검정 결과가 예상과 다를 때 어떻게 대처했어야 했을까?
- Q. 어떤 피처를 포함하면 더 유의미한 결과를 얻을 수 있었을까?
-
모델 선정
- 선형모델 → 기본 가정을 만족하지 않았다.
- 머신러닝모델 → 트리모델을 사용
- Linear regression → 트리모델보다 큰 MSE
-
모델 성능 평가 지표 선택
- test set이 존재하지 않을 때, 예측 모델의 성능평가 지표 선정 기준은 무엇인가?
-
잔차그래프 확인
-
선택한 모델에 따라 발생한 잔차를 기준으로 일반적이지 않은 지역을 선정하고자 함. 그러나 어떻게 그래프를 해석해야 하는지에 대한 문제가 발생
-
배운점 : 비즈니스 로직에 따라 해석 방법이 달라진다!
-
전체 기간에 대하여 잔차의 평균을 확인한다.
-
잔차의 진폭이 큰 지역을 선택한다.
-
0을 기준으로 잔차의 진동이 큰 지역을 선택한다.
-
잔차의 진동이 큰 지역을 선택, 모델이 가장 일반화하지 못한 지역이라고 판단하였다.
-
잔차의 진동을 x축과 잔차그래프의 면적으로 파악하였다.
-
Q. 이 로직이 정말 논리적인 로직이었을까? 더 최선의 선택은 없었을까?
-
-
-
선정한 지역에 대하여 텍스트 마이닝을 통해 특성을 파악하고자 하였다.
-
네이버 뉴스
-
다음 뉴스
-
빅카인즈
-
블로그
-
문제점 :
- 키워드 선정 - 원하는 문서를 얻기 위한 키워드 선정에 문제가 있었음. 지역에 관련된 전반적인 문서를 얻고자 했으므로 “지역명”를 키워드로 사용
- 어떤 단계에서 LDA를 진행하는가?
-
전체 문서에 대한 LDA를 진행하고 비슷한 내용으로 클러스터링
- 키워드가 포괄적이라서 너무 다양한한 토픽이 추출, 프로젝트 방향과 맞지 않다고 판단하여 키워드를 수정하여 다시 추출하기로 결정: “지역명+가볼만한 곳”
- 여전히 토픽의 범위가 너무 넓다
- 여행과 관련이 없는 문서를 먼저 선별하는 것이 필요하다고 판단
- “여행,관광,휴가,호텔,볼거리,숙소,맛집”이 포함된 문서만 선별하여 사용
-
전체 문서를 먼저 클러스터링하고 각 군집에 대하여 LDA
- case1) 예상보다 돈을 많이 번 지역(상위5), 못 번 지역(하위5) 각각 LDA해서 토픽 추출
- case2) 전체 문서를 클러스터링해서 전체 지역을 3~4개 카테고리로 분류
-
-