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

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

by 꿀먹은데이터 2022. 7. 13.
평균 기온 예측하기

안녕하세요!

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

지난 포스팅에서 진행했던 '평균 기온에 대한' 예측에 이어

마.지.막. 포스팅을 하려고 합니다 :)

사실.. 만족스럽지 않은 부분은 추가적으로 포스팅할 계획을..

 

이전 포스팅에서는

MA & EWMA 분석과 평가지표를 활용한 비교

까지 보여드렸습니다!

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

이번에는 다른 기법으로 진행하려고 합니다!

그래도 이어지는 내용이 있다보니

한번 읽어보시고 오신다면 도움이 될 것 같습니다 :)

(댓글도 달아주세요 ㅎㅎ)


ARIMA를 사용하기 전, 중요한 검정을 진행해야 한다는 사실! 알고 계셨나요?

바로 두 가지를 확인해야 하는데요,

단위근검정(Unit Root Test)와 자기상관(AutoCorrelation)을 진행해야합니다!

단위근 검정은 프로젝트 첫번째 포스팅에 했으니, 자기상관에 대해 알아볼까요?

1. 자기상관(AutoCorrelation) 개념

자기상관은 시계열 데이터의 상관성 여부를 알기 위해, ARIMA 모형에서 차수를 식별하는데 활용됩니다.

  • 자기 상관 함수 (ACF)
    • ARIMA 모형에서 이동 평균(MA)항의 차수(order)를 판단하는데 활용됩니다.
  • 부분 자기 상관 함수 (PACF)
    • ARIMA 모형에서 자기 회귀 차수 (AR)를 식별하는데 활용됩니다.

정상성 조건이 만족된다고 판단되면, 자기상관 함수를 사용해야합니다.

정상성 조건이 만족되지 않는다고 판단되면,

정상성이 만족할때까지 차분을 수행하는 작업을 반복해야 합니다.

 

자. 정상성이 만족되지 않았을 경우의 자기상관함수를 보여드릴게요!

 

정상성이 만족되지 않았을 때 Autocorrelation

그러면 정상성이 만족되었을 때의 자기상관함수를 보여드리겠습니다!

 

정상성이 만족되었을 때의 Autocorrelation

둘의 차이가 확연히 차이나는 것을 보실 수 있죠??

이처럼 정상성 만족했을 때 (차분을 해줬을 때)의 모습이 정상성 만족하지 않았을 때와 다릅니다.

 

그래프를 해석해야할텐데요.

막대 그래프의 절대값이 0.5보다 작아졌을 경우 0으로 절단되어 있으면

그 값이 곧 차수라고 생각하시면 됩니다!

 

아래 왼쪽 그래프가 Autocorrelation(ACF)로 MA항의 차수를 해석할 수 있습니다.

그렇다면 차수가 1로 두면 되겠구나!를 생각하면 되겠죠? -> MA(1)

 

마찬가지로 아래 오른쪽 그래프가 Partial Autocorrelation (PACF)로 AR항의 차수를 해석할 수 있습니다.

이도 마찬가지로 차수를 1로 두면 되겠구나!로 해석하면 되겠습니다 :) -> AR(1)

2. 데이터 프로세스

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

이번에는 3파트로 구성되어

데이터 전처리 / ARIMA,AutoARIMA / 통계적 Test로 구성하였습니다.

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

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

이전 포스팅에 select column을 추가하여

필요한 column만 추출하였습니다.

(여기서는 MeanTemp)

Add Lead Lag -> Add Function Column -> Delete Missing Data -> Unit Test / AutoCorrelation

단위근 검정 / 자기 상관 함수 / 차분을 통한

단위근 검정과 자기 상관함수로 이루진 부분으로

차분을 얼마나 해야하는지에 대해 알 수 있는 부분으로 구성되었습니다.

[model] Train-> [model] Predict ->Add Function Column -> Bind Row Column -> Statistic Summary

(auto) ARIMA/Holt-Winters의 프로세스로 구성되는 부분으로

모델링의 전반적인 부분과 결과 도출로 구성되었습니다.

3. 차분 프로세스

단위근 검정 및 자기 상관 함수

차분을 위해서는 3가지 함수로 진행됩니다.

1. Add Lead Lag

-> 대상 컬럼의 데이터를 한 칸씩 아래로 밀기 (Lag= 1)

빨간 네모칸 보이시죠 ?

한 칸씩 아래로 밀면, MeanTemp_1라는 컬럼이 생김과 동시에 첫번째 데이터는 결측치가 생깁니다.

2. Add Function Column

-> '대상 컬럼(MeanTemp)'과 '밀린 컬럼(MeanTemp_1)'의 차이를

'차분 컬럼 (difference_1)'로 저장합니다.

 

빨간 네모칸에 Python의 간단한 함수를 입력하면, difference_1라는 컬럼에 그 값이 저장됩니다.

3. Delete Missing Data

-> Lag에 따른 null값을 삭제합니다.

이제 '차분 컬럼(difference_1)'이 만들어졌으면

Unit Root Test와 AutoCorrelation을 진행하면 됩니다.

차분에 대한 단위근 검정

보시다시피 p-value 가 0.0으로 나오니 정상성을 만족한다고 볼 수 있습니다! 😀

이 전 단위근 검정을 보시면 0.278로 현재 차분 데이터의 단위근 검정과 차이가 있음을 알 수 있습니다.

전체 단위근 검정

AutoCorrelation의 경우, 앞에서 다뤘으니 넘어가도록 하겠습니다 :)


4. ARIMA / Auto ARIMA

- arima 와 auto arima

일단 AR모형과 MA모형을 간단히!! 보도록 할게요~!

1. AR 모형 (자기 회귀, Auto Regressive model)

과거의 값이 현재의 값에 영향을 미친다는 것을 전제로 모델링한 모형입니다.

2. MA 모형 (Moving average model)

이전 시간의 노이즈(e)를 이용해 모델링한 모형입니다.

3. ARIMA 모형

AR모형과 MA모형을 합하여 구성된 모형을 ARMA모형이라고 해요!

여기서 정상성을 만족하지 않는 데이터를 차분(difference)을 통해

정상성을 만족하도록 변환하는 과정을 추가한 모형을 ARIMA 모형이라고 부릅니다!

+ 아까 차분 프로세스에서 보셨다시피 정상성을 만족하도록 변환시켜줬어요 😀

 

4. Auto ARIMA 모형

ARIMA 모형에서 알아서 인자를 결정해주는 모형입니다!

최적으로 AIC(평가지표)가 낮도록 구성해주는 모델이라고 보시면 됩니다!


5.1 ARIMA 결과

이번 프로젝트에서 ARIMA를 구성할 때, AR을 1, 차분을 1, MA를 1로 두어 진행하였습니다 :)

생각보다 AIC 값이 높은 것을 알 수 있는데요,

아마 일일 평균 기온을 예측하는 것이기에

좀 더 차분과 다른 전처리 과정을 거쳐야하지 않았을까 하는 생각이 있습니다.

 
위 그래프에서 빨간 선은 실제 평균 기온을 , 파란 선은 ARIMA 모델로 예측한 평균 기온을 나타냅니다.
 

5.2 Auto ARIMA 결과

자동으로 ARIMA를 구성해주는데, AR은 0, 차분은 2, MA는 1로 두어 진행된 결과입니다.

 

prediction number은 30으로 30일을 예측하였습니다.

ARIMA로 수동적으로 진행했을 때보다 AIC가 높음을 알 수 있습니다.

(AIC는 낮으면 낮을수록 좋습니다 😊 )

위 그래프에서 빨간 선은 실제 평균 기온을 , 파란 선은 AutoARIMA 모델로 예측한 평균 기온을 나타냅니다.

ARIMA에 비해 어느정도 비슷해진 것을 볼 수 있습니다.

5. Holt-Winters

홀트 윈터스 (Holt-WInters) 지수 평활법

자료의 평활과 추세의 평활로 구성되어 미래의 값을 예측하는 시계열 기법 중 하나입니다. 😀

ARIMA랑 비슷한 모델이라고 생각하시면 되는데요,

승법적 모형과 가법적 모형으로 구성되는데, 이는 시각화로 관찰하고 두 개 방법 중 택하면 됩니다.

 

그래도 잘 모르겠다 싶으시면,

두 개 방법 모두 실행해보고 RMSE값을 비교하는 등

결과비교를 통해 적합한 모형을 선택해주는 것도 하나의 방법입니다!

 

홀트윈터스로는.. 너무 많은 내용을 담고 있기 때문에,

앞으로 포스팅으로 자세히! 알려드리도록 하겠습니다 :)

Holt Winters로 훈련한 결과입니다.

AIC가 325로 ARIMA 보다 현저히 적어진 값을 확인하실 수 있어요!

단 1년을 주기로 기온이 비슷하기에, period를 365로 설정하였습니다. 😁

훈련 값과 예측 값인데요, 생각보다 잘 예측되었음을 볼 수 있죠?

이렇게 간단하게 시각화도 시켜주는 brightics에 감동...

(파이썬으로 하면 되게 긴 코드를 금방 할 수 있다는 것이 신기했답니다!)

위 그래프에서 빨간 선은 실제 평균 기온을 , 파란 선은 홀트-윈터스 모델로 예측한 평균 기온을 나타냅니다.

어느정도 비슷한 부분도, 다른 부분도 볼 수 있죠?

6. 결과 (Statistic Summary)
 

이제 평가지표를 살펴보겠습니다.

전과 마찬가지로 RMSE와 MAPE를 사용하였습니다.

(RMSE / MAPE 둘 다 낮으면 낮을수록 좋은 지표라고 볼 수 있습니다.)

 

1. ARIMA 모형

2. Auto ARIMA 모형

3. Holt-Winters 모형

RMSE나 MAPE로 보았을 때, Auto ARIMA < Holt-Winters < ARIMA 임을 알 수 있습니다.

그렇다면... Auto ARIMA가 가장 좋은 모델이다!! 라고 여기서는 말해주지만,

 

날짜나 주기성을 고려하면 Holt-Winters가 더 나은 모델일수도 있습니다.

그러므로 항상 어떤 모델이 가장 좋다! 라는 것은 없다고 생각합니다 :)


 

마무으리~!

자! 이렇게 3주에 걸쳐 평균기온을 여러 시계열 모형을 사용하여 예측을 해보았는데요!

MA, EWMA , ARIMA, AutoARIMA, Holt-Winters

앞으로 있을 시계열 분석에 도움이 되었으면 좋겠습니다! 😀

 

삼성 Brightics Studio만 사용하여 분석을 처음부터 끝까지 진행한 적은 처음이었는데,

훨씬 간단하고 쉬운 방법으로 진행하였고

직접 코딩하는 것보다 알고있는 이론을 바탕으로 구성하는데

손쉽게 분석을 할 수 있어서 좋았습니다.

또한 추천해주는 함수를 통해, 제가 생각지도 못했던 Holt-Winters 방법 등의 모형을 사용할 수 있다는 점도 저에게는 좋은 경험이었습니다.


앞으로의 미션이 또 기대가 되는데요.

큼지막한 미션을 들고 찾아뵙겠습니다.

Brightics나 저의 분석에 있어

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

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

 

삼성 SDS Brightics 서포터즈 3기 서영석이었습니다. 감사합니다 😄

 

brightics 기술 블로그 (네이버블로그) :https://blog.naver.com/dudtjr4915/222807813950

 

Brightics studio를 이용하여 ARIMA/ Holt-Winters 모델을 사용한 튜토리얼입니다.

https://www.brightics.ai/kr/docs/ai/manual/tutorial/581ff6ee90fd8079.html#f27696fdd61dc5b9

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