ML mini-project 9: 가스 공급량 분석 및 예측 모델

최원빈·2023년 8월 20일
0

ML mini projects

목록 보기
9/21
post-thumbnail

해당 포스트는 패스트 캠퍼스에 초격차 패키지 : 50개 프로젝트로 완벽하게 끝내는 머신러닝 SIGNATURE를 공부한 뒤 복습을 위해 각색하여 작성하였습니다.

01. 시작하며

이번 9번째 미니 프로젝트에서는 가스 공급량 데이터를 통해 분석 및 예측 모델을 만드는 작업을 진행했습니다.

이 미니 프로젝트의 시나리오는 천연가스를 수입해서 공급하는 회사가 있는데, 가장 중요한 과제로서 적절한 양의 천연가스 수입하여 계약을 한 회사들에게 부족하지 않게 공급을 함과 동시에 보관비용이 많이 들지 않도록 하는 것입니다.

그래서 천연가스를 공급할 회사들의 가스 수요를 예측하여 위의 과제를 해결하고자 합니다.

다음으로는 해당 과제를 해결하기 위해 진행된 전체 프로젝트 과정을 소개해드리겠습니다.

02. 미니 프로젝트 진행과정

첫번째로 해당 미니 프로젝트의 문제해결 프로세스를 정의했습니다.

해결하고 싶은 문제는 내년 가스 공급량 예측을 하려하는데, 작년 공급량의 평균을 기준으로 각 회사의 성장률, 공급단가, 마켓쉐어 등을 고려하여 사람이 수기로 수입 계획을 세우고 실행한다는 것입니다.

그래서 이 부분을 최근 N년 간의 데이터를 이용하여 분석 및 모델링을 하여 좀 더 정확한 내년 공급량 예측을 하고자 합니다.

두번째로 이에 대한 기대효과는 다음과 같습니다.

1) 내년도 수요예측을 통한 가스 공급 안정성 확보
2) 보관/관리 비용 감소를 통한 전체 비용 절감 효과 기대

마지막으로 해결방안은 현재 정제되지 않은 데이터를 시계열 데이터로 변환 후, 시계열 예측 모델을 만들어 내년도 수요 예측입니다.

전체적으로 문제를 어떻게 해결하지 정의를 했으니 다음으로는 데이터 확인 및 데이터 정제를 어떻게 했는지 소개해드리겠습니다.

02. 데이터 확인

첫번째로 데이터 정보 확인 단계에서 feature들을 시계열 데이터 분석에 사용할 수 있는 형태로 변형했습니다. 공급량 데이터가 회사별로 1시간 단위로 기록이 되어있었는데, 일별 사용량 트렌드를 파악하기 위해 groupby를 사용하여 일별 공급량으로 변형을 했습니다.

그 다음 천연가스를 공급받는 모든 회사들의 사용량을 시각화하였습니다. 시각화 결과 값들이 튀는 이상치 (outlier) 들이 발견되었습니다. 그래서 이 부분을 어떻게 처리할지 다음 단계인 데이터 준비 단계에서 회사별로 시각화를 하며 결정했습니다.

각 회사별로 Q3 (0.75 quantile)에 3을 곱한 IQR (inter quantile range)를 더했을 때의 기준이 빨간색 선입니다. 이 선을 기준으로 했을 때 그 위로 올라가는 값들을 outlier로 정의했습니다. 그래서 다음 단계인 Feature Engineering 단계에서 해당 outlier들을 제거해주었습니다.

outlier들을 제거해준뒤 다시 시각화를 했을 때 가스 공급량의 주기성이 더 또렷하게 보이는 것을 확인할 수 있었습니다.

다음으로 한 회사의 경우 중간에 결측치 때문인지 값이 뚝뚝 떨어지는 경우가 있었습니다. 이 경우 보간법 (interpolation)을 사용하여 결측치를 채워주었습니다.

그럼 데이터를 사용하여 모델링을 할 준비가 되었으니, 회사별로 구분하여 모델링을 한 결과를 보여드리도록 하겠습니다.

03. 모델링 & 성능

모델링을 할 때는 시계열 예측에서 많이 사용되는 DeepAR 모델을 사용했습니다. 그리고 epoch은 5로 두고 모델을 돌렸습니다. 그 결과는 아래와 같습니다.

진한 파란색 선이 실제 2018년 회사별 공급량 데이터이고, 진한 초록색 선이 예측값입니다. 그리고 50%와 90% confidence interval 구간도 같이 표시를 해주었습니다.

회사별로 구분을 했을 때 모델이 D, G 공급량을 잘 예측하는 것으로 보였습니다. (참고로 훈련 데이터 셋은 2015~2017년까지의 공급량 데이터이고, 테스트셋은 2018년 공급량 데이터 입니다.) 하지만 몇몇 회사의 예측값들은 실제값과 많이 벗어나는 것 또한 발견할 수 있었습니다.

이후 회사 구분없이 전체 회사에 대한 예측값을 구했을 때는 실제값과 큰 차이가 나지 않는 것을 확인할 수 있었습니다.

각 모델의 성능을 숫자로 표현하면 아래와 같습니다.

MAPE (Mean Absolute Percentage Error)를 기준으로 (해당 기준은 오차가 실제값에서 차지하는 상대적 비율을 백분율 값으로 나타내어 직관적이기에 선택했습니다.) 모델들의 성능을 평가했습니다.

아쉽게도 B와 C의 MAPE가 상대적으로 높았고 나머지 회사들의 공급량 예측 모델은 준수한 성능을 보였습니다.

반대로 전체 회사의 공급량을 토대로 모델링을 했을 때의 MAPE는 0.3132로 성능이 준수했습니다!

04. 마무리하며

해당 9번째 미니 프로젝트는 첫번째 미니 프로젝트 (의류 판매량 예측)과 비슷한 부분이 상당히 많았습니다.

데이터를 시계열 예측에 적합하게 변형하고, DeepAR 모델을 써서 예측을 하는 부분이 상당히 유사하여 시계열 데이터 분석을 복습할 수 있는 시간이 되었습니다.

다만 차이점은 이번 데이터에는 회사별로 공급량이 구분이 되어있었기 때문에 회사 각각의 공급량과 전체 회사의 공급량을 비교할 수 있었습니다.

이번 미니 프로젝트에서는 공급량만을 가지고 모델링을 했지만, 실제 현업에서는 회사의 성장률, 공급단가, 마켓쉐어 등등의 정보들도 같이 들어간 데이터를 통해 모델링을 해야할 것입니다. 아쉽게도 이번 미니 프로젝트에서는 다른 정보들이 없었지만, 대신 이상치, 결측치에 대한 부분을 어떻게 처리해야 할지에 대해 배울 수 있었습니다.

또한, 분할 분석 vs. 통합 분석을 모델링 함으로서 어떤 것이 더 좋을지 비교 & 분석하는 시간을 가질 수 있어 많은 부분을 배울 수 있었습니다!


부족하지만 읽어주신 분들께 감사합니다:) 피드백 무한환영!

profile
차가운 머리와 따뜻한 마음

0개의 댓글

관련 채용 정보