Фон
Я працюю над набором даних часових рядів показань лічильника енергії. Тривалість серії варіюється в залежності від метра - для одних у мене кілька років, інших - лише кілька місяців і т. Д. Багато хто демонструє значну сезонність, а часто і багатошаровість - протягом дня, тижня чи року.
Однією з речей, над якими я працював, є групування цих часових рядів. Наразі моя робота є академічною, і, хоча я також роблю інший аналіз даних, у мене є конкретна мета здійснити деяку групування.
Я зробив деяку початкову роботу, де я обчислював різні функції (відсоток, що використовується у вихідні дні проти будня, відсоток, що використовується у різних часових блоках тощо). Потім я перейшов до розгляду використання динамічного викривлення часу (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