I. Magnitude Warping (MagW)

The magnitude of each time series is multiplied by a curve created by cubic spline with four knots at random magnitudes with mu = 1 and sigma = 0.2.

Python code

def magnitude_warp(x, sigma=0.2, knot=4):
    from scipy.interpolate import CubicSpline
    orig_steps = np.arange(x.shape[1])

    random_warps = np.random.normal(loc=1.0, scale=sigma, size=(x.shape[0], knot+2, x.shape[2]))
    warp_steps = (np.ones((x.shape[2],1))*(np.linspace(0, x.shape[1]-1., num=knot+2))).T
    ret = np.zeros_like(x)
    for i, pat in enumerate(x):
        warper = np.array([CubicSpline(warp_steps[:,dim], random_warps[i,:,dim])(orig_steps) for dim in range(x.shape[2])]).T
        ret[i] = pat * warper

    return ret
    
    # code 출처 https://github.com/uchidalab/time_series_augmentation

 

1. numpy.random.normal을 사용하여 평균이 mu, 표준편차가 sigma인 Gaussian distribution으로부터 크기가 trial x 6 x sample 인 random sample을 뽑음.

​[figure 1]

2. time(sample) 갯수를 기준으로 "1"에서 뽑은 값들을 지나는 3차 다항식 형태로 데이터를 생성함. 그리고 각 trial의 channel마다 생성한 curve들을 기존 data와 곱함

[figure 2]

 

​ [Figure 3. Magnitude Warping 결과]

 

 

II. Time Warping (TimW)

Time warping based on a random smooth warping curve generated by cubic spline with four knots at random magnitudes (\mu = 1 and \sigma = 0.2).

Python code

def time_warp(x, sigma=0.2, knot=4):
    from scipy.interpolate import CubicSpline
    orig_steps = np.arange(x.shape[1])

    random_warps = np.random.normal(loc=1.0, scale=sigma, size=(x.shape[0], knot+2, x.shape[2]))
    warp_steps = (np.ones((x.shape[2],1))*(np.linspace(0, x.shape[1]-1., num=knot+2))).T

    ret = np.zeros_like(x)
    for i, pat in enumerate(x):
        for dim in range(x.shape[2]):
            time_warp = CubicSpline(warp_steps[:,dim], warp_steps[:,dim] * random_warps[i,:,dim])(orig_steps)
            scale = (x.shape[1]-1)/time_warp[-1]
            ret[i,:,dim] = np.interp(orig_steps, np.clip(scale*time_warp, 0, x.shape[1]-1), pat[:,dim]).T
    return ret
    
    # code 출처 https://github.com/uchidalab/time_series_augmentation

 

1. numpy.random.normal을 사용하여 Gaussian distribution으로부터 dataset과 크기가 같은 평균이 mu, 표준편차가 sigma인 random sample을 뽑음.

[figure 4]

2. time(sample) 갯수를 기준으로 "1"에서 뽑은 값들을 지나는 3차 다항식 형태로 데이터를 생성함. 그리고 각 trial과 channel을 고정후 scaling한 데이터를 numpy.interp를 이용하여 sample points들을 단조롭게 증가하도록 바꿈

[figure 5]
[Figure 6. Time Warping 결과]

 

1. Introduction

1.  많은 양의 데이터가 필요한 이유

 인공 신경망이 보편화 되고, 많은 분야에 걸쳐 최첨단 benchmark를 설정하고 있다. 최근에 인공 신경망이 성공하고 있는 이유는 data의 가용성과 이를 서포트해주는 하드웨어의 성장에 덕분이다. 많은 양의 데이터는 generalization과 많은 machine learning model들의 accuracy를 높여준다.

 하지만 image 영역에서 time series dataset은 비교적 매우 작다. 따라서 현대의 machine learning method들의 잠재력을 많이 사용하기 위해서는 time series classification data가 필요하다.

 

2.  Augmentation이란

 이 문제를 해결하기 위한 한가지 방법이 data augmentation을 사용하는 것이다. Augmentation은 흔한 data-space solution으로, 인조적인 pattern들을 사용해 training dataset을 늘려 machine learning model의 generalization ability를 상승시킨다. 또한 overfitting을 줄이고 model의 decision boundary를 확장시킨다.

 Image를 위한 Data augmentation은 특히 신경망과 결합되어 잘 연구된 분야이며, Image classification 분야에서는 대부분 일반적인 관행이 되었다.

 

3.  Time Series data에서의 augmentation

 확립된 Time series augmentation method들이 상대적으로 적고, 대부분 일반적으로 image recognition의 영향을 받았기다. 때문에 일반적으로 단순한 transformation(jittering, scaling, rotation, etc.)에 의존한 방법들이다. Time series는 image와 다른 property들을 갖기 때문에 이 방법들은 모든 time series에 적용 가능하지 못할 수 있다.

 몇가지 time series의 특정한 data augmentation 방법(magnitude warping, time warping)들이 존재하는 반면, 근본적인 data의 pattern이 있다는 가정하에 여전히 random trainsformations이다.

 

4.  제안

 Augmentation에 기반을 둔 새로운 pattern mixing의 사용을 제한한다. 두 time series 사이의 feature를 맞추기 위해 DTW(Dynamic Time Warping)가 사용된다. 그리고 element-wise alignment 대신 shapeDTW를 사용함으로써 dynamic warping이 더욱 향상될 수 있음을 입증한다.

 

 더 나아가, 어떤 reference time series를 선택하느냐에 대한 의문이 드는데, 최고의 전략이 필연적이지 않다는 것을 보여주고, 선택을 위한 discriminator 사용 방법의 novel method를 제안한다.

 Discriminator에 의해 선택된 reference pattern을 discriminative teacher하 하고, 같은 class의 pattern과 다른 class의 patten 사이의 최대 거리를 가진 bootstrap set 내에서 sample을 찾아 결정한다. 이 논문에서는 작은 batch의 무작위 sample에서 간단한 가장 가까운 centroid classifier를 사용한다.

 

Random teacher 보다는 discriminative teacher 사용하면 quided warping이 classifier를 지원하는 pattern을 고르도록 할 수 있다.

 

 

2. Related Work

1. 

 아래의 방법들은 약간의 변형을 주는 방법으로 다양한 time-series에서 사용된다.

  • jittering : noise addition
  • rotation : flipping (하나의 변수), rotation (다수의 변수)
  • slicing : 자르기
  • permutation : slice 재정렬
  • scaling : magnitude 변화
  • magnitude warping : 원소별로 magnitude 변화
  • frequency warping : 주파수 변형

 

2. Pattern mixing

'신호처리 > Augmentation' 카테고리의 다른 글

Magnitude & Time Warping  (0) 2022.02.23

+ Recent posts