본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
가치를 창출하는 데이터 분석/Brightics AI 데이터 분석

[삼성 SDS Brightics]# 02-2. 개인프로젝트(2) Kaggle 평균 기온 예측하기 - 시계열 분석 (MA / EWMA)

by 꿀먹은데이터 2022. 7. 5.

안녕하세요!

삼성 SDS Brightics 서포터즈 3기 서영석입니다.

지난 포스팅에서 진행했던 날씨 예측에 이어

두 번째 포스팅을 하려고 합니다 :)

이전 포스팅에서는

데이터의 선정 기준, MA와 EWMA 기법 소개, Brightics Studio에서의 실습

까지 보여드렸는데요!

https://blog.naver.com/dudtjr4915/222791865572

 

[삼성 SDS Brightics]# 02-1. 개인프로젝트(1) Kaggle 날씨 데이터 예측하기 - 시계열 분석 (MA )

#02.kaggle 날씨 데이터 예측하기 - 시계열 분석 (MA / EWMA) 안녕하세요! 드디어 'Brightics ...

blog.naver.com

아직 이전 포스팅을 못 보신 분들은 한번 보고 오시면 좋을 것 같습니다 :)

이전 포스팅에서는 'SEOUL'의 날씨 데이터를 추출하여 진행했었는데요.

이번 포스팅에서는 'MOLOKAI' 지역의 날씨 데이터를 추출해서 진행하려고 합니다.

데이터를 바꾼 가장 큰 이유는

두 달(45.10.01 - 45.12.31)의 데이터가 너무 적다고 생각해서,

많은 데이터가 존재하는 도시를 분석하는 것이 좋지 않을까 싶어서 바꾸게 되었습니다!

 

1년도 안되는 데이터니까.. 전반적인 패턴이 존재하지 않는다고 생각했습니다.

Seoul 날씨 실측값(빨강)과 예측값(파랑)

그. 래. 서!

이번에는 상대적으로 데이터가 많은 'MOLOKAI' 지역 날씨에 대해 진행하고자 합니다!

( 40.02.01 - 45.12.28) - 무려.. 5년!

MOLOKAI가 어디냐구요 ??

몰로카이(MOLOKAI)는 미국 하와이 주 중부의 섬입니다.

이전 나병 환자의 격리지였고, 현재 관광지 중 한 곳이라고 합니다 :)


1. MA & EWMA 개념 정리

이전 포스팅에 이어 이 기법에 대해 자세히 설명드리고자 합니다.

1. 1. MA (이동평균)

  • 시간적으로 연속하는 일정 기간(=window) 동안의 관측치들의 평균입니다.

이론적인 식은 이렇게 되는데요.. 어지럽죠..? 이해하기도 어렵고 수식도 복잡한 느낌이 들기에..

이해를 돕기 위해 다른 그림을 가져왔습니다!

MA는 위 그림처럼 centered windowtrailing window로 나뉘는데요.

둘로 나눠서 자세히 알아보겠습니다.

잘 따라와주세요!

중심 이동 평균 (centered window)의 경우

시각화를 위해 가운데 t시점을 기준으로

양쪽의 t-1 시점과 t+1 시점의 평균을 t시점에 대입한다고 보면 됩니다.

관측치가 짝수인 경우를 대표적으로 들었습니다.

후행 이동 평균 (trailing window)의 경우

예측을 위해 이전 관측치들 (t-4, t-3, t-2, t-1 시점)을 더한 뒤, 크기로 나눠주면 됩니다.

window size가 5인 경우

MA가 어떻게 작동하는지에 대해 이 정도면 분석하는데 있어 충분하다고 생각합니다!

혹시 이론이 더 필요하시거나 자세히 알고 싶으신 분들은 메일 주시면 자세히 알려드릴게요 :)

1.2. EWMA (지수 가중 이동 평균)

Exponentially Weighted Moving Average의 축약어로 지수 가중 이동 평균입니다.

말 그대로 '지수 이동 평균'에 이전 관측치에 가중치를 두어 관측값을 예측하는 기법입니다.

 

많은 수식과.. 이론적인 내용이 너무 길었죠 ..?

그래도 다 알려주고 싶은 마음에 그만 흑흑..

이론적인 내용은 이정도로 마치고 실습을 해보겠습니다!

데이터 로드에서 단위근검정(Unit root test)는 이전 포스팅에서 다뤘기 때문에 넘어가겠습니다 :)

2. 데이터 프로세스

전반적으로 구성한 프로세스입니다!

잘 안보이시죠? 그러면 자세히 봐볼게요.

Load -> Replace Missing Number -> Add Row Number -> Add Function Column

위 그림은 데이터 전처리로 구성되는 부분으로,

데이터 불러오기부터 모델 적용 전까지의 내용으로 구성되었습니다.

MA/EWMA -> Add Function Column -> Statistic Summary & Bind Row Column

MA / EWMA / Unit Root Test로 구성되는 부분으로

모델링의 전반적인 부분과 결과 도출, 단위근 검정(정상성)으로 구성되었습니다.

2.1 단위근 검정

p-value가 0.16으로 차분이 필요해보입니다 :)

2.2 Moving Average(이동 평균)

window size는 '7' 로 두고 진행을 하려 합니다.

window가 길수록 실제값과 격차가 벌어지고, 짧을수록 실제값과 격차가 줄어드는데요.

그래서 window를 몇으로 두느냐에 따라 분석이 차이나는 경우가 많습니다.

보통 계절성이 있는 시계열의 경우, w= 계절성의 주기로 두기도 합니다 :)

그럼 차이를 한번 보실까요 ?

  • Window Size=7인 경우

정밀하게 보기 위해 확대하였습니다.

  • Window Size = 30 인 경우

제가 window를 7로 잡은 이유는

계절성의 주기를 보이는 것은 아니지만 몇년 치의 데이터를 일별로 보기 때문에

주간으로 나누면 어떨까 싶어서입니다!

2.3 EWMA(지수 가중 이동 평균)

이번에는 EWMA를 진행해보려 합니다!

MA와 비교하기 위해선 동일 기준으로 window (Period Number)를 7로 잡아야겠죠 ??

또한 Custom Ratio의 경우 0.5로 두었습니다. (가중치에 해당하는 파라미터입니다)

2.4 MA & EWMA 공통 프로세스

이 부분의 경우 MAPE, RMSE (평가지표)를 계산하는데 있어

필요한 컬럼을 추가한 부분입니다.

MAPE, RMSE 공식만 간단히! 적고 가도록 할게요.

2.4.1. MA의 Statistic Summary (이동 평균의 통계적 지표)

MA의 RMSE의 평균이 약 0.72, MAPE의 평균이 약 2.98로 보입니다.

2.4.2. EWMA의 Statistic Summary (지수 가중 이동 평균의 통계적 지표)

EWMA의 RMSE의 평균이 약 0.39, MAPE의 평균이 약 0.61로 보입니다.

MA/EWMA 비교
MA(이동평균)
EWMA (지수 가중 이동 평균)
RMSE
0.72
0.39
MAPE
2.98
0.61

위 표를 보시면, EWMA의 평가지표(RMSE,MAPE)가 낮은 것을 볼 수 있죠~?

EWMA가 성능이 더 좋은 것으로 보입니다 :)

2.5 Bind Row Column

Bind Row Column 프로세스

시각화로 MA와 EWMA의 시각화를 보기 위해서 Bind Row Column으로 묶어줍니다!

자.. 시각화로 한번 비교해볼까요~??

실측값이 연두색 , MA 예측값이 파란색 , EWMA 예측값이 빨간색

차이가 약간씩 나는 것을 볼 수 있죠?

 

한번 자세히 봐보겠습니다.

검은 상자 안에 실측값MA , EWMA 예측값들의 차이를 비교해보면

파란색 화살표 (MA)빨간색 화살표 (EWMA)보다 큰 것을 볼 수 있죠?

그만큼 오차가 많이 발생했다! 라고 볼 수 있습니다.

다시 말해서 EWMA의 예측값이 MA의 예측값보다 더 정확하다.

EWMA의 성능이 MA의 성능보다 좋다. 라고 결론을 내릴 수 있었습니다.

물론.. window와 custom ratio(파라미터)의 조정에 따라 값이 약간씩 달라질 수 있겠죠 ??


오늘은 여기까지 분석을 진행하였습니다 :)

앞으로의 시계열 분석에 있어 도움이 되셨으면 좋겠습니다!

뿐만 아니라 Brightics나 저의 분석에 있어

궁금한 사항이나 질문이 있으시면

댓글 혹은 메일 주시면 감사하겠습니다!

 

다음 포스팅으로는

AutoCorralation, ARIMA 기법과 AutoARIMA 소개와 적용으로

찾아뵙겠습니다!!

brightics 서포터즈 포스팅 : https://blog.naver.com/dudtjr4915/222800287594

Brightics studio를 이용하여 MA와 EWMA 모델을 사용한 튜토리얼입니다.

https://www.brightics.ai/kr/docs/ai/manual/tutorial/#42e0fc35f6c8fd4d

본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다.