맥드라이브 점주가 되어보자!
코로나로 학교를 어영부영 보냈던 대학교 1학년을 마치고, 군대를 다녀온 후 2학년이 되며, 자격증도 이것저것 따보고 진로 목표를 고민하며 빅데이터와 AI 분야를 꿈꾸게 되었다. 전공수업으로 데이터 마이닝 입문 수업을 들으며 처음으로 데이터 분석 프로젝트(ML)를 진행해 볼 수 있었다.
1. 문제 정의
드라이브 스루는 우리 삶 곁의 하나의 양식으로 이미 성공적으로 자리 잡았습니다. 코로나 사회 속에서도 드라이브 스루 방법을 통해 검진을 진행하는 등 다양한 분야로의 시도가 이루어졌습니다. 공격적으로 점포를 늘려가는 회사들을 보며 어떤 차량 접근성 변수와 경제적인 요인들이 매장 위치 및 매출에 영향을 미치는지 알아보고자 하였습니다.
따라서 직접 맥드라이브 점주가 되어서, 최적의 장소를 선정하기 위해 기존의 맥드라이브, 그리고 드라이브 스루를 마찬가지로 공격적으로 확장하고 있는 스타벅스 DT의 데이터를 이용하여 프로젝트를 진행해 보았습니다.
2. 데이터 수집
데이터 수집 방법
- 맥도날드, 스타벅스 공식 홈페이지에서 매점명, 주소, 좌표 데이터 수집
- 수집한 주소를 바탕으로 소상공인 진흥 공단 사이트에서 각 주소별 상권 정보 입력
- 드라이브 스루 매장의 특징을 드러낼 수 있는 데이터 추가 수집!
맥드라이브 매장 정보 (252개) | https://www.mcdonalds.co.kr/kor/store/main.do |
스타벅스DT 매장 정보 (479개) | https://www.starbucks.co.kr/store/store_map.do |
상권 정보 (700m) | https://sg.sbiz.or.kr/godo/index.sg (소상공인 진흥 공단) |
전국 주유소 데이터 | https://www.data.go.kr/data/15129441/standard.do (산업통상자원부) |
전국 관광지 데이터 | https://www.data.go.kr/data/15021141/standard.do (문화체육관광부) |
전국 공시지가 데이터 | https://www.data.go.kr/data/15029071/standard.do (국토교통부) |
3. 데이터 전처리
결측치 확인 : 주소의 변경으로 인해 결측치를 수작업으로 처리함 (ex. 부천시 지역구)
사용한 데이터 : 변수 이름과 설명 (상권 정보의 반경 : 700m, 주유소 및 관광지 : 1km)
Upso | FlowPop | EmpPop | AbodePop | EmpAvgCo | LandPrice | SalesAmt |
반경 내 업소 수 | 유동인구 | 직장인구 | 주거인구 | 주거인구 | 공시지가 | 월 평균 매출액 |
station_within_radius | closest_station_distance | tourist_within_radius | closest_tourist_distance |
반경 내 주유소 수 | 최근접 주유소 거리 | 반경 내 관광지 수 | 최근접 관광지 거리 |
4. 탐색적 데이터 분석 (EDA)
가. 업종별 차이 확인
맥도날드와 스타벅스는 패스트푸드와 커피라는 업종 차이에도 불구하고 상권정보에 대하여 비슷한 분포를 보임
나. 지도 시각화
SPOTFIRE를 활용해 시각화한 맥드라이브 매장과 스타벅스 DT 매장 위치 (수도권)
5. 모델링 및 분석
가. 전국 드라이브 스루 매장 군집화
K-means 알고리즘, DBSCAN 알고리즘을 이용해 각 매장을 군집화하고, 관광지형, 교통인접형, 상권가형, 주택단지형으로 나누어지길 기대함
나. 분석 결과
수업 시간에 배운 다중 선형 회귀, 의사 결정 나무와 SVM 모델을 추가로 학습해 보고, 전체 매장, 업종 구분 (패스트푸드, 카페), 1번의 군집을 바탕으로 각각의 성능을 비교
6. 모델링 결과
7. 프로젝트 후 느낀 점
- 첫 데이터 분석 프로젝트 첫 데이터 분석 프로젝트로서, 이론으로만 배웠던 머신 러닝 기법을 사용해 보았다. 비록 성능은 좋지 못했지만, 목표 설정과 웹 스크래핑을 이용한 데이터 수집, 여러 모델들을 활용해 보고 가장 성능이 좋았던 모델 선정, 군집화까지 직접 코딩해 볼 수 있었다.
- Selenium 패키지 활용 이전까지 Kaggle 문제처럼 데이터 정제가 잘 되어있는 문제만 풀다가, 직접 데이터를 수집하려니 실제 문제를 해결하기 위해 많은 노력과 한계가 존재하다는 것을 느꼈다. 이번 기회에 블로그를 참고해 보며 맥도날드와 스타벅스 매장 정보를 웹스크래핑 하였고, 스스로 상권정보 매크로를 만들어보는 경험을 해볼 수 있었다.
- 카카오 API, Google maps API 활용 처음에는 주소를 바탕으로 행정동, 법정동 단위의 분석을 시도했다. 하지만 성능이 심히 좋지 않았고 시각화에 문제가 있다는 것을 깨닫고 위도와 경도를 이용하는 것으로 방향을 바꾸었다. 주소를 바탕으로 카카오 REST API를 이용해 좌표를 얻었으나 공식 홈페이지에서 제공되는 좌표가 있어 필요가 없었고, 시각화 또한 구글 지도와 Folium을 통해 완성할 수 있었다.
- 데이터 개수의 중요성 국내 드라이브 매장 수가 데이터 분석을 하기에는 너무 부족했었던 것 같다. 데이터 증강을 시도해 봤으나 시간이 부족하기도 했고, 주유소와 관광지라는 차량 환경을 대변해 줄 수 있으리라 기대하며 변수를 추가하였으나 성능이 나아지지 않았다. 빅데이터가 아닌 소규모의 데이터 속에서 좋은 성능을 이끌어 낼 수 없었던 것 같다.
참고자료
https://velog.io/@now2466/스타벅스-DT매장과-맥도날드-DT매장의-위치-시각화
https://apis.map.kakao.com/web/sample/addr2coord/\
https://velog.io/@insung_na/Selenium과-주유소-가격-정보