데이터과학 삼학년

Recurrence plots (시계열 데이터 이미지화 Time-Series Image) 본문

Time Series Analysis

Recurrence plots (시계열 데이터 이미지화 Time-Series Image)

Dan-k 2020. 10. 20. 15:28
반응형

# 딥러닝 분야에서 이미지 인식은 활발히 진화하고 있다.

특히 기존의 정형화된 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)

 

 

출처

 

CNN모델에 시계열 데이터를 사용하기 위한 이미지 표현화

CNN모델에 시계열 데이터를 사용하기 위한 이미지 표현화 이미지 인식 분야에서 매우 좋은 성능을 보이...

blog.naver.com

https://en.wikipedia.org/wiki/Recurrence_plot

Classification of Time-Series Images Using Deep Convolutional Neural Networks

728x90
반응형
LIST
Comments