Відповідні методи кластеризації тимчасових даних?


13

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

Які підходять методи кластеризації? Якщо моє запитання не містить достатньо інформації для відповіді, які відомості мені потрібно надати для визначення відповідних методів кластеризації?

Нижче наведено ілюстрацію типу даних / кластеризації, які я уявляю: кластеризація впродовж часу


Сюжет для мене виглядає згладженим (інтерпольованим). Це, мабуть, вводить в оману. І "поздовжні" я асоціювався з геоданими, але, мабуть, ви дивитесь часовий ряд?
Мав QUIT - Anonymous-Mousse

1
Не приділяйте занадто багато уваги сюжету, це лише приклад. Чого я хочу досягти, - це виявлення різних епізодів часу на основі змінних, що змінюються в часі. Поздовжній, на мій погляд, такий же, як тимчасові дані, див., Наприклад, en.wikipedia.org/wiki/Longitudinal_study
histelheim

Оскільки в кластеризації ви будете бачити цей термін здебільшого як на en.wikipedia.org/wiki/Longitude - з вашого питання не зрозуміло, що ви хочете кластеризувати. Ви можете кластеризувати, наприклад, інтервали часу, які поводяться однаково в "предметах", або теми, які показують однаковий прогрес у часі.
Має QUIT - Anonymous-Mousse

1
Я змінив "поздовжнє" на "тимчасове", щоб уникнути плутанини. Використовуючи ваші слова, я думаю, я хочу кластеризувати інтервали часу . Однак для мене важливо, щоб кластери були чіткими, безперервними епізодами у часі.
histelheim

Пошуки з ключовими словами "сегментація часових рядів" або "моделі переключення режимів" можуть вам допомогти.
Ів

Відповіді:


6

З мого власного дослідження здається, що Гауссові приховані Маркові моделі можуть бути добре придатними: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#example-plot-hmm-stock-analysis-py

Напевно, здається, знайдеться чіткі епізоди діяльності.

Модель Гаусса прихованого Маркова


Хіба ви не повинні знати, скільки прихованих станів достроково? Чи є спосіб обійти це?
JCWong

@JCWong Я думаю, що ви можете використовувати непараметричний байєсівський варіант (нескінченну приховану модель Маркова), щоб уникнути цього.
jtobin

Після довгого часу: HMM, схоже, не кластеризує / групує події тимчасово (що це виглядає на малюнку). Але що запитують, як отримати тимчасові кластери? Мені просто цікаво, коли я працюю над тимчасовими кластерними речами.
RussellB

3

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

Їх відповідь посилається на хороший підсумок щодо виявлення змін. Для можливих рішень швидкий пошук в Google знайшов пакет Зміни точки аналізу в коді Google. R також має деякі інструменти для цього. bcpПакет досить потужний і дуже проста у використанні. Якщо ви хочете робити це з моменту надходження даних, у документі "Он-лайн виявлення точок зміни та оцінка параметрів із застосуванням до геномних даних" описано дійсно складний підхід, хоча слід попередити, що це злегка складно. Там також є strucchangeпакет, але це працювало менш добре для мене.


1

Хвилянки можуть допомогти вам визначити періоди з різними властивостями. Однак я не впевнений, чи існують методи, які б розділили ваші таймери на дискретні періоди для вас. І, схоже, є багато теорії, яку я маю пройти, і я лише на початку. Я з нетерпінням чекаю інших пропозицій ..

Безкоштовна вступна глава книги про вейвлет.

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


1

Ви бачили цю сторінку: Сторінка класифікації / кластеризації часових рядів UCR ?

Там ви можете знайти і те, і інше: набори даних для практики та опубліковані результати - для порівняння ефективності вашої власної реалізації (є посилання на відомі показники добре відомих методик машинного навчання). Крім того, на цій сторінці посилається на критичну масу робіт, з яких ви могли б продовжувати дослідження з найкращим підходом, який відповідає вашій проблемі, даним або потребам.

Також є ще один спосіб зробити це (можливо), застосувавши послідовник http: // sequitur.info. Якщо ви зможете нормалізувати / наблизити свої дані, це дасть вашій граматиці ті "окремі періоди часу з подібними рівнями активності", перегляньте цей документ і знайдіть інший, тому що я не в змозі додати більше посилань ...


3
Чи можете ви надати короткий підсумок ресурсів, доступних на цій сторінці?
chl

впевнений, що можу. Починаючи звідти, я
зашифрував

1

Я думаю, ви можете використовувати динамічну обертання часу, щоб шукати схожість між різними часовими рядами. Для цього вам може знадобитися дискретизувати свій вейвлет на колекції, як масив. Але деталізація буде проблемою, і якщо у вас є велика кількість часових рядів, вартість обчислення буде досить великою для обчислення відстані DTM для кожної пари з них. Тому вам може знадобитися деякий попередній вибір, щоб працювати як мітки.

Перевірте це . Я також працюю над таким завданням, як ваше, і ця сторінка мені допомогла.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.