반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

블로그

[딥러닝] #4 딥러닝 기반 시계열 모델링 본문

공부/DL

[딥러닝] #4 딥러닝 기반 시계열 모델링

beenu 2024. 3. 28. 03:43
반응형

1. 시계열 모델링

  • Sequential Data ⊃ Time Series
    • Time Series : Sequential + 시간의 등간격
    • Voice, Stock Data, Sentence 등
  • 시계열 데이터 분석
    • 시간의 흐름에 따른 패턴 분석
    • y 이전 시점 데이터들로부터 흐름의 패턴을 추출하여 예측
      • 패턴 : Trend(추세), Seasonality(계절성)
      • 패턴이 충분히 도출된 모델의 잔차는 Stationary(정상성)
  • ML 기반 Modeling
    • 특정 시점 데이터들(1차원)과 예측대상시점(y(t+1))과의 관계로부터 패턴을 추출하여 예측 -> 데이터는 2차원
  • DL 기반 Modeling
    • 시간 흐름 구간(timesteps) 데이터들(2차원)과 예측대상 시점(y(t+1))과의 관계로부터 패턴 추출
    • 분석 단위를 2차원으로 만드는 전처리 필요 -> 데이터가 3차원이 됨
  • 시계열 모델링 절차
    1. y 시각화, 정상성 검토
    2. 모델 생성
    3. Train_err(잔차) 분석
    4. 검증(예측)
    5. 검증(평가)
  • 시계열 모델 기술적 / 비즈니스적 평가
기술적 평가 잔차 분석 - ACF, PACF
- 검정 : 정상성 검정, 정규성 검정, ...
ML Metric - AIC
- MAE, MAPE, R2
비즈니스 평가 수요량 예측 - 재고 회전율
- 평균 재고비용
  • 잔차 분석
    • 잔차(Residuals) = 실제 데이터 - 예측값
    • 시계열 모델 y = f(x) + ε
      • 모델이 잘 만들어졌다면, 잔차 ε 는 white noise에 가까워야 함
      • white noise : 시간의 흐름에 따라 패턴을 정리하고도 정리되지 않은 잔차들
      • 만약 white noise에 가깝지 않다면 f(x)는 아직 y의 패턴을 제대로 반영하지 않은 것 -> 더 해야할 일이 남아있다
    • 시각화 : ACF, PACF
    • 검정
      • 정상성 검정(ADF Test, KPSS Test)
      • 정규성 검정(Shapiro-wilk Test)
      • 자기상관 검정(Ljung-Box Test)
      • 등분산성 검정(G-Q Test)

 

2. 딥러닝 기반 시계열 모델링(RNN)

  • 시계열 모델링 주의사항
    • 사전 확인 오류 : 다음날 주가를 예측할 때, 다음날 거래량을 가지고 다음날 주가를 예측하는 경우
  • RNN (Recurrent Neural Networks)
    • 과거의 정보를 현재에 반영해 학습하도록 설계된 모델

  • RNN 데이터 전처리
    1. 데이터 분할 1 : x, y
    2. 스케일링
      • x 스케일링은 필수
      • y값이 크다면, 최적화를 위해 스케일링 필요 -> 단, 모델 평가 시 원래 값으로 복원해야 함
    3. 3차원 데이터셋 만들기
      • timesteps 단위로 잘라 2차원 데이터셋(x) 생성
      • 2차원 데이터셋의 묶음 -> 3차원 : 2차원 데이터셋 하나로 y값(1차원) 예측
    4. 데이터 분할 2 : train, val
# SimpleRNN
# 노드 수 1개 -> 레이어의 출력 상태 : timesteps * 노드 수
# return_sequences : 출력 데이터를 다음 레이어에 전달할 크기 결정
## True : 출력 크기 그대로 전달 -> timesteps * 노드 수
## False : 가장 마지막(최근) hidden state 값만 전달 -> 1 * 노드 수

model = Sequential([SimpleRNN(1, input_shape=(timesteps, nfeatures), return_squences=False),
		Dense(1)])
            
            
# SimpleRNN Layer 여러 개
# return_sequences
## 마지막 RNN Layer 제외한 모든 RNN Layer : True
## 마지막 Layer는 둘 다 상관없음
### 단, True를 사용하려면 Flatten으로 평탄화 한 후에 Dense Layer로 연결

model = Sequential([SimpleRNN(1, input_shape=(timesteps, nfeatures), return_squences=True),
		SimpleRNN(1, return_sentences=False),
		Dense(1)])
            
model = Sequential([SimpleRNN(1, input_shape=(timesteps, nfeatures), return_squences=True),
		SimpleRNN(1, return_sentences=True),
        	Flatten(),
		Dense(1)])

 

  • RNN 활성화 함수 : tanh(hyperbolic tangent)
    • tanh(x) = 2 ∙ σ(2x) -1
    • σ : 시그모이드
    • vanishing gradient problem
      • 역전파 시에 gradient가 작아져 학습이 어려워지는 현상
      • RNN에서 긴 시퀀스를 처리할 때 발생함
      • tanh 함수가 이를 완화해줌
  • LSTM (Long Short-Term Memory)
    • RNN의 장기 의존성 문제(긴 기간 동안의 정보 유지 및 활용하는 데 어려움 발생) 극복
    • time step간에 두 종류의 상태 값 업데이트 관리
      • Hidden State 업데이터
      • Cell State 업데이트 : 긴 시퀀스 동안 정보를 보존하기 위한 상태값 추가

 

[추가]

  • Dropout : 과적합 방지 정규화 기법
    • Hidden Layer 다음에 Dropout Layer 추가
    • Dropout Rate : hidden layer의 노드 중 몇 퍼센트를 임의로 제외할 지 결정. 보통 0.2 ~ 0.5 범위 지정
      • Feature 적을 경우 rate 낮추고, 많을 경우는 높이는 등 조절하면서 최적의 값 찾기
  • Entropy, Cross Entropy
    • 정보량 : 이 정보가 얼마나 고급 정보냐?
    • 일어날 확률이 높을수록 정보 가치 하락 
    • 정보량 = -log p(x)
    • 확률에 log 계산 : 확률 0~1 => ∞~0으로 변환
      • 정보량이 크다(정보 값어치 큼) = 확률이 적다 = ∞
      • 정보량이 적다(정보 값어치 작음) = 확률이 크다 = 0
    • 평균 정보량 = 엔트로피 = 얼마나 불확실한가? = ∑p(xi) (-log p(xi)) = 엔트로피 불순도(Imputiry)
      • 의사결정나무에서는 평균 정보량을 떨어뜨려가는 것(확률 높임)이 모델링의 목표
      • 부모 불순도 - 자식 불순도 = Information Gain
      • split시 정보 이득이 가장 큰, 불순도를 가장 많이 떨어뜨려주는 변수와 값으로 기준 결정
    • 분류 모델 loss function
      • y가 0, 1일 때, 0일 때와 1일 때 각각의 오차를 계산하고 이 오차식을 일반화 한 후 평균을 계산한 것이 Log Loss, 혹은 Cross Entropy라고 함!

 

  • 딥러닝 학습 시 스케일링 진행. 그런데 스케일러는 2차원 데이터만 지원하기 때문에 x 데이터 전체를 스케일링 한 후에 train, val로 나눔
  • elbow method  엘보우 , 오캄의 면도날 !! 건수를 바꿔가면서 테스트 해보고 팔꿈치 근처에서 최적의 데이터 개수를 찾아야 한다 ~~
728x90
반응형