빅콘 데이터분석리그 챔피언부문에서 9월초부터 10월중순까지 진행했던 전기차충전소 입지선정 프로젝트가 끝났다.
팀원들과 몇일밤을 잠 못자가며 하나의 프로젝트를 완성해냈다는 것에서 많이 뿌듯함을 느끼고 있고 한달동안 그동안 접해보지 않은 내용들을 공부하면서 얻은게 많은 것 같다. 해당 프로젝트를 진행하면서 겪었던 내용이나 새로 배운내용들을 머리속에서 지워지기 전에 기록해놓을 예정이다.
프로젝트를 진행하면서 새롭게 진행해본 부분 중 가장 큰 비중을 차지했던 것이 데이터를 바탕으로 분석대상의 특성을 측정해줄 수 있는 정량적인 지수를 만드는 것이었다. "충전소의 입지가 어디에 위치하는 것이 가장 최적일까"를 고민하는 것이 프로젝트의 주제였기 때문에 최종적인 입지를 선정하기 위한 타당한 근거가 필요했고 그러기 위해선 '입지 후보군 마다 충전소 입지에 영향을 줄 만한 요인들이 어떻게 다른지'를 알아야할 필요가 있었다. 이번 포스트에서 다룰 내용은 세부적인 입지선정까지 가는 과정에서 용인시내의 행정동별로 전기차에 대한 수요를 지수형태로 측정하여 각 행정동별로 지수에 따른 우선순위를 부여하는 프로세스에 해당한다.
대회에서 지정한 조건이 거주지와 활동지를 나누어서 전기차 완속충전에 대한 수요및 입지를 비교해야하는 것이었기 때문에 전체 프로세스에서 용인시가 거주지인 사람들을 대상으로 한 입지우선순위와 용인시가 활동지인 사람들을 대상으로 한 우선순위를 구분해서 분석했다.
해당 프로세스에서 도출될 수요지수는 용인시 내의 각 행정동의 전기차 충전수요가 어느정도 되는가를 측정할 수 있는 지표가 될 것이다. 전기차 충전소는 한번 입지가 정해진 후 해당 위치에서 몇년동안 계속 위치하며 주변의 충전수요를 충족시키는 것이기 때문에 현재에 각 행정동에서 현재 발생하는 충전수요와 미래에 발생할 것으로 예상되는 잠재수요를 구분할 필요가 있었다. 이후 행정동별 수요지수를 계산하는 과정에서 해당 행정동 내에서 발생하는 전기차 충전의 현재수요와 잠재수요가 모두 고려되도록 측정하였다.
각 행정동별 현재수요는 "현재 각 지역별로 발생하는 충전수요"이기 때문에 대회에서 제공한 데이터의 격자별 전국민 확대추정계수를 가공하여 사용했다. 확대추정계수는 유플러스 고객의 수와 주민등록 인구를 비교하여 지역별로 해당조건을 만족하는 고객의 수를 추정한 계수이기 때문에 각 지점별 전기차 충전에 대한 현재수요라고 파악했고 각 행정동별로 포함하고 있는 cell의 count를 더하여 행정동별 현재수요로 만들었다.
잠재수요의 경우 "해당 지역에 미래에 늘어날 충전수요가 얼마나 되는가"를 묻는 문제다. 현재수요의 경우 확정적인 데이터로 주어졌기 때문에 해당 데이터가 확정적인 결과값이었지만 잠재수요의 경우 '미래의 수요'를 대변할 수 있는 변수를 찾아내어 해당변수에 영향을 미칠 변수들을 바탕으로 수요를 계산해내는 작업이 필요했다. 또한 거주지 기준과 활동지 기준 해당지역의 잠재수요를 대변할 수 있는 변수를 각각 설정하여 각 지역별로 거주지와 활동지를 나누어 분석했다. A지역에 거주하는 사람들의 충전수요와 A지역으로 출근하는 사람들의 충전수요가 각각 얼마나 증가할 것인가를 판단하는 기준이 다를것이기 때문이다.
따라서 해당지역이 거주지일 경우 앞으로 "얼마나 많은 사람들이 전기차를 구매할까"라는 질문이 잠재수요를 대변할 수 있다고 판단했고 '각 지역의 전기차 증가량'을 잠재수요를 대변할 수 있는 변수로 설정했다. 반면 해당지역이 활동지일 경우 "얼마나 많은 전기차 사용자들이 앞으로 더 방문할까"라는 질문이 잠재수요를 대변한다고 판단했고 '각 지역의 교통량 증가량'을 변수로 설정했다. 다만 변수들이 지역별 전기차 증가량을 대변하는 변수이기 때문에 각 변수들을 그대로 해당 지역의 잠재수요로 반영해 버리는 것은 분석의 정확도가 떨어질 수 밖에 없다. 단순히 전기차 증가량이 높은 지역이 더 많은 사람들이 전기차 구매를 한것이라거나 교통량이 많이 증가한 지역이 사람이 앞으로 많이 올 지역이다라고 판단하기엔 무리가 있기 때문이다.
따라서 각 잠재수요를 대변하는 변수들에 영향을 미치는 새로운 독립변인들을 탐색하여 거주지와 활동지기준의 잠재수요점수 산출에 사용했다. 거주지를 예시로 들자면, 전기차 증가량에 영향을 미칠 것이라고 예상되는 각 지역별 소득수준, 연령분포, 전체차량수등을 선행연구의 결과를 바탕으로 설명변수로 설정했다. 이후 각 설명변수들과 타겟변수에 해당하는 전기차 증가량과의 다중회귀를 통해 유의미한 영향력이 입
증된 변수들을 지수식의 가중치로 활용했다.
회귀모델로는 가설을 통해 설정된 변수들 중 중요변수를 선별하고 해당 변수의 설명력을 파악하기 용이한 트리기반 모델 4가지를 고려했다. 각 모델을 데이터에 fitting한 후 RMSE값을 기준으로 4가지 모델의 성능을 평가하여 최적의 모델을 선택했다. 또한 모든 변수들은 모델에 적합하기 좋은 형태로 정규화하여 사용했다. sklearn의 min_max_scaler 를 사용했고 min_max방식은 이상치에 민감하게 반응하기 때문에 각 변수별로 IQR방식을 통한 이상치제거 후 분석에 사용했다.
변수별 중요도 판단을 통한 사용변수 선별은 트리기반 모델이 제공하는 feature importace를 기준으로 선택했다. 변수 선정의 정확도를 높이기 위해 특정 변수의 데이터를 무작위로 포함시켜 각 모델의 성능에 해당 변수가 얼마나 기여하는지를 기준으로 weight값을 계산해주는 permutation importance를 추가적으로 활용했다.
해당 과정을 거쳐 최종적으로 거주지의 경우 각 행정동별 잠재수요지수의 결정가중치에 사용될 변수가 유소년인구, 평균연봉, 전체차량수 세가지로 선택되었고 활동지의 경우 유동인구, 기업체수 두가지의 변수가 선택되었다. 거주지 기준 모델은 RandomForest, 활동지 기준은 GradientBoost가 사용되었다.
선택된 변수를 가중치로 활용하여 수요지수를 도출하는 식을 만드는 과정은 <머신러닝을 활용한 어린이 스마트 횡단보도 최적입지 선정>이라는 논문에서 활용된 방식을 따랐다. 구체적으로는 feature importance에 따라 변수들을 선택한 뒤 가장 높은 변수 중요도를 가지는 변수의 중요도값으로 해당변수의 중요도를 나눈 값에 절대값을 취한 후 각 변수와 종속변수의 상관관계에 따라 양수 혹은 음수의 부호를 곱하여 사용했다.