일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공분산
- UDF
- API
- 유튜브 API
- login crawling
- GCP
- top_k
- XAI
- airflow subdag
- spark udf
- subdag
- chatGPT
- requests
- integrated gradient
- Counterfactual Explanations
- correlation
- Retry
- BigQuery
- flask
- session 유지
- hadoop
- Airflow
- 상관관계
- grad-cam
- GenericGBQException
- TensorFlow
- API Gateway
- gather_nd
- youtube data
- tensorflow text
- Today
- Total
데이터과학 삼학년
Recurrence plots (시계열 데이터 이미지화 Time-Series Image) 본문
# 딥러닝 분야에서 이미지 인식은 활발히 진화하고 있다.
특히 기존의 정형화된 data(tabular) 보다 이미지나 텍스트를 분석하는데 딥러닝이 활발하게 사용되고 있는 추세이다.
이는 tabular 데이터를 이미지화 혹은 텍스트화 한다면, 더 많은 종류의 딥러닝 알고리즘(transfer learning 등)을 적용하여, 좋은 성과를 얻을 수 있다는 것 과 같다.
이에 Tabluar 데이터를 딥러닝에 넣는 것 보다, Tabluar 데이터를 이미지화하여 이미지 모델에 넣는 방법 시도가 나왔고,
시계열 데이터를 이미지로 표현하는 방법중 하나로 recurrence plot을 사용할 수 있다.
Recurrence plots
- RP는 시계열 데이터를 m차원의 공간 궤적에 그리고, 각 공간궤적에 위치한 점간의 거리를 이용하여, 이미지화 시킨 plot이라고 보면 됨
Recurence plots 를 그리는 로직
- step1. 시계열 데이터를 m차원 공간 궤적 구성
- step2. m차원 공간 궤적을 RP 행렬로 표현
만약 시계열 데이터를 시각화 한다면 위 그림의 맨 왼쪽처럼 나타낼 수 있고,
이때 시계열 값들을 2차원의 공간위에 다시 표현하여 가운데 그림과 같다.
2차원의 공간에 그린 좌표를 대상으로 각 point간 거리를 구해 일정 앱실론 값과 비교한다
R 함수를 통과하여 1의 값을 얻었다면, 그 점은 검은 포인트로 나타낼 수 있다.
위의 과정을 반복하여 행렬을 구해 시각화 하면
이렇게 RP를 나타낼 수 있는 그림이 된다.
그러면 최종적으로 Tabular 데이터인 시계열 데이터는 이미지화 되고, 이미지를 CNN에 적용하여 분류 문제를 풀 수 있다.
시계열의 특징에 따라 categorical 해놓은 label만 있다면, 원하는 형태의 분류문제 해결이 가능하다.
예를 들어 급등하는 시계열 이상치를 1로 label 해놓고, 잔잔한 시계열 이상치를 0으로 label 해놓는 다면, 시계열 이상치를 위와 같은 방법으로 탐지할 수 있다.
간단한 코드
import numpy as np
import pylab as plt
import matplotlib.pyplot as pplt
def rec_plot(s,eps=None, steps=None):
if eps==None : eps=0.01
if steps==None : steps=10
N = s.size
S = np.repeat(s[None,:],N, axis=0)
Z = np.floor(np.abs(S-S.T)/eps)
Z[Z>steps] = steps
return Z
s = np.random.random(1000)
plt.imshow(rec_plot(s))
plt.show()
pplt.plot(s)
출처
https://en.wikipedia.org/wiki/Recurrence_plot
Classification of Time-Series Images Using Deep Convolutional Neural Networks
'Time Series Analysis' 카테고리의 다른 글
Prophet for python (feat. fbprophet) (0) | 2020.12.14 |
---|---|
Augmented Dickey-Fuller test - 정상성 시계열 데이터 확인 방법 (0) | 2020.11.03 |
정상성과 차분 (stationarity & differencing) (0) | 2020.11.03 |
Exponential Smoothing (0) | 2020.05.07 |
Timeseries Analysis - statsmodels.tsa (4) | 2020.02.24 |