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) 입니다.
알고리즘은 인터넷에서도 쉽게 찾을 수 있어서 페이지를 인용하는 걸로 대신 하겠습니다
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를 이용하여 비슷한 시계열 데이터를 찾아보는 코드를 만들어 보겠습니다.
'2. Data Science Basics > Python' 카테고리의 다른 글
[논문분석] 머신러닝에서 유의미한 Feature 쉽게 구분해내기 (0) | 2022.05.30 |
---|---|
Dynamic Time Warping을 이용하여 비슷한 주식 clustering 하기 (1) | 2022.03.03 |
Python 을 이용하여 MDD / Sharp Ratio 구하기 (0) | 2022.01.03 |
Data Science 인터뷰 질문 및 답변 (작성중) (0) | 2022.01.03 |
Reddit에서 코인뉴스 API로 크롤링하기 (0) | 2021.12.28 |
댓글