Вопрос или проблема
Я использую DTW из mlpy, чтобы проверить схожесть между временными рядами.
Нужно ли нормализовать ряды перед их обработкой с помощью DTW? Или он в чем-то терпим и я могу использовать ряды как есть?
Все временные ряды хранятся в DataFrame Pandas, каждый в одном столбце. Объем менее 10k точек.
DTW часто использует расстояние между символами, например, расстояние Манхэттена $(d(x, y) = {\displaystyle |x-y|} $). Независимо от того, являются ли символы выборками или признаками, их может потребоваться амплитудная (или хотя бы) нормализация. Нужно ли это? Я бы хотел ответить на такой вопрос во всех случаях. Тем не менее, вы можете найти некоторые подсказки в:
Я рад, что вы спросили 😉
В 99% случаев необходимо z-нормализовать.
Хотите узнать почему? Я написал на эту тему руководство на странице 46
http://www.cs.unm.edu/~mueen/DTW.pdf
Нормализация зависит от схемы шагов – разрешенных переходов и
весов между сопоставленными парами при поиске оптимального пути.
Нормализация затем осуществляется делением расстояния на n, m или n+m
в зависимости от схемы шага и веса наклона [5].
— учитывая, что DTW преодолевает некоторые ограничения более простых мер схожести, таких как евклидово расстояние… Я думаю, ответ на ваш вопрос зависит от библиотеки, которую вы используете – смотрите документацию для вашей выбранной библиотеки и обратите внимание на метрики схожести – некоторые из них все еще являются евклидовой, а некоторые из них определены в другой библиотеке как dtw — только тестирование с фиктивными данными сможет показать необходимость нормализации или ее отсутствие (в зависимости от библиотеки)… Но поскольку все дело в расстоянии, его выбор является определяющим фактором для построения модели, например
Динамическое временное искажение (DTW) является важной метрикой схожести в
анализе временных рядов, особенно когда наборы данных имеют различную
продолжительность или показывают фазовые изменения или временное искажение. DTW, в отличие от
евклидова расстояния, позволяет нелинейное искажение временной оси, чтобы
соответствовать аналогичным паттернам в наборах данных временных рядов.
— похоже, не требует нормализации.
p.s. вы также можете увидеть различия и нюансы алгоритмов
P.P.S. если вы хотите увидеть точное сходство сигналов – используйте некоторые методы свертки, например, как здесь
Ответ или решение
Dynamic Time Warping (DTW) — это мощный инструмент для анализа временных рядов, который позволяет находить схожесть между ними, даже если они имеют различную длину или подвержены временным искажениям. Однако при использовании DTW возникает вопрос о необходимости предварительной нормализации временных рядов.
Нормализация временных рядов перед DTW
-
Для чего нужна нормализация?
Нормализация временных рядов, как правило, необходима для устранения влияния различий в амплитудах данных. DTW, используя метрики расстояния, такие как расстояние Манхэттена или Евклидово расстояние, может быть чувствительным к масштабу временных рядов. Без нормализации, временные ряды с более высокой амплитудой будут оказывать доминирующее влияние на результаты анализа. -
Рекомендуемый подход
В большинстве случаев рекомендуется проводить Z-нормализацию (или стандартное отклонение) временных рядов перед применением DTW. Это позволяет привести данные к единой шкале, где среднее значение равно 0, а стандартное отклонение — 1. Таким образом, различия в амплитуде становятся менее значительными, и DTW может более точно сравнивать схожесть паттернов во временных рядах. -
Подходы к нормализации
- Z-нормализация: ( z = \frac{x – \mu}{\sigma} ), где ( \mu ) — среднее значение, а ( \sigma ) — стандартное отклонение временного ряда.
- Минимально-максимальная нормализация: ( z = \frac{x – \text{min}}{\text{max} – \text{min}} ).
-
Нужна ли нормализация в каждом случае?
Несмотря на то, что нормализация полезна в большинстве случаев, некоторые варианты реализации DTW могут быть более устойчивыми к изменениям амплитуды. Возможно протестировать, как DTW работает без нормализации на ваших данных, чтобы определить, есть ли значительное различие в результатах. -
Выбор библиотеки
Некоторые библиотеки могут иметь разные реализации DTW с различными параметрами, которые могут нормально обрабатывать данные с различной амплитудой. Например, перед использованием DTW из библиотекиmlpy
, стоит ознакомиться с ее документацией и изучить, как она обрабатывает нормализацию и метрики расстояния.
Заключение
В целом, хотя DTW и предоставляет гибкость в обработке временных рядов, предварительная нормализация данных остается важным шагом для достижения надежных и стабильных результатов. Рекомендуется проводить Z-нормализацию, особенно если ваши временные ряды имеют значительные различия в масштабе. Однако стоит проводить эксперименты и тестировать результаты, чтобы понять, требуется ли нормализация для конкретной задачи и структуры ваших данных.