이번 미니 프로젝트의 주제는 미세먼지 수치 예측 모델링이었다. 2021년 데이터를 학습시켜 2022년 1월부터 3월까지의 미세먼지 수치를 예측하면 됐다. 주어진 csv 파일의 데이터가 굉장히 날 것이었다. NAN 값이 굉장히 많았다. 개인적으로 데이터 전처리하는 시간이 주어졌을 때 어떻게 처리할 지 쉽게 아이디어가 떠오르지 않았다. 결측치가 너무 많아 KNNImputer나 interpolate를 사용해서는 굉장히 부정확한 보간이 될 확률이 높았다. 결정을 명확하게 내리지 못 한 상태에서 조별 토론을 하게 됐다.
엑셀을 보고 결측치의 의미를 찾아낸 대단한 분이 계셨다. pandas로 열어볼 때는 조금만 보여서 패턴을 찾기 어려웠다. 그런데 엑셀 파일로 한 눈에 컬럼의 데이터를 보니 규칙이 보였다. 측정값이 존재하는 시간 주변으로 QC 플래그 9가 적혀 있었다. 그리고 기상청 사이트의 일간 강수량까지 보면서 강수량의 결측치는 비가 오지 않아 데이터가 없다는 사실까지 알아내셨다. 엑셀을 열어서 데이터를 한번에 볼 생각은 못 했었는데 이게 바로 팀 플레이의 장점이구나 싶었다 .전혀 생각하지 못 했던 부분을 찾아내시는 분이 있으니 나 또한 새로운 방법을 배울 수 있다. 그렇게 합리적인 근거를 바탕으로 결측치를 채워나갔다.
모델링 부분에 있어서도 팀이기 때문에 새로운 발견을 할 수 있었다. 시계열 모델링에 대해 배우기는 했지만 ARIMA, SARIMA, SARIMAX만 배웠었다. 팀원 중 한 분이 sarimax() 함수를 이용해서 코드를 짜셨는데 자세히 보니 seasonal_order 패러미터는 넣지 않고 x는 넣었다. 코드를 짜신 분은 의도하지 않았다고 하시지만 ARIMAX를 적용시키신 것이다. 실제로 검색을 해보니 ARIMAX라는 것도 존재했다. 미세먼지 데이터가 1년 조금 넘는 기간으로 주어졌기 때문에 명확한 계절성은 보이지 않았다. 그렇기 때문에 ARIMAX가 더 좋은 방법이었다고 생각한다. SARIMAX를 맡아서 돌려보긴 했지만 모델링만 1시간 넘게 걸렸다. 그래서 하이퍼 파라미터 튜닝을 할 엄두도 낼 수 없었다.
실력이 굉장하신 분들이 계셔서 발표를 들을 때마다 감탄을 많이 한다. 이번에는 시계열 데이터에서 추세와 계절성을 제공되는 함수를 가지고 뽑아내서 그래프를 그리신 것을 보고 깜짝 놀랐다. 나는 pandas와 pyplot을 통해 미세먼지 데이터의 범위을 좁히고 넓혀가며 주기성이 있나 확인을 했었다. 이렇게 하다보니 많이 살펴봐도 주기성이 확실히 없나라는 질문에 명확하게 답할 수가 없었다. 확신이 없었다. 그런데 이게 라이브러리를 통해 메소드로 제공이 되고있다. 이렇게 뽑은 뒤 그래프만 그리면 된다.
from statsmodels.tsa.seasonal import seasonal_decompose
series = ...
result = seasonal_decompose(series, model='additive')
print(result.trend)
print(result.seasonal)
print(result.resid)
print(result.observed)
정말 잘 하시는 분들 덕분에 새로운 것을 계속 알게 된다. 너무 감사하다.
'KT 에이블스쿨' 카테고리의 다른 글
미니프로젝트 3주 연속 (0) | 2022.10.24 |
---|---|
[에이블스쿨 AI 4주차 2] 미니 프로젝트 2 - EDA (0) | 2022.08.20 |
[에이블스쿨 AI 4주차] 미니 프로젝트1 - EDA (0) | 2022.08.19 |
[에이블스쿨 AI 3주차] 데이터 분석, 전처리 후기 (0) | 2022.08.14 |
KT 에이블스쿨 2기 AI 개발자 트랙 (늦은) 합격 후기 (0) | 2022.08.11 |