본문 바로가기

Study/시계열8

8. (Transformer-2편) Transormer : Self-Attention 트랜스포머의 전반적인 구조와 Self-attention에 대해.. 대부분의 이미지는 Jay Alammar 의 블로그에서 가져왔다. 트랜스포머의 전체적인 구조는 인코더와 디코더를 여러 개 (보통은 같은 개수만큼) 쌓은 구조이다. 직전 포스팅에서 설명한 S2S+attention 에서는 인코더/디코더가 1개였던 것과 대조된다. 또한 S2S 와는 다르게, 한번에 하나의 토큰씩 순차적으로 시퀀셜 하게 토큰을 처리하지 않는다. RNN 구조를 완전히 벗어나기 때문에 그럴 필요가 없다. 전체 문장(시계열에서는 타임스텝)을 한 번에 집어넣고 처리한다. Encoding vs Decoding block 차이점 : Encoder 는 한번에 모든 시퀀스를 다 사용함 (Unmasked), Decoder는 단어를 생성해야하니 순차.. 2024. 7. 24.
7. (Transformer-1편) RNN 과 Attention 이번 포스팅부터 2~3편으로 나누어 Transformer와 관련한 내용을 정리하려고 한다. 첫 번째 포스팅은 Transformer 모델이 나오게 된 배경? 흐름에 대해 정리하고, 시계열, 자연어 분야에서 트랜스포머 전까지 가장 많이 쓰였던 RNN 기반의 S2S + Attention 구조에 대해 다루려고 한다. 딥러닝 기반의 시계열 예측모델 흐름  시계열 예측 모델을 큰 카테고리로 나눠보면 3가지로 분류해볼 수 있다. 전통적인 통계기반의 시계열 분석 방법들 (Moving average, Exponential smoothing, ARIMA, Prophet 등..) 머신러닝 기반의 시계열 분석 방법들 (SVM, Random foreset, Boosting 등..) 딥러닝 기반의 시계열 분석 방법들 (RNN, .. 2024. 7. 24.
6. 시계열 데이터 클러스터링 (DTW, TimeSeriesKMeans) 시계열 클러스터링은 시간에 따른 데이터의 패턴을 기반으로 여러 시계열 데이터를 그룹화한다. 각 시계열은 유사한 패턴, 트렌드, 계절성 등을 기준으로 클러스터에 속하게 되는데, 이를 통해 데이터의 구조를 이해하고, 예측 모델의 성능을 향상할 수 있습니다. 우리가 클러스터링을 할 때는 주로 거리나 밀도를 기반으로 유사도(similarity)를 측정하게 되는데, 시계열 데이터의 경우 주로 동적 시간 왜곡(DTW : Dinamic Time Warping)이라는 거리 측정 방법을 사용한다.  DTW는 아래의 그림과 같이 시계열 데이터간의 길이나 크기가 달라도 이것을 고려하여 유사성을 측정하는 방법이다. 두 시계열의 각 지점 간의 유클리디언 거리를 기반으로 거리 행렬을 만들고, 최적 경로 (최소 누적거리)를 찾는 .. 2024. 7. 9.
5. Seq2Seq 모델을 이용한 다변량 다중시점 시계열 예측 다변량 시계열 예측을 할 때 시퀀스 투 시퀀스(sequence to sequence, seq2seq) 형태를 사용하면 더 정교한 시계열 예측이 가능해진다. Seq2 Seq 모델은 주로 두 개의 LSTM으로 구성되며, 첫 번째 LSTM(인코더)은 입력 시퀀스를 고정 길이의 콘텍스트 벡터로 인코딩하고, 두 번째 LSTM(디코더)은 이 벡터를 기반으로 출력 시퀀스를 생성한다. 이는 주로 번역, 대화 생성 및 시계열 예측에 사용된다.  Seq2 Seq을 이용한 다중시점 시계열 예측의 가장 큰 장점은, known future input 값을 사용할 수 있다는 점이다. Seq2 Seq의 Encoder 가 과거의 정보를 받아서 콘텍스트 벡터로 인코딩을 하고, Decoder는 인코딩 된 콘텍스트 벡터에 known fu.. 2024. 7. 8.
4. Prophet 패키지를 이용한 간단 시계열 예측 Prophet는 Facebook에서 개발한 오픈 소스 시계열 데이터 예측 도구이다. 비정상적이고 결측치가 있는 데이터에 강하며, 주기적 패턴과 추세를 감지하는 데 효과적이다. Python과 R에서 사용할 수 있으며, 가장 큰 장점은 사용하기가 매우 쉽다.  머신러닝, 딥러닝과 같은 인공지능 모델보다는 ARIMA와 같은 확률적 모형에 가깝다고 할 수 있고, 다만 ARIMA 보다는 좀 더 도메인 지식(가정) 을 모델에 유연하게 입힐 수 있다.  Prophet 모델의 생성과 학습은 아래 코드 3줄이 전부다. 주의할 점은, Prophet의 입력 데이터는 칼럼명을 ds (= 날짜), y (= 값)으로 설정해줘야 한다. Prophet 에는 사용가능한 다양한 옵션들이 있는데, 이들 각각에 대해서는 나중에 정리하겠다... 2024. 7. 8.
3. 딥러닝을 이용한 시계열 예측 (TensorFlow, LSTM) 단변량 (univariate) & 단일 시점 (single step) 1. (단변량) 시계열 데이터셋 만들기 우선 예제의 단변량 시계열 데이터의 형태는 아래와 같음. (시간에 따른 기온 데이터) 시계열 데이터를 슬라이딩 윈도우 형태로 변환해 준다. 윈도 형태 데이터셋 변환 함수에는 train, valid, test 데이터셋 구분을 위한 start ~ end index , window 사이즈, 예측하고자 하는 타깃시점 (= 몇 step 후를 예측할지)을 입력한다.아래 코드는 single step 예측 기준. target_size 를 크게 잡을수록 먼 시점을 예측# Define a specific window for training Neural Networkdef univariate_data(dataset,.. 2024. 7. 8.
2. 시계열 분석을 위한 확률모형 시계열 분석을 위한 확률모형  시계열 분석을 위한 확률모형은 데이터의 시간적 패턴 (추세변동, 계절변동 등)과 변동을 설명하는 통계적 방법확률 모형이 시계열 데이터를 잘 추정했을 때 '잔차 시계열 자료 (residual error series) ' 는 백색잡음(white noise) 이 되어 서로 독립적이고 일정한 분산을 갖는다. (대게 정규분포를 따른다) 이러한 컨셉에서 출발한 확률 모형들이 대표적으로 AR, MA, ARIMA, SARIMAX, VAR, ECM 등이 있다. 확률모형의 분석은 4단계로 진행된다 : Box-Jenkins 방법론모형 설정 (Model Identification) : ACF, PACF 와 같은 지표, 혹은 auto.arima 와 같은 프로그램을 이용하여 시계열 자료에 '적합한'.. 2024. 6. 26.
1. 시계열 데이터와 시계열 분석 통계적 가설검정 우선 시계열 데이터 분석에 앞서 추후 시계열 데이터와 예측모델의 검정을 위해 '통계적 가설 검정'을  짧게만 복습해 보면...유의 수준 (significant level, α) 이란? 평균으로부터 얼마나 떨어져 있어야 귀무가설(H0)을 기각할지. 유의 수준 99% 라는 것은, 정규분포의 1% 영역까지 떨어져 있어야 기각하겠다는 뜻. P-value 란? 유의 수준과 비교할 대상. 표본(sample)을 뽑았을 때, 그 샘플들의 결과보다 더 극단적인 결과를 얻을 확률. 예를 들어,, "여학생 평균키가 165cm 다" 를 귀무가설로, 샘플30명을 뽑아 평균을 내봤더니 170cm이다. 이 값에 대한 P-value가 0.01 이라는것은, 평균이 170cm보다 극단적인(큰) 샘플을 뽑을 확률이 0.0.. 2024. 6. 24.