오랜만에 프로젝트 소개를 주제로 블로그 글을 작성한다.
이 프로젝트 또한 학기 중에 진행한 프로젝트 새롭게 진행하고 작성하는 글은 아니지만
당시 최선을 다해서 프로젝트를 진행했고, 결국 학점 A+도 받았다.
데이터 분석/선형대수학/AI에 대해서는 아직 많이 부족하고 진로로 희망하는 분야도 아니지만
나름 재밌는 주제의 프로젝트이므로 글을 통해 정리한다.
프로젝트 소개
Pandas/Numpy 등의 파이썬 라이브러리를 이용해 고양시의 어느 행정동에서 고깃집을 차리면 매출 대박이 날 확률이 가장 높을 지에 대해서 데이터 분석하고 결과를 도출한 프로젝트이다.
주제 선정 이유
지인의 조부모님께서 고깃집을 운영 중
-> 점포를 확장하실 계획 중이셨다.
실생활에서 해결해야 할 것을 찾고 이를 해결하는 프로젝트를 진행하고 싶었다.
현재는 백석동에서 운영 중이시므로, 다음엔 고양시의 어느 행정동에서 가장 성공확률이 높을지 분석했다
개발 기간
2023.12.01 ~ 2023.12.15
데이터 소스
- 경기도 행정동/업종별 상권 평가 데이터
- 경기도 행정동별 외식 업종 카드 소비 현황
- 경기도 행정동별 배달앱 카드 소비 현황
위 데이터를 전처리하고 가공해서 사용하였다.
분석 방법
- 행정동의 상권/소비 데이터 조사
- 선형회귀분석(중회귀분석) 기법을 통해 데이터 분석
- 분석 결과를 바탕으로 피드백
- 변수 선택법을 통해서 분석
- 3~4번 반복
- 최종 분석 결과 도출
프로젝트 과정
선형회귀분석을 선택한 이유
- 선형 회귀 분석은 쌍으로 관찰된 연속형 변수들 사이의 관계에서 한 변수를 원인으로 다른 변수들을 결과로 하는 분석
- 종속 변수와 독립 변수 간의 선형 관계를 기반으로 하여 새로운 데이터에 대한 값을 예측할 때 사용
- 선형회귀분석은 다시 독립변수의 개수에 따라 단순 선형과 다중 선형으로 구분
- 성공의 기준(매출)을 종속 변수로 잡고, 여러 가지의 요인을 독립 변수로 잡아서 중회귀분석을 시행
- 이를 통해 순위를 매겨 매점 확장 시 가장 매출이 높을 것으로 예상되는 행정동 순위 도출
데이터 전처리 과정
실제 데이터를 모아서 처리한다면 null값이나 너무 낮거나 높은 이상치들을 처리해야 한다.
하지만 우리가 사용한 데이터는 해당되는 부분은 이미 전처리한 데이터였다.
그래서 여러 가지 데이터를 가지고 우리가 필요한 부분(경기도의 여러 행정동 중 고양시만 가져온다는 등)을 추렸다.
중회귀분석
성공의 기준에는 여러 가지가 있겠지만 그중 전체 매출액을 기준으로 잡고 이를 종속변수로 설정하였다.
전체 매출액은 데이터 중 '배달앱 전체 이용금액 + 외식업종카드 결제금액'을 더하여 사용하였다.
현금 결제 금액은 따로 데이터를 제공하지 않기도 하고, 추적하기도 어렵다고 생각한다.
독립 변수로는 시장성, 성장성, 개폐업 안정성, 경쟁도, 유동인구 시장성, 거주인구 시장성을 잡았다.
P-value 값을 보면 성장성, 경쟁도, 유동인구 시장성이 0.05를 초과하므로 상관관계에 이상이 있다고 판단했다.
상관관계 분석
위 코드를 통해서 상관관계를 히트맵 형태로 시각화하였다.
대부분 상관 계수가 낮지만 거주인구 시장성과 유동인구 시장성은 0.5가 넘으므로 상관관계가 있는 것으로 판단하였다.
그래서 변수를 선택하기 위해서 전진단계별 선택법을 사용하였다.
변수 선택
전진 단계별 선택법을 통해서 최종적으로 선택된 변수는 '거주인구 시장성'과 '성장성'이다.
이 두 변수가 전체 매출액에 대한 가장 유의미한 영향을 끼치는 것으로 판단하고 다시 분석을 하였다.
그래서 나온 결과 값에서는 다른 값은 정상이지만 더빈-왓슨 비가 2에 근접하지 않았다.
그럼 독립성이 높다고 판단할 수 없기에 변수선택을 다시 하기로 결정했다.
R에서 step 메서드를 사용하면 변수선택 한 모든 경우의 수를 한 번에 도출하는 방법이 있기에 이를 이용하였다.
여러 가지 경우의 수 중에서 시장성, 성장성, 거주인구시장성을 선택한 경우가
가장 AIC가 가장 낮게 나와서 이를 선택하는 것이 가장 이상일 것이라 예상했다.
이를 통해서 분석하니 이전보단 지표들이 개선된 것을 확인할 수 있다.
결과 도출
시장성, 성장성, 거주인구 시장성이 범위가 0~100 사이이므로 이를 평균으로 내어
내림차순으로 정렬하여 순위를 매겼다.
그래서 결론적으로
- 능곡동
- 풍산동
- 탄현동
- 송산동
- 행주동
순으로 고깃집을 차렸을 때 매출액이 높을 것이라고 예상된다는 결과를 도출했다!
Keep, Problem, try
keep
- 실생활에서 해결해야 하는 문제를 상정하고, 이를 해결하는 프로젝트를 경험했다.
- jupyter notebook, python, numpy, pandas 등 여러 가지 새로운 ide, 언어, 라이브러리를 배웠다.
problem
- 결론의 신뢰성 의문
- 데이터는 전부 0~100까지의 범위 안에 드는 변수를 사용했지만 시장성의 평균적인 점수가 다른 변수들보다 커서 상대적으로 시장성의 영향을 많이 받은 결과를 도출됐다.
try
- 데이터를 전처리할 때 각 데이터의 전체범위로 해야 할지, 아니면 최댓값과 최솟값을 범위로 잡고 데이터를 가공해서 하면 좋을지 고민해 보자
프로젝트 깃허브