본문 바로가기
2. Data Science Basics/Python

Dynamic Time Warping (DTW)

by Mojito 2022. 3. 2.

Dynamic Time Warping (DTW)란?

  - 시계열 분석에서 DTW는 속도가 다를 수 있는 두 시간 시퀀스 사이의 유사성을 측정하기 위한 알고리즘 중 하나입니다. DTW는 비디오, 오디오 및 그래픽 데이터의 시간적 시퀀스에 적용되었으며 실제로 선형 시퀀스로 변환될 수 있는 모든 데이터는 DTW로 분석할 수 있습니다.

 

 예를들어 아래와 같은 데이터가 있다고 생각해 보겠습니다.

a1 = [7,9,6,9,12,6,4,6,8]
a2 = [1,1,7,9,6,9,12,6,4]
x = [x for x in range(1,10)]

plt.plot(x,a1)
plt.plot(x,a2)
plt.show()

두 데이터는 유사한 패턴을 가지지만 두 데이터의 유사도를 각각의 포인트의 점들로 계산을 한다면 유사도는 그렇게 높게 나오지 않을 것 입니다. (x=5,7 일때 두 포인트가 큰 차이점을 가짐)

만약 위 데이터가 시계열 주식 데이터라고 가정하면 a2의 데이터가 2일 정도의 딜레이(lag) 를 가진다고 볼 수 있습니다.

 

유사한 시계열 데이터를 찾고 있다고 가정하면 위 데이터와 같이 유사한 데이터를 가졌지만 그 데이터가 전이나 후로 shift를 가지고 있는 경우에도 유사성을 측정할 수 있게 도와주는 알고리즘이 Dynamic Time Warping (DTW) 입니다.

https://en.wikipedia.org/wiki/Dynamic_time_warping#/media/File:Dynamic_time_warping.png

 

알고리즘은 인터넷에서도 쉽게 찾을 수 있어서 페이지를 인용하는 걸로 대신 하겠습니다

https://medium.com/walmartglobaltech/time-series-similarity-using-dynamic-time-warping-explained-9d09119e48ec

 

Time Series Similarity Using Dynamic Time Warping -Explained

Find out why DTW is a very useful technique to compare two or more time series signals and add it to your time series analysis toolbox!!

medium.com

 

간단히 설명을 드리자면 a1, a2를 매트릭스로 반환 후 각 value 들의 차이값 뿐만 아니라 전 데이터들도 살펴보면서 데이터가 time shift 된 경우 더 작은 차이값을 찾아가는 과정을 알고리즘으로 나타낸 것입니다. 자세한 설명은 유튜브등을 참고하시면 좋을것 같습니다.

 

다음글은 DTW를 이용하여 비슷한 시계열 데이터를 찾아보는 코드를 만들어 보겠습니다.

반응형

댓글