해당 과정은 코세라 텐서플로우 자격증을 위한 마지막 4코스 시퀀스, 시계열 데이터 그리고 예측 과정이다. 해당 과정에서 특정 날의 온도나 웹 사이트 방문자 수와 같이 시간이 지남에 따라 값이 변하는 순차적 시계열 데이터를 처리 할 때 필요한 개념들을 학습한다.
이를 바탕으로 시계열 데이터에서 미래의 가치를 예측하기 위한 다양한 방법론을 공부한다.
해당 코스는 "Sequences, Time Series and Prediction"이다.
이 과정에서는 시계열 데이터에 대해 배운다.
시계열 데이터는 시간에 따라 순서대로 정렬된 값들의 집합이다.
예를 들어 주식 가격, 날씨 예보, 역사적인 추세 등 다양한 분야에서 시계열 데이터를 볼 수 있다.- 이 과정에서는 시계열 데이터의 다양한 유형과 기본적인 예측 방법에 대해 알아보고, 머신러닝 알고리즘에 시계열 데이터를 적용하기 위한 전처리 방법과 도구에 대해 배운다.
이를 통해 밀도 모델(Dense)을 사용한 예측과 간단한 수치 분석을 기반으로 한 예측과의 차이를 이해하고, 순환 신경망을 사용하여 시계열 예측을 수행하는 방법을 배우게 된다.
마지막으로, 합성곱을 추가하여 실제 세계 데이터를 예측하는 방법을 배우고, 지난 250년간의 태양 흑점 활동 측정 데이터를 예측하는 실습을 진행한다.
이 과정을 통해 시계열 데이터에 대한 이해를 높이고, 예측 모델을 구축하는 방법을 배울 수 있다.
해당 과정에서 coach 베타 버전을 통해 추가적으로 학습한 것을 정리해보자
시계열 데이터에는 다양한 유형이 있다.
이러한 유형은 데이터의 특성과 패턴에 따라 다르다.
시계열 데이터의 일반적인 유형은
(1) 정상 시계열 데이터 : 평균과 분산이 시간에 따라 일정한 패턴을 가지는 데이터
예측이 비교적 쉽고 안정적인 모델링이 가능하다
(2) 비정상 시계열 데이터 : 평균과 분산이 시간에 따라 변하는 데이터
이러한 데이터는 추세, 계절성, 주기성 등의 패턴을 가지며 예측이 어려울 수 있다.
비정상 시계열 데이터를 정상화하는 전처리 기법이 필요할 수 있다.
(3) 계절성 시계열 데이터 : 특정한 계절 패턴을 가지는 데이터
매년 반복되는 패턴이나 주기성을 가지는 데이터이다.
이러한 데이터는 계절성 요인을 고려해서 예측 모델을 구현해야 한다.
(4) 추세 시계열 데이터 : 시간에 따라 지속적으로 증가하거나 감소하는 경향을 보이는 데이터
이러한 데이터는 추세를 고려하여 예측 모델을 구축해야 한다.
(5) 주기성 세계열 데이터 : 일정한 주기를 가지는 데이터
예를 들어 주식 시장에는 일주일, 한 달 또는 일년과 같은 주기성을 가지는 데이터가 있다.
이러한 데이터는 주기성을 고려하여 예측 모델을 구현해야 한다.
(6) 불규칙 시계열 데이터 : 특정한 패턴이나 규칙을 가지지 않는 데이터
이러한 데이터는 예측이 어려울 수 있고, 예측 모델을 구축하기 위해 다양한 기법과 알고리즘을 사용해야 한다.
이러한 다양한 유형의 시계열 데이터를 이해하고 분석하는 것은 예측 모델을 구축하는데 중요하다.
시계열 데이터를 머신러닝 알고리즘에 적용하기 전에는 전처리가 필요하다.
이러한 전처리는 데이터를 머신러닝 모델에 적합한 형식으로 변환하고 모델의 성능을 향상시키는데 도움이 된다.
(1) 결측치 처리 : 시계열 데이터에는 결측치가 포함될 수 있어, 결측치를 처리하고 적절한 값으로 대체해야 한다.
(2) 이상치 처리 : 이상치는 시계열 데이터에서 일반적으로 발생할 수 있다. 이상치를 탐지하고 처리해서 모델의 성능을 향상시킬 수 있다.
(3) 시간 인덱스 설정 : 시계열 데이터는 시간에 따라 정렬되어 있어 시간 인덱스를 설정해 데이터를 시간 순서 대로 정렬해야 한다.
(4) 트렌드와 계절성 제거 : 시계열 데이터에는 트렌드(추세)와 계절성 요소가 포함될 수 있다. 이러한 요소를 제거하고 정상 시계열로 변환해야 한다.
(5) 데이터 분할 : 시계열 데이터를 훈련, 검증, 테스트 세트로 분할한다. 이를 통해 모델을 훈련하고 성능을 평가한다.
(6) 스케일링 : 시계열 데이터의 값 범위가 다를 수 있어, 스케일링을 통해 데이터를 일정한 범위로 조정한다.
이러한 전처리 단계는 시계열 데이터를 머신러닝 모델에 적용하기 전에 수행한다.
이러한 과정을 통해 데이터를 더 잘 이해하고 모델의 성능을 향상 시킬 수 있다.
시계열 데이터의 전처리 과정에서 결측치 처리는 매우 중요하다.
그 이유는 [1] 데이터의 완전성 유지
결측치가 있는 데이터를 그대로 사용하면 분석 결과가 왜곡될 수 있다.
결측치를 처리해서 데이터의 완전성을 유지하면 신뢰할 수 있는 결과를 얻을 수 있다.
[2] 예측 모델의 정확성 향상
결측치가 있는 데이터를 예측 모델에 사용하면 모델의 정확성이 저하될 수 있다.
결측치를 처리해서 모델이 더 정확한 예측을 할 수 있게 도와준다
[3] 시계열 패턴의 유지
결측치가 있는 시계열 데이터에서 패턴을 유지하기 위해서는 결측치를 적절하게 처리해야 한다.
결측치를 처리하지 않으면 시계열 패턴이 왜곡되거나 손실될 수 있다
[4] 데이터 분석의 효율성 향상
결측치가 있는 데이터를 분석할 때는 결측치를 처리하는 과정이 추가로 필요하다.
결측치를 처리하여 데이터 분석이 효율서을 향상시킬 수 있다.
결측치 처리는 시계열 데이터의 전처리 과정에서 매우 중요한 단계로, 신뢰할 수 있는 결과를 얻기 위해 반드시 수행되어야 한다.
시계열 데이터의 결측치를 처리하는 방법은 다양한데, 일반적으로 사용되는 몇 가지 방법은 아래와 같다.
[1] 결측치 삭제 : 결측치가 있는 행 또는 열을 삭제한다.
이 방법은 결측치가 일부인 경우에 유용하지만 데이터 손실이 발생할 수 있다.
[2] 보간법 : 결측치를 주변 값의 평균, 중간값, 선형 보간으로 대체하는 방법이다.
결측치를 대체해서 데이터의 일관성을 유지할 수 있지만 주의해야할 점은 보간법이 시계열 패턴을 왜곡할 수 있다는 것이다. 선형 보간법, 다항식 보간법, 시계열 보간법 등이 있다.
[3] 시계열 모델을 사용한 예측 : 결측치를 예측하는 모델을 구축해 결측치를 대체한다.
이 방법은 결측치를 예측하는 데 더 정확한 결과를 얻을 수 있지만 모델 구축에는 추가적인 작업이 필요하다.
[4] 결측치를 나타내는 새로운 변수 생성 : 결측치가 있는 변수를 나타내는 새로운 변수를 생성하는 방법이다. 이 방법은 결측치를 대체하는 대신 결측치가 있는 데이터를 유지할 수 있다.
[5] 평균값, 중앙값, 최빈값 등으로 대체 : 결측치를 해당 열의 평균값, 중앙값, 최빈값 등으로 대체하는 방법이다. 이 방법은 간단하고 효과적일 수 있지만 데이터 분포나 패턴을 왜곡할 수 있다.
이러한 방법은 결측치 처리에 일반적으로 사용되는 방법이지만, 데이터의 특성과 분석 목적에 따라 다른 방법을 선택할 수 있다. 결측치 처리는 상황에 맞는 접근 방식이 필요하다.
시계열 데이터의 전처리 과정에 결측치 처리외에도 아래와 같은 중요한 단계가 있다.
[1] 이상치 처리 : 데이터에서 벗어난 값으로, 예측 모델의 정확성을 저하시킬 수 있다. 이상치를 식별하고 처리하는 방법은 데이터의 특성에 따라 다를 수 있다.
일반적으로 이상치를 제거하거나 대체하는 등의 방법을 사용한다
[2] 데이터 정규화 : 시계열 데이터는 종종 다른 범위와 단위를 가지는 변수들로 구성된다. 이러한 변수들을 동일한 범위로 조정하거나 표준화하여 모델의 성능을 향상시킬 수 있다.
일반적으로 Min-Max 스케일링이나 Z-score 표준화와 같은 방법을 사용한다.
[3] 피처 엔지니어링 : 시계열 데이터에는 유용한 정보가 숨어 있을 수 있다.
예를 들면 날짜 및 시간 정보에서 계절성이나 주기성을 추출하거나, 이동 평균이나 지수 평활법과 같은 통계적 특성을 생성할 수 있다. 이러한 특성을 생성해 모델 예측 성능을 향상 시킨다.
[4] 데이터 분할 : 모델을 학습시키기 위해 학습, 검증, 테스트 세트로 분할한다.
일반적으로 과거 데이터를 학습에 사용하고 최신 데이터를 검증 및 테스트에 사용한다.
이렇게 함으로써 모델의 일반화 능력을 평가할 수 있다.
시계열 데이터의 정규화는 데이터를 일정한 범위로 조정하여 모델의 성능을 향상시키는데 도움이 된다. 데이터 정규화는 다음과 같은 이유로 필요하다.
[1] 스케일링 : 시계열 데이터는 다양한 크기와 범위를 가질 수 있다.
주식 가격 데이터는 수백 달러에서 수천 달러까지 범위가 매우 크다.
이러한 데이터를 정규화하면 모델이 더 잘 수행할 수 있다.
[2] 이상치 처리 : 이상치는 시계열 데이터에서 흔히 발생할 수 있다.
센서 데이터에서 잘못된 측정치나 이상한 동작이 발생할 수 있다.
정규화는 이러한 이상치를 처리하고 모델의 안정성을 향상시킨다.
[3] 비교 가능성 : 서로 다른 시계열 데이터를 비교할 때 정규화는 데이터를 동일한 범위로 조정하여 비교 가능하게 만든다. 이를 통해 데이터 간의 상대적인 차이를 파악할 수 있다.
[4] 수렴 속도 향상 : 정규화된 데이터는 모델이 더 빠르게 수렴하고 더 높은 정확도로 예측할 수 있도록 도와준다.
시계열 데이터의 정규화에는 Min-Max 정규화, Z-score 정규화, 로그 변환등이 있다.
어떤 방법을 선택할지는 데이터의 특성과 모델의 요구에 따라 다르다.
시계열 데이터를 효과적으로 분석하고 예측하기 위해 다음과 같은 도구와 기법을 사용할 수 있다.
[1] 통계적 기법 : 시계열 데이터의 패턴과 트렌드를 분석하기 위해 통계적 기법을 사용한다. 이동평균, 지수평활법, 회귀 분석 등이 있다.
[2] 기계학습 알고리즘 : 기계학습 알고리즘을 사용해 시계열 데이터를 분석하고 예측할 수 있다. 예를 들어 선형 회귀, 의사결정 트리, 랜덤포레스트, 신경망 등이 있다.
[3] 신경망 모델 : 신경망 모델은 시계열 데이터를 분석하고 예측하는데 매우 효과적이다. 특히 순환신경망(RNN)과 장기 기억 네트워크(LSTM)은 시계열 데이터의 장기적인 의존성을 모델링하는 데 도움이 된다.
[4] 딥러닝 모델 : 딥러닝 모델은 복잡한 시계열 데이터를 분석하고 예측하는데 사용될 수 있다. 컨볼루션 신경망(CNN)은 이미지 시계열 데이터에 적합하고, 트랜스포머(Transformer)는 자연어 처리 같은 시계열 데이터에 적합하다.
[5] 시계열 분석 도구 : 시계열 데이터를 시각화하고 분석화하는 데 도움이 되는 다양한 도구가 있다. 파이선의 pandas, numpy, matplotlib, seaborn 등의 라이브러리를 사용할 수 있다.
시계열 데이터를 기반으로 예측 모델을 만들 때 고려해야 할 요소들은
[1] 시간의 영향 : 시계열 데이터는 시간에 따라 변화하는 패턴을 가지므로, 시간의 영향을 고려해야 한다. 이를 위해 데이터를 시간 순서대로 정렬하고, 시간 간격을 유지하는 등의 전처리 작업이 필요하다.
[2] 계절성과 주기성 : 시계열 데이터에는 계절성이나 주기성이 있을 수 있다.
이러한 패턴을 파악하고 모델에 반영해야 한다. 계절성 조정이나 주기성을 나타내는 변수를 추가하여 모델을 개선할 수 있다.
[3] 이상치 처리 : 시계열 데이터는 이상치가 포함될 수 있다. 이상치는 모델의 예측을 왜곡시킬 수 있으므로 이를 식별하고 처리하는 방법을 고려해야 한다. 이상치를 제거하거나 대체하는 등의 전처리 기법을 사용한다.
[4] 시계열 패턴 분석 : 시계열 데이터에는 다양한 패턴이 존재할 수 있다. 이러한 패턴을 분석하고 이해하는 것이 중요한데, 트렌드, 계절성, 주기성, 잡음 등의 패턴을 파악해서 모델에 반영할 수 있다.
[5] 모델 선택 : 시계열 데이터를 예측하기 위해 다양한 모델을 사용할 수 있는데 ARIMA, SARIMA, Prophet, LSTM 등의 모델이 일반적으로 사용된다.
데이터의 특성과 예측 목표에 따라 적절한 모델을 선택해야 한다.
[6] 모델 평가 : 예측 모델의 성능을 평가하는 것이 중요하다. 예측 오차를 측정하고 모델의 정확도, 정밀도, 재현율 등을 평가하여 모델의 신뢰서을 확인해야 한다.
[1] Min-Max 정규화
데이터를 0과 1사이의 범위로 변환
이 방법은 상대적인 크기를 유지하면서 데이터를 정규화하는데 유용함
[2] Z-score 정규화
데이터를 평균이 0이고 표준 편차가 1인 표준 정규 분포로 변환함
이 방법은 데이터의 분포를 고려하여 정규화 하는데 유용함
[3] 로그 변환
데이터에 로그 함수를 적용하여 데이터의 스케일을 조정함
이 방법은 데이터의 분포가 왜곡되어 있을 때 유용함
[4] 차분(Differencing)
시계열 데이터에서 이전 시간 단계의 값을 현재 시간 단계의 값에서 빼는 것
이 방법은 시계열 데이터의 추세나 계절성을 제거하는데 유용함
이 외에도 다양한 정규화 기법이 있을 수 있고, 데이터의 특성과 목적에 따라 다양한 적절한 방법을 선택할 수 있다.
시계열 데이터는 시간에 따라 변하는 일련의 데이터이다.
예를 들면 주식 거래의 종가나 날씨 등이다.
시계열 데이터의 핸들링은 데이터들이 시간에 따라 어떻게 측정되는 지를 다루는 것이다.
해당 과정은 데이터의 합성 시퀀스를 만들고 데이터 시계열에서 공통 속성을 살펴본다.
시계열 데이터는 주로 경향성
, 계절성
, 노이즈
등이 있는데,
머신러닝에서 통계적으로 사용할 수 있는 다양한 방법들을 사용해서 데이터를 예측할 것이다.
해당 과정은 시퀀스 모델을 학습하고 시계열 데이터를 학습한 후에 모델을 구축하고 마지막으로 태양의 흑점 활동 예측 모델링을 진행한다. 태양은 11년 주기, 어떤 천문학자는 22년 주기라고 하지만 아무튼 흑점 활동은 인공위성 활동에 영향을 주는 중요한 요소이다. 이 과정의 마지막은 흑점 활동 예측 모델링이 될 것이다.
시계열 데이터는 어디에서나 볼 수 있다.
'주가', '일기예보', '무어의 법칙' 등
위 그림은 1제곱밀리미터 당 트랜지스터의 수를 기록한 것이다.
연도별로 출시되는 칩을 그룹화 한다음 첫 번째 항목부터 무어의 법의 추세선을 그린 것이다.
허구적 상관관계에 대한 타일러 비건의 사이트. 이 시계열 상관관계는 비디오 게임 오락실에서 창출한 총수익과 미국 내 수여된 컴퓨터 공학 박사 학위의 수
정확히 시계열이란 무엇일까 ? 일반적으로 오랜 시간에 걸쳐 균등한 간격으로 순서가 지정된 시퀀스로 나타나는 값
위 차트는 무어의 법칙 차트로 연 단위 표시이다. 일기예보와 같은 경우는 하루 단위이고,
위 그래프에서 하나의 시점에 단일값이 존재하는데 이것을 일변량 이라고 한다.
위 그래프처럼 각 시점에 여러 개의 값이 표시된 시계열은 다변량 시계열 이라고 한다.
다변량 시계열 차트는 관련 데이터의 영향을 이해하는 유용한 방식이다.
위 차트는 1950년에서 2008년 까지의 일본의 출생률과 사망률을 다루고 있다.
이 둘은 점점 하나로 수렴하고 있는 모습을 보이는데, 사망률이 출생률을 넘기면서 인구가 감소하는 것을 볼 수 있다.
이 둘을 별개의 일변량 시계열로 다룰 수 있지만 이렇게 다변량으로 본다면 이 데이터의 진가를 볼 수 있다.
위 그래프는 지구의 온도와 CO2 농도와의 관계이다.
일변량 자료면 추세를 확인할 수 있지만 데이터에 추가 값을 더하면 상관관계를 쉽게 파악할 수 있다.
몸의 움직임도 일변량이나 다변량으로 기록이 가능한데 위의 그림 처럼 자동차의 이동 경로를 시간 단계 0 시점에서 특정 위도와 경도에 있다고 할때, 이어 지는 시간 단계에서 차의 경로에 따라 이들의 값이 바뀌게 된다. 자동차는 특히 가속하는데 일정한 속도로 움직이지 않는 것이고 시간 단계의 간격도 그 규모가 달라질 수 있다.
차가 움직이는 방향을 일변량으로 플롯한다면, 차의 방향을 기준으로 시간이 지나면 경도는 감소하지만 위도는 증가하게 된다.
시계열로 분석할 수 있는 몇가지 예시들이 있는데, 시간 요소가 있다면 무엇이든 이 방식으로 분석이 가능하다.
머신러닝으로는 시계열과 관련해 어떤 작업이 가능할지 살펴보자.
첫째는 데이터를 기반으로 예측 작업이 가능하다.
위의 그림과 같이 일본의 출생률과 사망률 그래프를 통해서 향후 수치를 예측하는데 유용하다.
어떤 경우는 과거로 다시 돌아와서 지금까지의 과정과 현재의 위치를 파악할 수도 있다.
'imputation' 이라고 해서 이미 가지고 있는 데이터보다 이전 시점의 데이터를 수집하면 어떤 데이터가 나올지를 파악할 수 있다.
실질적으로 존재하지 않는 데이터를 예측해서 빈 곳을 메울 수도 있다.
무어의 법칙 차트에서 일부 연도에는 데이터가 없는데, 그 해에 출시된 칩이 없었기 때문이다.
이럴 때는 대체(Imputation)를 통해서 메우기가 가능하다.
시계열 예측은 변칙 감지에도 사용할 수 있는데, 웹사이트 로그의 시계열에서 치솟은 수치를 통해 서비스 거부 공격이 발생할 가능성을 확인할 수 있다.
다른 옵션은 시계열을 분석해 패턴을 발견할 수 있다. 시계열 자체를 만들어 내는 요인을 파악할 수 있는데, 전형적인 예시로 음파를 분석해 그 속에 있는 단어를 찾아낼 수 있다. 음성 인식 신경망으로 활용할 수 있다. 위 그림에서는 음파가 분할 되는 방식을 확인할 수 있다.
머신러닝을 활용하면 시계열을 기반으로 신경망을 훈련해 단어 또는 하위 단위를 인식할 수 있다.
시계열은 다양한 형태로 나타낼 수 있지만 흔하게 나타나는 패턴이 있다.
첫 번째로는 추세로, 시계열이 특정한 방향으로 움직이는 경우이다.
무어의 법칙 예시에서 상향 추세가 나타나고 있는 것을 볼 수 있다.
또 다른 개념은 계절성이다. 패턴이 예측 가능한 간격으로 반복될 때 관측되는 것이다.
위 차트에서는 소프트웨어 개발자용 웹사이트에서의 활성 사용자 수인데, 주기적으로 수치가 떨어지는 고유의 패턴이 나타난다. 5개 유닛은 상승, 2개 유닛은 하강인데 수치가 떨어지는 것은 주말이라 근무하는 사람 수가 적다는 것을 볼 수 있따.
또 다른 계절성 시계열은 주말에 수치가 올라가는 쇼핑몰 사이트나 연중 다양한 시기에 정점을 찍는 스포츠 사이트를 예로 들 수 있다.
일부 데이터는 추세와 계절성이 함께 나타날 수 있다.
전반적으로 상향 추세가 나타나고 국지적으로는 고점과 저점이 있다.
위와 같이 전혀 예측을 하기 힘든 완전히 임의의 값들로 구성된 세트도 있다.
통상 화이트 노이즈라고 하는 시계열을 생성한다. 이러한 데이터는 작업할 수 있는 것이 많지 않다.
해당 데이터는 추세도 없고 계절성도 없어서 고점이 언제 어느 강도로 나타날 지 예측하기 어렵다.
하지만 분명히 시계열 전체가 무작위는 아닌데 두 고점 사이에는 확정적인 저점이 있다.
각 시간 단계별 값은 이전 시간 단계에서 나타난 수치의 99% 에 간혹 나타나는 고점을 더한 것인데, 이것은 자기 상관 시계열이라고 해서, 지연된 사본 자체와 상관관계가 있다.
위 박스에서는 강한 자기상관이 보이는데, 종종 이런 시계열은 시간 단계가 이전 단계에 의존하면서 기억을 가지고 있다고 표현되기도 하는데, 예측이 불가능한 고점은 'inovation'이라고 불리고 즉 과거의 값을 기반으로 예측이 불가능한 것이다.
또 다른 예시에서는 여러 개의 자기 상관이 있는데, 시간 단계 1과 50에서 나타나고 있다.
Lag1 자기 상관에서는 잠시 동안 단기 지수 지연이 나타나고,
50에서는 각 고점 이후 작은 균형이 나타난다.
현실에 존재하는 시계열은 각 요소를 조금씩 가지고 있다. 추세, 계절성, 자기상관, 노이즈 등을 모두 조금씩 가지는데, 머신러닝은 이러한 패턴을 파악해서 포착해서 예측한다.
예측이 불가능한 노이즈를 제외하고는 시계열과 함께 작동할 수 있다.
과거에 존재했던 패턴이 미래에도 계속 될 것이라는 추정하에 계산된다.
물론 현실의 시계열이 매번 그렇게 단순하지 않고 시간이 지나면서 극단적으로 변할 수도 있다.
위 시계열은 시간 단계 200까지는 상향 추세와 명확한 계절성을 보였지만, 어떤 일이 일어나면서 변했다.
위가 주가 시계열이라면 대규모 경제 위기나 대규모 스캔들이나 혁신적인 기술 발전으로 커다란 변화가 일어났을 수도 있다. 그 이후 시계열은 명확한 계절성없이 하향 추세를 보이는데, 통상 비정상 시계열이라고 한다.
이를 예측하기 위해서는 한정된 시간만 훈련한다.
여기서는 마지막 100단계만 취해서 시계열 전체를 분석하는 것보다 나은 성과가 나타날 것이다.
늘 데이터가 많으면 좋다는 일반적인 머신러닝의 틀과 다르다.
시계열 데이터 예측은 시계열별로 달라지고 시간이 지나도 행동이 변하지 않는 정상 시계열이라면 데이터가 많을 수록 좋지만 비정상 시계열은 훈련을 위해 사용하는 데이터의 최적의 윈도우는 다를 것이다.
이상적으로는 전체 시계열을 고려해서 향후 어떤 일이 일어나는지 예측하면 좋겠지만,
위처럼 극적인 변화가 있으면 생각보다 간단하지 않다.
python notebook을 이용해서 추세, 계절성, 노이즈, 자기 상관을 확인한다.
주어진 자료를 가지고 시계열을 예측하기 위해서
추세, 계절성, 노이즈가 포함된 시계열을 살펴보자.
예를 들어 마지막 값을 가지고 다음 값이 동일할 것이라고 생각하는 것을 단순 예측이라고 하는데,
최소한의 기준치를 얻기 위해 사용할 수 있다.
데이터의 일부를 확대해서 확인해보면 최소한의 기준치를 얻기 위해 사용할 때 유용할 수 있다.
예측 모델의 성능을 측정하려면 시계열을 훈련, 검증, 테스트 기간으로 분할한다.
이것을 고정 파티셔닝이라고 한다.
시계열에 계절성이 있는 경우 각각의 기간에 계절 전체를 포함하고 싶을 수 있다.
코퍼스에서 무작위 값을 추출해 세 가지 작업을 수행하면 영향이 사실 상 동일하게 나타나야 한다.
훈련 시간에는 모델을 학습하고 검증 기간에 모델을 평가해서 실험을 통해 훈련을 위한 아키텍처를 찾아내고 모델 및 하이퍼파라미터에 원하는 성능이 나올 때까지 작업하고 검증 데이터로 측정한다.
이를 완료하고 훈련 및 검증 데이터를 다시 훈련시켜서, 테스트 기간에 테스트 하여 모델의 성능을 확인한다.
제대로 작동한다면 테스트 데이터를 사용해 다시 훈련하는 특이한 단계를 거친다.
테스트 데이터는 시간 상 현재 시점에 가장 가까운 데이터이다.
향후 값을 결정할 수 있는 가장 강력한 신호로 훈련에 그 데이터가 포함되지 않으면 최적의 결과가 아닐 수 있다.
가끔 테스트 세트를 포기하는 경우가 흔한데, 훈련 기간과 검증 기간에만 훈련하고 테스트 세트는 나중에 하기도한다.
이와 같은 고정파티셔닝은 단순하고 직관적이지만 다른 방법도 존재한다.
짧은 훈련 기간을 가지고 점정 증가시킨다. 한 번에 하루, 한 번에 한 주 등
반복 시행시마다 훈련 기간에 모델을 학습한다. 이를 활용해 검증 기간에느 다음 달이나 다음 주를 예측하는 roll-forward partitioning을 수행한다.
고정 파티셔닝을 여러 번 시행하고 이처럼 모델을 계속 다듬는 과정이다.
모델과 기간을 가지고 모델을 평가했다면, 성능을 계산할 지표가 필요하다.
먼저 오차 산출 부터 확인하면 모델이 예측한 값과 평가 기간의 실제값의 차이이다.
모델 예측 성능을 평가하는 가장 일반적인 지표는 mse 라는 평균제곱오차이다.
음수를 제거하기 위해 제곱을 하는데, 오차를 서로 상쇄하는 것을 방지한다.
그리고 산출한 오차의 평균을 내어 원래의 오차와 동일한 규모로 만들고 제곱근을 계산하는 rmse, 평균제곱근 오차가 있다.
또 MAE 라는 평균절대오차로 평균절대편차인 MAE라고 하고 제곱으로 음수를 제거하는 것이 아닌 절대값을 활용한다. MSE 처럼 큰 오차에 페널티가 발생하지 않는다.
작업에 따라 MAE, MSE를 선호할 수 있다.
오차값이 크면 윟머도가 높아질 가능성이 있고 작은 오차보다 비용이 훨씬 크면 MSE,
손익이 오차의 크기에 비례하다면 MAE가 더 나을 수 있다.
평균 절대 백분율 오차 MAPE로, 절대오차와 절대값의 평균 비율로 값 대비 오차의 크기를 파악할 수 있다.
keras 지표 라이브러리를 통해 계산할 수 있다.
가장 간단한 방법으로 이동 평균을 계산하는 방법이 있다.
핵심은 노란색 라인은 평균 창이라고 하는 고정된 기간인 예를 들어 30일 동안의 파란색에 해당하는 평균 플롯이다. 많은 노이즈를 효과적으로 제거하고 원본 시계열을 대략적으로 모방하는 곡선이 도출되지만 추세나 계절성을 예측하지는 않는다
현재 시점에 즉 미래를예측하고자 하는 기간 이후에는 단순 예측보다 결과가 저조할 수 있다.
이 때 평균절대오차가 7.14가 나왔는데,
이를 피하는 방법 중 하나는 차분이라는 기법으로 시계열에서 추세와 계절성을 제거하는 것이다.
시계열 자체를 연구하는 것이 아닌 t 시점의 값과 이전 기간 값 사이의 차이를 연구하는 것이다.
데이터의 시간에 따라서 그 기간은 1년이 될 수 있고 1일, 1개월이 될 수 있다.
1년의 데이터를 보면 t-365에서 이 차분 시계열은 추세나 계절성이 존재하지 않는다.
이후 이동 평균을 활용해서 시계열을 예측하면 위와 같은 예측이 나오는데,
이는 차분 시계열에 대한 예측일 뿐이지 원본 시계열에 대한 것은 아니다.
원본 시계열에 대한 최종 예측값을 얻으려면 t-365 시점의 값을 다시 더해 이 예측값을 얻을 수 있다.
검증 기간에 따른 평균절대오차를 측정하면 5.8로, 단순 예측보다 살짝 나아졌다.
이동평균을 통해 노이즈가 많이 제거됐지만 최종 예측값은 여전히 노이즈가 많다.
이러한 노이즈는 예측값에 더했던 과거의 값으로 발생한다.
이동 평균을 통해 과거의 노이즈를 제거해 예측값을 개선할 수 있다.
그러면 위와 같은 매끄러운 예측값이 나오는데, 이 경우 검증 기간에 대한 평균제곱오차는 약 4.5로 이전의 방법에 대해 나아졌다.
시계열이 생성된 다음 계산을 하고 노이즈로 인해 완벽한 모델의 평균절대오차는 약 4가 나온다.
이 접근법을 사용하면 최적의 값에 접근하게 된다.
때로는 간단한 접근법도 효과가 좋을 때가 있다.
현재 값의 이동 평균을 산출할 때는 trailing window를 사용했다.
하지만 과거의 값은 이동 평균을 산출할 때 centered windows를 사용했다.
centered windows을 사용해서 이동 평균을 산출하면 centered windows보다 정확도가 더 높다.
하지만 현재 값을 매끄럽게 하기 위해 centered windows을 사용할 수 없다. 미래의 값을 알 수 없기 때문이다.
그러나 과거 값을 매끄럽게 다듬을 때는 centered windows을 사용할 수 있다.
몇 가지 통계적 예측을 통한 일종의 기준선을 머신러닝에 활용할 수 있는지 확인