-
시계열 데이터의 개요내일배움캠프/Python 2024. 9. 24. 19:07
시계열 데이터 개요 요약 시계열 분석이란
과거의 흐름으로 미래를 예측하는 방법론 중 하나입니다.
Meta사의 prophet모델
LSTM, RNN, Transformer 등
시계열 분석을 위한 여러 모델이 있습니다.시계열 예측의 이해
시계열 데이터란
시간에 따라서 정렬된 데이터로
주기적으로 기록되며,
동일한 시간단계로 분포되어 있습니다.
일평균기온, 가정의 전기 소비, 주가가
대표적인 시계열 데이터입니다.
시계열의 구성요소
시계열 분해를 통해서 다음 구성요소를 쉽게 파악할 수 있습니다.
추세
시간이 지남에 따라
지속적이고 일관된 방향으로 변화하는 장기적 패턴을 가집니다.
계절성
일정한 시간 주기(고정된 주기)에 따라 반복되는 패턴을 가지며
보통 연간 주기를 따르고, 반복적인 변동을 보입니다.
여름철 아이스크림 판매량 증가, 블랙프라이데이 판매량 증가 등이
대표적인 계절성 예시입니다.
비슷한 개념으로 주기성이 있는데
계절성과 다른 점은 계절적인 요인이 아닌
사회적, 경제적, 정치적 요인에 의해
불규칙적인 변동이 발생한다는 것입니다.
또한 수년의 주기를 가지고
변동성이 커서 예측이 어렵습니다.
잔차
시계열 데이터에서 추세와 계절성을 제거한 후 남는
무작위적 변화량을 의미합니다.
시계열 예측 vs 회귀 예측
시계열 예측의 특징
데이터에 순서가 있으므로 반드시 순서를 유지해야합니다.
따라서 회귀 예측처럼 데이터를 무작위로 섞어서 학습에 사용할 수 없습니다.
(K겹 교차검증이나 배깅)
피처 데이터를 하나만 가집니다.
과거 시점의 데이터 자체가 피처 역할을 합니다.
시계열 예측에
Prophet, ARIMA 등을
사용합니다.
시간의 흐름 포착 가능하고
이해와 해석이 용이하다는 장점이 있습니다.
하지만 다변량 분석과
비선형 모델링 사용 제한이라는 단점이 있습니다.
회귀 예측 특징
데이터의 순서가 중요하지 않습니다.
여러 피처를 사용해 목표 변수를 예측할 수 있습니다.
선형회귀, 의사결정 나무, 신경망 등의 모델을 사용합니다.
여러 변수간의 관계를 분석할 수 있고
비선형 패턴도 학습 가능하다는 장점이 있습니다.
하지만 시간에 따른 의존성을 무시하고
과적합에 취약하다는 단점이 있습니다.
확률 보행 프로세스
확률 보행이란
평균과 분산이 시간이 지나도 일정하지 않은
(무작위 경로로 이동하는)
비정상 시계열을 뜻합니다.
따라서 차분을 하여 정상성을 확보할 필요가 있습니다.
정상성이란
시계열의 통계적 성질이 시간에 따라 변하지 않는 상태를 말합니다.
시계열 분석에서 좋은 모델링과 정확한 예측을 할 때 필요합니다.
정상성 조건
1. 시계열의 평균이 모든 시간에서 변하지 않고 일정합니다.
2. 시계열의 분산이 시간에 따라 일정합니다.
3. 시계열의 두 시점 간 공분산이 시간에 의존하지 않고
시간의 차에만 의존합니다.
정상성 확보를 위한 데이터 변환 기법
평균 안정화
차분
시계열 데이터에서 추세, 계절성을 제거하기 위한 방법입니다.
특정 시점과 그 직전 시점 사이 발생하는 일련의 변화를 계산합니다.
이동평균 평활화
시계열에서 단기적인 변동성을 제거하고
전체적인 추세를 더 명확히 볼 수 있습니다.
주식차트의 이동평균선을 생각하면 됩니다.
5, 20, 60, 120일 등...
분산 안정화
로그 변환
분산 안정화
제곱근 변환
z-score 표준화
+
box-cox 변환
분산 안정화 + 데이터의 정규성 보장합니다.
파라미터에 따라 데이터 변환 방식을 유연하게 조정합니다.
Trapped Lynx 데이터셋
파이썬 rolling 함수
롤링산술평균를 구할 때 사용합니다.
특정 크기의 부분집합을 연속적으로 이동하며 평균값을 구합니다.
연속적인 평균값을 산출함으로써 평균값의 흐름을 알 수 있습니다.
아래는 스라소니 관련 1821년 ~ 1934년 연도별 수를 기록한 시계열 데이터가
정상성을 달성하기 위한 3가지 가정을 만족하는지 확인한 결과입니다.
'내일배움캠프 > Python' 카테고리의 다른 글
[Python] 자료구조 - 리스트 (0) 2024.08.07 [Python] 자료구조 - 스택 코딩 문제 (0) 2024.08.06 [Python] 자료구조 - 큐와 덱 이해하기 (0) 2024.08.05 [Python] 자료구조 - 스택 (0) 2024.08.02 [Python] 파이썬 소수 구하기 알고리즘 (0) 2024.07.24