Подходящие методы кластеризации для временных данных?

13

У меня есть временные данные частот активности. Я хочу идентифицировать кластеры в данных, которые указывают различные периоды времени с подобными уровнями активности. В идеале я хочу идентифицировать кластеры без указания количества кластеров априори.

Каковы подходящие методы кластеризации? Если в моем вопросе недостаточно информации, чтобы ответить, какую информацию мне нужно предоставить для определения подходящих методов кластеризации?

Ниже приведена иллюстрация типа данных / кластеризации, которые я себе представляю: кластеризация во времени

histelheim
источник
Сюжет выглядит сглаженным (интерполированным) для меня. Это, вероятно, вводит в заблуждение. А «продольные» у меня связаны с геоданными, но, видимо, вы смотрите на временные ряды?
ВЫЙТИ - Anony-Mousse
1
Не обращайте слишком много внимания на сюжет, это всего лишь пример. Чего я хочу добиться, так это выявления отдельных эпизодов времени на основе переменных, которые меняются во времени. По моему мнению, продольные значения совпадают с временными данными, см., Например, en.wikipedia.org/wiki/Longtial_study
histelheim,
Потому что в кластеризации вы увидите этот термин в основном как в en.wikipedia.org/wiki/Longitude - из вашего вопроса не ясно, что вы хотите кластеризовать. Вы можете кластеризовать, например, интервалы времени, которые ведут себя одинаково по «предметам», или предметам, которые показывают одинаковый прогресс во времени.
ВЫЙТИ - Anony-Mousse
1
Я изменил «продольный» на «временный», чтобы избежать путаницы. Используя ваши слова, я думаю, что я хочу объединить интервалы времени . Тем не менее, для меня важно, чтобы кластеры представляли собой отдельные непрерывные эпизоды во времени.
histelheim
Поиск по ключевым словам "сегментация временных рядов" или "модели переключения режимов" может вам помочь.
Ив

Ответы:

6

Из моего собственного исследования, кажется , что Gaussian Hidden марковские модели могут быть хорошо подходит: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#example-plot-hmm-stock-analysis-py

Это определенно, кажется, находит отличные эпизоды деятельности.

Гауссовская скрытая марковская модель

histelheim
источник
Разве вы не должны знать, сколько скрытых состояний существует раньше времени? Есть ли способ обойти это?
JCWong
@JCWong Я думаю, что вы можете использовать непараметрический байесовский вариант (бесконечная скрытая марковская модель), чтобы избежать этого.
2012 г.
Однако после долгого времени: HMM, похоже, не группирует / группирует события во времени (как это выглядит на рисунке). Но что спросили, как получить временные кластеры? Мне просто любопытно, так как я работаю над временными кластеризациями.
RussellB
3

Ваша проблема звучит похоже на ту, на которую я смотрю, и на этот вопрос, который похож, но менее объяснен.

Их ответ ссылается на хорошее резюме по обнаружению изменений. Для поиска возможных решений быстрый поиск в Google нашел пакет анализа точек изменения в коде Google. R также имеет несколько инструментов для этого. bcpПакет довольно мощный и очень проста в использовании. Если вы хотите сделать это на лету, когда поступают данные, в документе «Обнаружение точек изменения в режиме онлайн и оценка параметров с применением к геномным данным» описан действительно сложный подход, хотя и следует помнить, что он немного сложен. Есть также strucchangeпакет, но это сработало менее хорошо для меня.

fozziethebeat
источник
1

Вейвлеты могут помочь вам определить периоды с различными свойствами. Однако я не уверен, существуют ли методы, которые делят ваши временные ряды на отдельные периоды для вас. И кажется, что есть много теории, чтобы пройтись, что я только в начале. Я с нетерпением жду чтения других предложений ..

Бесплатный вводный раздел книги о вейвлетах.

Пакет R для тестирования значимости с помощью вейвлетов.

sfuj
источник
1

Вы видели эту страницу: Страница классификации временных рядов UCR ?

Там вы можете найти и наборы данных для практических занятий, и опубликованные результаты - для сравнения производительности вашей собственной реализации (есть ссылка на известную производительность хорошо известных методов машинного обучения). Кроме того, на этой странице приводится критическая масса статей, из которых вы можете продолжить исследования, чтобы найти наилучший подход, который соответствует вашей проблеме, данным или потребностям.

Кроме того, есть другой способ сделать это (потенциально) путем применения sequitur http: // sequitur.info. Если вы сможете хорошо нормализовать / аппроксимировать свои данные, это даст вашей грамматике те «разные периоды времени с одинаковыми уровнями активности», посмотрите эту статью и найдите другую, потому что я не могу добавить больше ссылок ...

seninp
источник
3
Не могли бы вы дать краткое описание ресурсов, доступных на этой странице?
chl
конечно я могу.
Исходя
1

Я думаю, что вы можете использовать Dynamic Time Wrapping для поиска сходства между различными временными рядами. Для этого вам, возможно, потребуется дискретизировать ваш вейвлет в коллекции, например, в массив. Но детализация была бы проблемой, и если у вас есть большое количество временных рядов, стоимость вычислений будет довольно большой для расчета расстояния DTM для каждой их пары. Таким образом, вам может понадобиться предварительный выбор для работы в качестве меток.

Проверьте это . Я также работаю над некоторыми задачами, такими как ваша, и эта страница мне помогла.

Ифань Го
источник