본문 바로가기
딥러닝 with Python

[개념정리] ROCKET(RandOm Convolutional KErnel Transform) (시계열 특징 추출 / 시계열 분류) (1/2)

by CodeCrafter 2024. 10. 13.
반응형

[해당 포스팅은 "ROCKET: exceptionally fast and accurate time series classification using random convolutional kernels"(Dempster et al. 2020) 논문을 참조했습니다] 

 

이번에 알아볼 내용은 시계열 데이터에서 시계열적 특징을 다양하게 추출하여 분류에 활용하는 방법론 중 하나인 ROCKET(RandOm Convoltuional KErnel Transform)에 대해서 알아보겠습니다.

 

이 방법론은  "ROCKET: exceptionally fast and accurate time series classification using random convolutional kernels"(Dempster et al. 2020)  에서 제안한 방법론으로, 시계열에서 매우 효율적인 특징을 추출하여 분류 문제에 활용하는 모델입니다.

 

1. ROCKET의 주요 개념

1) Random Convolution

- ROCKET의 핵심 아이디어는 랜덤하게 생성된 Convoltuional kernel을 활용한다는 것입니다. 이때, 커널의 크기(Kernel size), 패딩(Padding), 스트라이드(Stride), 확장률(Dilation), 가중치(Weights), 바이어스(Bias)가 모두 랜덤하게 도출되는 Convolutional kernel을 생성한다는게 특징입니다.

 

- 이와 같은 컨볼루션 커널을 랜덤하게 많이 생성하여 계산값이 도출되고, 도출된 많은 결과들 중 Max Pooling(최대값 도출)와 PPV(양수비율, Proportion of positive values) 이 단 2개만을 한 개의 Sample에서 도출하는 것입니다.

 

- 예시를 들어 알아보면, 

 

- 아래와 같이 X라는 1차원의 시계열 데이터가 있다고 해보겠습니다.

 

- 이때 무작위 하게 아래와 같은 Convolutional Kernel1이 도출되었다고 해보겠습니다. 이때 커널 크기는 3, 패딩은 0, 스트라이드는 1, 확장률은 1이라고 해보겠습니다. 

 

- 이를 X에 적용하면 아래와 같은 결과물들이 도출되게 됩니다.

 

- ROCKET은 위 결과물을 그대로 사용하는 것이 아닌 이 중 최대 값과 PPV를 활용하게되며 

  MAX Pooling : 20     과    PPV : 0.75(6/8) 이라는 두 값만을 최종 결과물로 활용하는 것입니다. 

 

- 이와 같은 커널을 1,000개 사용하면 2,000개의 값이 도출되는거고, 10,000개 사용하면 20,000개의 값이 도출되는 것입니다. 

 

 

2) 간결한 특징 표현

 

- ROCKET은 대량의 랜덤 커널을 사용해 시계열 데이터를 매우 고차원의 특징 공간으로 변환하지만, 최종 출력은 매우 간결한 Max Pooling 값과 PPV 값이기에, 고차원의 특징을 효율적으로 계산할 수 있게 됩니다.

 

 

3) 고차원 특징 벡터

 

- ROCKET을 통해 생성된 특징 벡터는 전통적인 머신러닝 모델인 Ridge Classifier 또는 SVM 등과 연계되어 분류를 하며, 신경망 모델들과도 연계되어 활용되기도 합니다.

 



ROCKET의 학습 Pipe line은 아래 그림을 통해 설명할 수 있습니다. 

 

[출처 : " Bake off redux: a review and experimental evaluation of recent time series classification algorithms "(Middlehurst et al. 2024)

 

즉, 1차원의 시계열 데이터가 입력으로 들어오게 되면,

랜덤한 n개의 convolutional kernels를 만들어내고,

이를 통한 연산과정을 통해 MAX와 PPV를 도출하여 연결(Concatenate)하고 

분류기(ex. Ridge Classifer)를 통해 분류하여 결과를 도출하는 것입니다.

 

 

이와 같은 ROCKET의 장점을 요약하면 아래와 같습니다.

 

1) 효율성 : 랜덤하게 생성된 커널을 사용해 빠르게 계산할 수 있으며, 이는 딥러닝 기반 방법들보다 더 적은 Computational cost르르 요구하여 효율적인 계산이 됩니다.

 

2) 성능 : 그럼에도 불구하고, 성능이 좋았다는 것이 특징이 되겠으며, 당시 딥러닝 기반의 SOTA 모델이었던 Inception Time보다 UCR 데이터셋에서 더 좋은 분류성능을 보일 수 있었습니다.

 

3) 확장성 : 커널의 수를 늘리거나 다른 종류의 통계량을 추가하는 방식으로 더 많은 정보들을 도출할 수 있으며, 이를 통해 MiniROCKET, MultiROCKET과 같은 변형 모델들이 소개되어 효율성과 성능을 높일 수 있었습니다.

반응형

댓글