Русская Википедия:Алгоритм динамической трансформации временной шкалы
Шаблон:Грубый перевод Алгоритм динамической трансформации временно́й шкалы (DTW-алгоритм, от Шаблон:Lang-en) — алгоритм, позволяющий найти оптимальное соответствие между временными последовательностями. Впервые применен в распознавании речи, где использован для определения того, как два речевых сигнала представляют одну и ту же исходную произнесённую фразу. Впоследствии были найдены применения и в других областях[1].
Временные ряды — широко распространенный тип данныхШаблон:Уточнить, встречающийся, фактически, в любой научной области, и сравнение двух последовательностей является стандартной задачей. Для вычисления отклонения бывает достаточно простого измерения расстояния между компонентами двух последовательностей (евклидово расстояние). Однако часто две последовательности имеют приблизительно одинаковые общие формы, но эти формы не выровнены по оси X. Чтобы определить подобие между такими последовательностями, мы должны «деформировать» ось времени одной (или обеих) последовательности, чтобы достигнуть лучшего выравнивания.[2]
Алгоритм
Измерение расстояния между двумя временными рядами нужно для того, чтобы определить их подобие и классификацию. Таким эффективным измерением является евклидова метрика. Для двух временных последовательностей это просто сумма квадратов расстояний от каждой n-ой точки одной последовательности до n-ой точки другой. Однако использование евклидова расстояния имеет существенный недостаток: если два временных ряда одинаковы, но один из них незначительно смещен во времени (вдоль оси времени), то евклидова метрика может посчитать, что ряды отличаются друг от друга. DTW-алгоритм был введён для того, чтобы преодолеть этот недостаток и предоставить наглядное измерение расстояния между рядами, не обращая внимание как на глобальные, так и на локальные сдвиги на временной шкале.[3]
Классический алгоритм
Рассмотрим два временных ряда — <math>Q</math> длины <math>n</math> и <math>C</math> длины <math>m</math>[4]:
- <math>
Q = q_{1}, q_{2},\ldots, q_{i}, \ldots, q_{n}; \qquad \qquad (1)</math>
- <math>
C = c_{1}, c_{2},\ldots, c_{j}, \ldots, c_{m}. \qquad \qquad (2)</math>
Первый этап алгоритма состоит в следующем. Мы строим матрицу <math>d</math> порядка <math>n\times m</math> (матрицу расстояний), в которой элемент <math>d_{i\;j}</math> есть расстояние <math>d(q_{i},c_{j})</math> между двумя точками <math>q_{i}</math> и <math>c_{j}</math>. Обычно используется евклидово расстояние: <math>d(q_{i},c_{j}) = (q_i - c_j)^2 \quad </math>, или <math>d(q_{i},c_{j}) = |q_i - c_j|</math>. Каждый элемент <math>(i, j)</math> матрицы соответствует выравниванию между точками <math>q_{i}</math> и <math>c_{j}</math>.
На втором этапе строим матрицу трансформаций (деформаций)<math>D</math>, каждый элемент которой вычисляется исходя из следующего соотношения:
- <math>
D_{i\;j} = d_{i\;j} + min({D_{i-1\;j},D_{i-1\;j-1},D_{i\;j-1}}). \qquad (3)</math>
После заполнения матрицы трансформации, мы переходим к заключительному этапу, который заключается в том, чтобы построить некоторый оптимальный путь трансформации (деформации) и DTW расстояние (стоимость пути).
Путь трансформации <math>W</math> — это набор смежных элементов матрицы, который устанавливает соответствие между <math>Q</math> и <math>C</math>. Он представляет собой путь, который минимизирует общее расстояние между <math>Q</math> и <math>C</math>. <math>k</math>-ый элемент пути <math>W</math> определяется как <math>w_{k} = (i,j)_{k}, \quad d(w_{k}) = d(q_{i},c_{j}) = (q_i - c_j)^2</math>.
Таким образом:
- <math>
W = w_{1}, w_{2},\ldots, w_{k}, \ldots, w_{K}; \qquad max(m,n)\leqslant K < m+n,</math> где <math>K</math> — длина пути.
Путь трансформации должен удовлетворять следующим ограничивающим условиям:
- Граничные условия: начало пути <math>w_{1} = (1,1)</math>, его конец — <math>w_{K} = (n,m)</math>. Это ограничение гарантирует, что путь трансформации содержит все точки обоих временных рядов.
- Непрерывность (условие на длину шага): любые два смежных элемента пути <math>W</math>, <math>w_{k} = (w_{i},w_{j})</math> и <math>w_{k+1} = (w_{i+1},w_{j+1})</math>, удовлетворяют следующим неравенствам: <math>w_{i} - w_{i+1} \leqslant 1</math>, <math>w_{j} - w_{j+1} \leqslant 1</math>. Это ограничение гарантирует, что путь трансформации передвигается на один шаг за один раз. То есть оба индекса <math>i</math> и <math>j</math> могут увеличиться только на 1 на каждом шаге пути.
- Монотонность: любые два смежных элемента пути <math>W</math>, <math>w_{k} = (w_{i},w_{j})</math> и <math>w_{k-1} = (w_{i-1},w_{j-1})</math>, удовлетворяют следующим неравенствам: <math>w_{i} - w_{i-1} \geqslant 0</math>, <math>w_{j} - w_{j-1} \geqslant 0</math>. Это ограничение гарантирует, что путь трансформации не будет возвращаться назад к пройденной точке. То есть оба индекса <math>i</math> и <math>j</math> либо остаются неизменными, либо увеличиваются (но никогда не уменьшаются).
Хотя существует большое количество путей трансформации, удовлетворяющих всем вышеуказанным условиям, однако нас интересуют только тот путь, который минимизирует DTW расстояние (стоимость пути).
DTW расстояние (стоимость пути) между двумя последовательностями рассчитывается на основе оптимального пути трансформации с помощью формулы:
- <math> DTW(Q,C) = min\left\{\frac {\sum\limits^{K}_{k=1} {d(w_{k})}} {K}\right\}. \qquad (4)</math>
<math>K</math> в знаменателе используется для учёта того, что пути трансформации могут быть различной длины.
Пространственная и временная сложность алгоритма — квадратичная, <math>O(nm)</math>, так как DTW алгоритм должен изучить каждую клетку матрицы трансформации.
Недостатки алгоритма
Хотя алгоритм успешно используется во многих областях, он может выдавать неправильные результаты. Алгоритм может попытаться объяснить непостоянство оси <math>y</math> с помощью трансформации оси <math>x</math>. Это может привести к выравниванию, при котором одной точке первой последовательности ставится в соответствие большая подгруппа точек второй последовательности.
Другая проблема заключается в том, что алгоритм может не найти очевидное выравнивание двух рядов вследствие того, что особая точка (пик, впадина, плато, точка перегиба) одного ряда расположена немного выше или ниже соответствующей ей особой точки другого ряда[5].
Разновидности DTW алгоритма
Различные доработки DTW алгоритма предназначены для ускорения его вычислений, а также для того, чтобы лучше контролировать возможные маршруты путей трансформации.
Общие (глобальные) ограничения
Один из распространенных вариантов DTW алгоритма — наложение общих (глобальных) ограничивающих условий на допустимые пути деформации[6]. Пусть <math> R \subseteq [1 : n] \times [1 : m] </math> — подмножество, задающее область глобального ограничения. Теперь путём трансформации является путь, который содержится в области <math>R</math>. Оптимальный путь трансформации — путь, принадлежащий <math>R</math>, и минимизирующий стоимость пути среди всех путей трансформации из <math>R</math>.
Быстрый DTW-алгоритм
Этот алгоритм обладает линейной пространственной и временной сложностью. Быстрый DTW алгоритм использует многоуровневый подход с тремя ключевыми операциями[7]:
- Уменьшение детализации — уменьшаем размер временного ряда с помощью усреднения смежных пар точек. Полученный временной ряд — это ряд, имеющий в два раза меньше точек, чем исходный. Мы проводим эту операцию несколько раз, чтобы получить много различных разрешений временного ряда.
- Планирование — берем путь трансформации при низкой детализации и определяем через какие клетки будет проходить путь трансформации при следующей детализации (на порядок выше предыдущей). Так как разрешение увеличивается в два раза, одной точке, принадлежащей пути трансформации в низком разрешении, будут соответствовать, по крайней мере, четыре точки в большем разрешении. Затем этот планируемый путь используется в качестве эвристического правила в процессе обработки, чтобы найти путь в высоком разрешении.
- Обработка — поиск оптимального пути деформации в окрестности спланированного пути.
Разреженный DTW-алгоритм
Основная идея данного метода состоит в том, чтобы динамически использовать наличие подобия и/или сопоставления данных для двух временных последовательностей. Данный алгоритм имеет три особых преимущества[8]:
- Матрица трансформации представляется с помощью разреженных матриц, что приводит к уменьшению средней пространственной сложности по сравнению с другими методами.
- Разреженный DTW алгоритм всегда выдает оптимальный путь трансформации.
- Так как алгоритм выдает оптимальное выравнивание, то он может быть легко использован в сочетании с другими методами.
Области применения
- распознавание речи
- интеллектуальный анализ данных
- распознавание жестов
- робототехника
- медицина
- биоинформатика
- верификация подписи
Примечания
- ↑ Ghazi Al-Naymat, Sanjay Chawla, Javid Taheri Sparse DTW: A novel approach to speed up Dynamic Time Warping Шаблон:Wayback Шаблон:Ref-en
- ↑ Eamonn J. Keogh, Michael J. Pazzani Derivative Dynamic Time Warping, Section 1 Шаблон:Wayback Шаблон:Ref-en
- ↑ Stan Salvador and Philip Chan Fast DTW: Toward Accurate Dynamic Time Warping in Linear Time and Space Шаблон:Wayback Шаблон:Ref-en
- ↑ Eamonn J. Keogh, Michael J. Pazzani Derivative Dynamic Time Warping, Section 2 Шаблон:Wayback Шаблон:Ref-en
- ↑ Eamonn J. Keogh, Michael J. Pazzani Derivative Dynamic Time Warping, Section 1, page 2 Шаблон:Webarchive Шаблон:Ref-en
- ↑ DTW Algorithm Review. Section 3.3 Шаблон:Wayback Шаблон:Ref-en
- ↑ Stan Salvador and Philip ChanFast DTW: Toward Accurate Dynamic Time Warping in Linear Time and Space Шаблон:Wayback Шаблон:Ref-en
- ↑ Ghazi Al-Naymat, Sanjay Chawla, Javid Taheri Sparse DTW: A novel approach to speed up, Section 1.1 Шаблон:Wayback Шаблон:Ref-en