반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Computer Vision
- 데이터시각화
- 딥러닝
- 모델링
- dl
- product
- 데이콘
- tableau
- 태블로
- omtm
- fit
- 인공지능
- 컴퓨터비전
- 시각화
- 파인튜닝
- pmf
- nlp
- DACON
- 데이터분석
- 언어지능딥러닝
- 자연어처리
- 그로스해킹
- ERD
- 데이터모델링
- OKR
- Market
- productmarketfit
- 머신러닝
Archives
- Today
- Total
블로그
[딥러닝] #4 딥러닝 기반 시계열 모델링 본문
반응형
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차원이 됨
- 시계열 모델링 절차
- y 시각화, 정상성 검토
- 모델 생성
- Train_err(잔차) 분석
- 검증(예측)
- 검증(평가)
- 시계열 모델 기술적 / 비즈니스적 평가
기술적 평가 | 잔차 분석 | - 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 : x, y
- 스케일링
- x 스케일링은 필수
- y값이 크다면, 최적화를 위해 스케일링 필요 -> 단, 모델 평가 시 원래 값으로 복원해야 함
- 3차원 데이터셋 만들기
- timesteps 단위로 잘라 2차원 데이터셋(x) 생성
- 2차원 데이터셋의 묶음 -> 3차원 : 2차원 데이터셋 하나로 y값(1차원) 예측
- 데이터 분할 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
반응형
'공부 > DL' 카테고리의 다른 글
[CV] 시각지능 딥러닝 #2 Image Data Augmentation 이미지 데이터 증강 (0) | 2024.04.02 |
---|---|
[CV] 시각지능 딥러닝 #1 CNN (Convolutional Neural Networks) (0) | 2024.04.02 |
[딥러닝] #3 성능 관리 (0) | 2024.03.25 |
[딥러닝] #2 분류 모델링 (0) | 2024.03.22 |
[딥러닝] #1 회귀 모델링 (0) | 2024.03.21 |