Як боротися з часовими рядами, які змінюються сезонністю чи іншими моделями?


22

Фон

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

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

Я зробив деяку початкову роботу, де я обчислював різні функції (відсоток, що використовується у вихідні дні проти будня, відсоток, що використовується у різних часових блоках тощо). Потім я перейшов до розгляду використання динамічного викривлення часу (DTW) для отримання відстані між різними серіями та кластеризації на основі різницьких значень, і я знайшов кілька статей, пов’язаних з цим.

Питання

Чи буде сезонність у певній зміні серій спричинити неправильну групування? І якщо так, то як я з цим поводжусь?

Мене хвилює те, що відстані, отримані DTW, можуть вводити в оману у випадках, коли закономірність у часових рядах змінилася. Це може призвести до неправильної кластеризації.

Якщо вищесказане незрозуміле, розглянемо наступні приклади:

Приклад 1

Лічильник має низькі показники з півночі до 8 ранку, тоді показання різко збільшуються протягом наступної години і залишаються високими від 9:00 до 5:00, потім різко зменшуються протягом наступної години, а потім залишаються низькими від 6:00 до півночі. Лічильник постійно продовжує цю схему щодня протягом декількох місяців, але потім змінюється на схему, коли показання просто залишаються на постійному рівні протягом дня.

Приклад 2

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

Можливі напрямки

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

Подальші примітки

Це речі, які з'явилися в коментарях, або речі, які я придумав завдяки коментарям, які можуть бути актуальними. Я розміщую їх тут, щоб людям не доводилося читати все, щоб отримати відповідну інформацію.

  • Я працюю в Python, але є rpy для тих місць, де R більше підходить. Я не обов'язково шукаю відповідь Python - якщо хтось має практичну відповідь, що робити, я радий сам розібратися в деталях впровадження.
  • У мене багато працюючого "грубої чернетки" коду - я зробив декілька циклів DTW, зробив пару різних типів кластеризації і т. Д. Я думаю, що я багато в чому розумію, в якому напрямку я рухаюся, і що я м дійсно шукаю, пов'язане з тим, як я обробляю свої дані перед тим, як знайти відстані, виконувати кластеризацію тощо. Враховуючи це, я підозрюю, що відповідь була б однаковою, чи розраховуються відстані між серіями через DTW або більш просту евклідову відстань (ED).
  • Я вважаю, що ці статті є особливо інформативними щодо часових рядів та DTW, і вони можуть бути корисними, якщо потрібна інформація про тему: http://www.cs.ucr.edu/~eamonn/selected_publications.htm

+1 Дуже приємне запитання, і це здорово бачити стільки ентузіазму! Я думаю, ви могли б трохи зняти своє запитання, тож більше запросити інших прочитати, а потім дати вам відповідь.
Рубенс

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

Це може бути не питанням "чистої статистики", але він потребує чистої відповіді на статистику. Ви будете боротись, поки не зможете подумати про це в чистому вигляді статистики.
Spacedman

@Spacedman - я вітаю відповіді будь-яким способом, яким люди вважають, що це найкращий спосіб відповісти на нього, із застереженням, що у мене можуть виникнути додаткові запитання, якщо відповідь важка для формул чи посилань на статистичні поняття, яких я ще не розумію.
Джо Дуглас

Джо ти знайшов правильну відповідь на своє запитання? Я в тій же ситуації і мені потрібна допомога. Дякую
LSola

Відповіді:


14

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

Ресурси:


1
Деякі з цих ресурсів я переглядав - наприклад, я впровадив модифіковану версію твору у пунктах 2 та 4 - тому ми, мабуть, зараз на одній і тій же сторінці. І переважна більшість того, що я знаю, ґрунтується на документах Еймонн Кеог або на їх основі. Але є кілька таких, яких я не читав, і цікавий той, що стосується кластеризації часових рядів велосипедів - дякую! Я не бачу нічого, що конкретно відповідає на моє запитання, але зазначаю, чи я щось пропустив, читаючи.
Джо Дуглас

1
Крім того, якщо ви все ще знайдете це цікаве, документи К'ю справді варто прочитати. Вони напрочуд легкі для читання та досить практичні, оскільки зосереджуються на використанні багатьох наборів даних та надають достатньо інформації, щоб хтось міг створити всі експерименти. Цікавою є сама остання версія, і це те, над чим я працював, коли мене перебрали з мого питання. cs.ucr.edu/~eamonn/selected_publications.htm
Джо Дуглас

1
@JoDouglass: Ласкаво просимо! Я не збирався відповідати на ваше запитання безпосередньо (через моє обмежене знання теми), але сподівався, що це буде корисно, що, здається, так і є. Дякую за приємні коментарі та довідку - я перегляну статті та спробую краще зрозуміти. Навчитися так багато, це трохи непосильне.
Олександр Блех

1
Переполох - це правильно, я нахиляв себе на вибір на цю тему на деякий час! Я відчуваю, що потрапляю туди - і мені цікаво було дізнатися про це. У мене є ряд речей, які працюють і виконуються як наближені версії того, що мені потрібно зробити, і я думаю, що це більше про те, щоб з'ясувати, як обробити мої дані, перш ніж запускати їх через мої моделі. Це посилання на частку велосипеда мені цікаво, оскільки це перше, що я бачив, як обговорював усереднення часових рядів, прочитавши недавно згаданий нами документ Кео.
Джо Дуглас

1
@JoDouglass: Коли я сказав «переважне», я мав на увазі всю область науки про дані (включаючи AI / ML та статистику, зокрема). Я ще знайти ресурс , який представляє собою високорівневе обговорення різних підходів і / або методів , як теми , інтегровані в комплексну , але економну , рамку .
Олександр Блех

4

Якщо ви хочете просто видобути сезонний малюнок, тоді погляньте на автокореляцію . Якщо ви шукаєте модель, яка зможе навчитися сезонним моделям і робити прогнози з неї, то Holt-Winters - це хороший старт, і ARIMA було б добре продовжувати. Ось [pdf] - підручник, який звів мене із землі.


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

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

Пропрацюйте цей підручник принаймні до 2,5 і включаючи 2,5. Він використовує R, що особливо добре для вашого академічного середовища. Це навчить вас автокореляції, яка звучить як саме те, що ви шукаєте (не можу сказати, чи не підходило це тому, що ви не знали, що дивитесь, або дані насправді занадто галасливі). Якщо шум є проблемою, експоненціальне згладжування - це один із способів допомогти в цьому, який буде викладений як частина моделі «хот-зим». Навіть якщо все це не дає тобі відповіді, це, безумовно, зробить твій наступний крок зрозумілішим.
TheGrimmScientist

У мене було прочитано підручник, але він здебільшого стосується речей, які я вже знаю. Насправді я працюю в Python, і я трохи надто далеко замикаюся на те, щоб перейти на R, хоча я мав намір схопити rpy в якийсь момент на випадок, якщо якихось речей я не міг знайти в жодній бібліотеці Python. Я переписав своє запитання на випадок, якщо воно допомагає - як я кажу, кластеризація - це сама по собі мета, я не шукаю зовсім іншого напрямку, куди потрібно входити. Боюся, що навчальний посібник не робить ' я справді не відповів на моє запитання.
Джо Дуглас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.