7.1 시계열 문제
시계열 분석이란?
특정 대상의 시간에 따라 변하는 데이터를 사용하여 추이를 분석하는 것
→ 추세 파악 · 향후 전망 예측용
예) 주가/환율 변동, 기온/습도 변화
시계열 형태 데이터 분류
시계열 형태 데이터 | 설명 |
불규칙 변동 | 시간에 따른 규칙적인 움직임과 달리, 어떤 규칙성이 없어 예측 불가능 & 우연적으로 발생하는 변동 예) 전쟁, 홍수, 화재, 지진, 파업 |
추세 변동 | 시계열 자료가 갖는 장기적인 변화 추세 추세 : 장기간에 걸쳐, 지속적으로 증가·감소하거나, 일정한 상태를 유지하려는 성향 → 짧은 기간 동안엔 추세 변동을 찾기 어려움 예) 국내총생산(GDP), 인구증가율 |
순환 변동 | 2~3년 정도의 일정한 기간을 주기로, 순환적으로 나타나는 변동 1년 이내 주기로 곡선을 그리며 추세 변동에 따라 변동함 예) 경기 변동 |
계절 변동 | 자료에서 계절적 영향과 사회적 관습에 따라 1년 주기로 발생하는 것 보통 계절에 따라 순환하며 변동함 |
시계열 데이터 분류
· 규칙적 시계열 : 트렌드, 분산이 불변하는 시계열 데이터
· 불규칙적 시계열 : 트렌드, 분산이 변화하는 시계열 데이터
∴ 시계열 데이터를 잘 분석한다
= 불규칙적 시계열 데이터에 특정 기법이나 모델을 적용하여, 규칙적 패턴을 찾거나 예측하는 것
불규칙적 시계열 데이터에 규칙성을 부여하는 방법 : AR, MA, ARMA, ARIMA 모델을 적용하는 것
→ 최근엔 딥러닝을 이용, 기계 스스로 시계열 데이터의 연속성을 찾아내게함
7.2 AR, MA, ARMA, ARIMA
시계열 분석 : 시간을 독립변수로 사용(머신러닝 - 독립변수를 사용해 종속변수를 예측함)
7.2.1 AR 모델
AR(AutoRegression, 자기회귀) 모델이란?
- '이전 관측값'이 '이후 관측값'에 영향을 준다는 아이디어에 대한 모형
① 시계열 데이터에서 현재 시점을 의미
② 과거가 현재에 미치는 영향을 나타내는 모수(Φ) × 시계열 데이터의 과거 시점
③ 시계열 분석에서 오차 항을 의미(백색 잡음)
⇒ p 시점을 기준으로, 그 이전의 데이터에 의해 → 현재 시점의 데이터가 영향을 받는 모형
7.2.2 MA 모델
MA(Moving Average, 이동 평균) 모델이란?
- 트렌드 상황에 적합한 회귀 모델
//트렌드 : 평균 혹은 시계열 그래프에서 y 값
//회귀 모델 : 어떤 자료에 대해, 그 값에 영향을 주는 조건을 고려하여 구한 평균
① 시계열 데이터에서 현재 시점
② 매개변수(θ) × 과거 시점의 오차
③ 오차 항
⇒ 이전 데이터의 오차에서 → 현재 데이터의 상태를 추론(AR 모델 : 이전 데이터의 '상태'에서 추론)
7.2.3 ARMA 모델
ARMA(AutoRegressive Moving Average, 자동 회귀 이동 평균) 모델이란?
- AR + MA를 섞은 모델(AR, MA 두 가지 관점에서 과거의 데이터를 사용함)
- 윈도우를 사용 - 시계열을 따라 윈도우 크기만큼 슬라이딩됨
//윈도우 : 주어진 전체 데이터 중, 한 번에 가져오는 데이터의 부분 집합 크기
7.2.4 ARIMA 모델
ARIMA(AutoRegressive Intergrated Moving Average, 자동 회귀 누적 이동 평균) 모델이란?
- 자기 회귀와 이동 평균을 모두 고려하는 모형
- 데이터의 선형 관계 + 추세까지 고려
💻 ARIMA 모델 구현 실습
p : 자기회귀 모델의 차수(시간 지연 수)
d : 차분 차수(데이터가 과거 값을 뺀 횟수)
q : 이동 평균 모델의 순서
forecast()
Returns
forecast ndarray
Array of out of sample forecasts
stderr ndarray
Array of the standard error of the forecasts.
conf_int ndarray
2d array of the confidence interval for the forecast
7.3 순환 신경망(RNN)
RNN(Recurrent Neural Network)이란?
- 시간적으로 연속성이 있는 데이터를 처리하려고 고안된 인공 신경망
- Recurrent(반복되는) = 이전 은닉층이 현재 은닉층의 입력이 되면서 반복되는 순환구조를 갖는다는 의미
RNN이 기존 네트워크와 다른점
기억(memory)을 가짐
//기억 : 현재까지 입력 데이터를 요약한 정보
→ 새로운 입력이 네트워크로 들어올때마다 기억은 조금씩 수정됨
∴ 최종적으로 남겨진 기억 : 모든 입력 전체를 요약한 정보
순환 신경망 구조
첫 번째 입력이 들어옴 → 첫 번째 기억(h₁)이 만들어짐
두 번째 입력이 들어옴 → 기존 기억(h₁)과 새로운 기억을 참고하여, 새 기억(h₂)이 만들어짐
→ 입력 길이만큼 이 과정을 반복할 수 있음
⇒ RNN : '외부 입력'과 '자신의 이전 상태'를 입력받아 현재의 상태를 갱신함
입력과 출력에 따른 RNN 유형
① 일대일 : 순환이 없어서 RNN이라고 발하기 어려움 (대표 사례: 순방향 네트워크)
② 일대다 : 입력이 하나고, 출력이 다수인 구조 (대표 사례: 이미지 캡션 - 이미지를 입력해서, 이미지에 대한 설명을 문장으로 출력함)
③ 다대일 : 입력이 다수고, 출력이 하나인 구조 (대표 사례: 감성 분석기 - 문장을 입력해서, 긍정/부정을 출력)
다대일 예시 코드
In_layer = tf.keras.input(shape=(3,1), name='input')
RNN_layer = tf.keras.layers.SimpleRNN(100, name='RNN')(In_layer)
Out_layer = tf.keras.layers.Dense(1, name='output')(RNN_layer)
다대일 모델
※ 입력과 출력 사이에 '하나의 RNN 셀(cell)'만 가짐
+ 다대일 구조에 층을 쌓아올림
※ 입력과 출력 사이에 '두 개의 RNN 셀'만 가짐
In_layer = tf.keras.input(shape=(3,1), name='input')
RNN_layer0 = tf.keras.layers.SimpleRNN(100, name='RNN1')(In_layer)
RNN_layer1 = tf.keras.layers.SimpleRNN(100, name='RNN2')(RNN_layer0)
Out_layer = tf.keras.layers.Dense(1, name='output')(RNN_layer1)
④ 다대다 : 입력과 출력이 다수인 구조(대표 사례 : 자동번역기 - 언어를 번역)
다대다 구현 코드
In_layer = tf.keras.input(shape=(3,1), name='input')
RNN_layer = tf.keras.layers.SimpleRNN(100, return_sequences=True, name='RNN')(In_layer)
Out_layer = tf.keras.layers.TimeDistributed(keras.layers.Dense(1), name='output')(RNN_layer)
⑤ 동기화 다대다 : '다대다'처럼 입력과 출력이 다수인 구조(대표 사례: 프레임 수준의 비디오 분류 - 문장에서 다음에 나올 단어를 예측하는 언어 모델)
그림으로 표현한 순환 신경망 구조
7.3.1 RNN 계층과 셀
RNN
- 내장된(built-in) 계층 제공
- 셀 레벨의 API 제공
RNN 계층 vs RNN 셀
RNN 계층 : 입력된 배치 순서열을 모두 처리
RNN 셀 : 오직 하나의 단계만 처리
⇒ RNN 셀 = RNN 계층의 for loop 구문의 내부
RNN계층 : 셀을 래핑* → 동일한 셀을 여러 단계에 적용
//위 그림에서도 동일한 셀이 x1, x2, …, xn 등 전체 RNN 계층(네트워크)에서 사용되고 있음
* 래핑 : dll(dynamic linked library)나 API를 사용하기 쉽도록 한 번 더 dll 등으로 만들어 주는 것
⇒ 셀은 입력 시퀀스에서 반복됨 & return_sequences 같은 옵션을 기반으로 출력값을 계산
//입력 시퀀스 : 신경망에 시퀀스 데이터를 입력
∴ 셀 : 실제 계산에 사용되는 RNN 계층의 구성요소. 단일 입력과 과거 상태를 가져와 출력과 새로운 상태를 생성
+ RNN 계층과 셀을 분리해서 설명하는 이유 : 텐서플로2에서 둘을 분리해서 구현이 가능하기 때문
RNN의 활용 분야 : 자연어 처리(연속적인 단어들의 나열인 언어, 자연어 처리는 음성인식, 단어 의미 판단, 대화 등에 대한 처리가 가능), 손글씨, 센서 데이터 등 시계열 데이터 처리
시계열에서 백색잡음 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=wujuchoi&logNo=221167919012
'Etc > Deep Learning' 카테고리의 다른 글
7장 시계열 분석(3) - LSTM (0) | 2021.08.25 |
---|---|
7장 시계열 분석(2) - RNN 구조(계층, 셀) + RNN 셀 구현 (0) | 2021.08.21 |
6장 합성곱 신경망Ⅱ(5) - 이미지 분할을 위한 신경망(U-Net부터 내용추가하기) (0) | 2021.08.17 |
6장 합성곱 신경망(4) - 객체 인식을 위한 신경망(R-CNN, 공간 피라미드 풀링, Fast R-CNN, Faster R-CNN) (0) | 2021.08.12 |
6장 합성곱 신경망Ⅱ(3) - 이미지 분류를 위한 신경망(VGGNet, GoogLeNet, ResNet) (0) | 2021.08.11 |