Динамическая Кластеризация Деформации Времени

40

Каков будет подход к использованию динамической деформации времени (DTW) для кластеризации временных рядов?

Я читал о DTW как способ найти сходство между двумя временными рядами, хотя они могут быть сдвинуты во времени. Могу ли я использовать этот метод в качестве меры сходства для алгоритма кластеризации, такого как k-means?

Marko
источник
2
да, вы можете использовать меру сходства в качестве входных данных для k означает кластеризацию и затем определять группы в ваших данных.
синоптик
Спасибо за ваш ответ, сэр. Я предполагаю, что для каждой итерации мне нужно будет сформировать матрицу расстояний для каждой пары (центроид, точка кластеризации) и пересчитать центроиды стандартным способом, как среднее значение всех рядов, которые принадлежат кластеру?
Марко
1
У Александра Блеха в ответе ниже есть пост в блоге, где приводится подробный пример того, как это сделать в R.
прогнозист
2
@forecaster не используйте k-means с DTW. К-среднее минимизирует дисперсию, а не расстояния. Дисперсия является квадратом евклидова, но это не означает, что k-means может оптимизировать другие расстояния. Среднее значение не имеет, и в DTW должно быть довольно легко построить контрпримеры, такие как синусоидальная волна, смещенная на : оба DTW очень похожи, но их среднее значение равно постоянному нулю - очень отличается от обоих. π
Anony-Mousse
1
K-средних не подходит алгоритм для кластеризации временных рядов. Скрытые марковские модели для дискретных, продольных данных являются подходящими. На эту тему опубликовано несколько книг, а также ключевые материалы Одеда Нецера (Колумбия) и Стива Скотта (Google). Другим подходом был бы теоретико-информационный метод, разработанный Андреасом Брандмайером в Максе Планке, называемый кластеризацией распределения перестановок. Он также написал R модуль. Сравнение кластерных решений - это другая проблема. Статья Марины Мейлы «Сравнение кластеров, U of Washington Statistics Tech Report 418» - лучшая.
Майк Хантер

Ответы:

33

Как не использовать K-средства для таймсерий.

DTW не минимизируется средним значением; K-средства могут не сходиться и даже если они сходятся, это не даст очень хороший результат. Среднее - это метод наименьших квадратов по координатам. Он минимизирует дисперсию, а не произвольные расстояния, а k-means предназначен для минимизации дисперсии, а не произвольных расстояний .

Предположим, у вас есть два временных ряда. Две синусоидальные волны, одинаковой частоты и довольно длительного периода дискретизации; но они смещены на . Поскольку DTW выполняет деформацию времени, он может выровнять их так, чтобы они идеально совпадали, за исключением начала и конца. DTW назначит довольно небольшое расстояние этим двум сериям. Однако, если вы вычислите среднее значение двух рядов, это будет плоский 0 - они отменяются. Среднее значение не выполняет динамическую деформацию времени и теряет все значение, полученное DTW. На таких данных k-means может не сойтись , и результаты будут бессмысленными. K-средства действительно должны быть использованы только с дисперсией (= квадрат евклидова), или в некоторых случаях, которые эквивалентны (как косинус, на L2 нормализованы данные, где косинусного подобия являетсяπтак же, как квадрат евклидова расстояния)2-

Вместо этого вычислите матрицу расстояний с использованием DTW, а затем запустите иерархическую кластеризацию, такую ​​как одноканальная. В отличие от k-средних, серия может даже иметь разную длину.

Anony-Мус
источник
4
Ну, конечно, есть PAM (K-medoids), который работает с произвольными расстояниями. Один из многих алгоритмов, которые поддерживают произвольные расстояния, - k-means - нет. Другие варианты: DBSCAN, OPTICS, CLARANS, HAC, ...
Anony-Mousse
1
Вероятно. Поскольку k-medoids использует DTW-medoid для нахождения центра кластера, а не среднее значение L2. Я не знаю ни одной реальной успешной кластеризации временных рядов. Я думаю, что видел документы, но ни один, который действительно использовал результат. Только подтверждение концепции.
Anony-Mousse
1
@ Александр Блех привел это в качестве одного из своих примеров nbviewer.ipython.org/github/alexminnaar/… Что вы думаете об этом?
Марко
1
Проблемы с игрушками. Бесполезно в реальном мире. В реальных данных много шума, что повредит гораздо больше, чем плавные синусоиды и схемы, представленные в этих данных.
Anony-Mousse
1
Я думаю, что иерархическая кластеризация - лучший выбор. Вы не сможете обрабатывать огромное количество серий в любом случае.
Anony-Mousse
49

Да, вы можете использовать подход DTW для классификации и кластеризации временных рядов . Я собрал следующие ресурсы , которые посвящены именно этой теме (недавно я ответил на аналогичный вопрос, но не на этом сайте, поэтому я копирую содержимое здесь для удобства всех):

Александр Блех
источник
3
+1 отличная коллекция статей и блогов. Очень хорошие ссылки.
синоптик
@ Forecaster: Спасибо за отзывчивость и добрые слова! Рад, что вам нравится коллекция. Очень жаль, что в настоящее время у меня нет времени, чтобы более серьезно изучать прогнозирование и многие другие области статистики и данных, но я использую любую возможность, чтобы узнать что-то новое.
Александр Блех
1
@AleksandrBlekh Большое спасибо вам за ваш ответ, я обсуждаю с Anony-Mousse этот подход, так как меня особенно интересует DTW как мера сходства для K-средних, так что я могу получить центроиды в качестве выходных данных. Каково ваше мнение и опыт с этим? Как вы можете видеть, Anony-Mousse привел некоторые аргументы, что результаты могут быть не такими хорошими в этом случае ... Может быть, какой-то личный опыт в практическом вопросе?
Марко
1
Хорошо, еще раз спасибо. У меня +1 от меня, и он получает ответ, поскольку мой вопрос больше ориентирован на k-means и DTW.
Марко
1
@pera: Мое удовольствие. Спасибо за голосование. Полностью понимаю и согласен о принятии, никаких проблем вообще.
Александр Блех
1

Недавний метод DTW Barycenter Averaging (DBA) был предложен Petitjean et al. к среднему временному ряду. В другой статье они эмпирически и теоретически доказали, как это можно использовать для группировки временных рядов с помощью k-средних. Реализация предоставлена ​​на GitHub авторами ( ссылка на код ).

1 F. Petitjean, G. Forestier, GI Webb, AE Nicholson, Y. Chen и E. Keogh, «Динамическое усреднение временных рядов по временным рядам позволяет быстрее и точнее классифицировать их», Международная конференция IEEE 2014 по интеллектуальному анализу данных, Шэньчжэнь, 2014 г. ,

2 F. Petitjean, P. Gançarski, Обобщение набора временных рядов путем усреднения: от последовательности Штейнера до компактного множественного выравнивания, Теоретическая информатика, том 414, выпуск 1, 2012

Хасан ИСМАИЛ ФАВАЗ
источник
2
пожалуйста, предоставьте полные ссылки вместо ссылок. Ссылки могут умереть
Антуан
1

Dynamic Time Warp сравнивает реализованные точки данных, которые могут работать или не работать. Более строгий подход заключается в сравнении распределения временных рядов по метрике, называемой расстоянием до телескопа .

Крутая вещь в этой метрике состоит в том, что эмпирический расчет выполняется путем подбора ряда двоичных классификаторов, таких как SVM.

Для краткого объяснения см. Это .

Для кластеризации временных рядов было показано, что они превосходят DTW; см. таблицу 1 в оригинальной статье [1].

[1] Рябко Д. и Мэри Дж. (2013). Метрика на основе бинарной классификации между распределениями временных рядов и ее использование в статистических задачах и задачах обучения. Журнал исследований машинного обучения, 14 (1), 2837-2856.

horaceT
источник
2
Попытка редактора отмечает: «У Джереми Мэри (соавтор) есть веб-страница, на которой обсуждается алгоритм с реализацией R.
gung - Восстановить Монику
@ Ух ты, отлично! У меня была переписка с первым автором, и он не упомянул об этом.
horaceT
На самом деле я просто переписываю с того, кто пытался отредактировать это в вашем ответе @horaceT. Я не слишком много знаю об этом.
gung - Восстановить Монику
0

Да. Наивный и потенциально медленный подход может быть,

  1. Создайте все комбинации кластеров. k для количества кластеров и n для количества серий. Количество возвращенных предметов должно быть n! / k! / (n-k)!. Это было бы что-то вроде потенциальных центров.
  2. Для каждой серии рассчитайте расстояния с помощью DTW для каждого центра в каждой группе кластеров и назначьте его минимальному значению.
  3. Для каждой группы кластеров рассчитайте общее расстояние внутри отдельных кластеров.
  4. Выберите минимум.

Я использовал это для небольшого проекта. Вот мой репозиторий о кластеризации временных рядов и мой другой ответ по этому поводу.

Доган Аскан
источник