Базовые методы аугментации временных рядов
Введение
За последние годы методы обучения с учителем показали многообещающие результаты в решении проблем, связанных с временными рядами. К таким проблемам относятся, например, прогнозирование, классификация, обнаружение аномалий и восстановление данных. Некоторые недавние успехи нейронных сетей связаны с доступностью большого объема данных. Но его сбор может быть проблемой для временных рядов.
Аугментация данных — это один из способов увеличения их количества. Такая процедура направлена на увеличение обобщающей способности моделей и уменьшение их переобучения (модель не сильно переобучится, то есть она смоделирует суть проблемы и будет хорошо обобщаться на тестовые данные). Давайте знакомиться с базовыми методами аугментации вместе. В статье мы используем слова временной ряд и сигнал как синонимы.
Зашумление
Зашумление представляет собой добавление шума к временным рядам. Эта техника, помимо того, что является одной из простейших форм аугментации данных, считается также одной из самых популярных в области временных рядов. Зашумление предполагает наличие шума в данных. Во многих случаях, например, при работе с сенсорными данными, это действительно так и есть. Если в данных изначально содержится шум, то путем добавления нового шума мы можем сгенерировать новую выборку.
Обычно к каждому шагу временного ряда добавляется гауссовский шум, а среднее значение и стандартное отклонение этого шума определяют амплитуду и форму деформации, поэтому они различны для каждого конкретного применения. Новую выборку, полученную путем зашумления, можно математически описать так:
где \( \epsilon \sim \mathcal{N}(0, \sigma^2) \) обозначает шум, добавленный к каждому шагу временного ряда. Гауссовский шум является наиболее популярным выбором для шума, но также можно использовать более сложные шумы: импульсный, шум со ступенчатым или наклонным трендом. В целом, этот метод самый простой и безопасный, и в любых задачах с временными рядами он может улучшить качество модели.
Масштабирование
Масштабирование — это изменение амплитуды определенного шага временного ряда. Идея заключается в том, чтобы сохранить общую форму сигнала и одновременно изменить его значения. При масштабировании новые сгенерированные данные трансформируют диапазон значений, но сохраняют изначальную форму:
\( x'(\alpha) = \{\alpha x_1, \dots, \alpha x_t, \dots, \alpha x_T \} \)
где \( \alpha > 0 \) — это коэффициент масштабирования. Значение \( \alpha \) может быть выбрано из гауссовского распределения со средним значением 1 и с дисперсией \( \sigma \) — \( \mathcal{N}(1, \sigma^2) \). Данный метод аналогичен resize из компьютерного зрения.
Более продвинутый метод масштабирования — искажение амплитуды (magnitude warping). Он представляет собой применение переменного масштабирования к различным точкам ряда. Для определения мест искажения задается набор узлов \( u = u_1, \dots, u_i \). Эти узлы являются шагами, на которых выполняется масштабирование, и их значения генерируются с помощью нормального распределения. Затем амплитуда масштабирования в точках между узлами определяется кубической сплайновой интерполяцией узлов \( S(x) \). Математически изменение амплитуды можно записать следующим образом:
\( x'(\alpha) = \{\alpha_1 x_1, \dots, \alpha_t x_t,\dots, \alpha_T x_T \} \)
где \( \alpha = \alpha_1,\dots,\alpha_i = S(x) \).
Еще одной техникой масштабирования является временное искажение (time warping). Его идея очень похожа на искажение амплитуды, но здесь мы изменяем данные во временном измерении. То есть вместо изменения амплитуды сигнала на каждом шаге временное искажение растягивает и сжимает сигнал. С помощью такой аугментации мы делаем нашу модель более робастной к дискретизации сигнала.
Методы масштабирования полезны при работе с медицинскими данными, ведь мы все разные, одни и те же симптомы могут быть более или менее явно выражены у разных людей.
Срез временного окна
Срезание, в контексте временных рядов, заключается в обрезке части каждого сигнала для создания нового сигнала. При обрезке исходных данных создается новая выборка, но в отличие от компьютерного зрения (где этот метод называется cropping) тут сложно сохранить все особенности исходных данных. Новую выборку можно описать так:
\( x'(W) = \{x_\phi,\dots,x_t,\dots x_{\phi + W} \} \)
где \( W \) — это окно среза, определяющее размер выборки, а \( \phi \) — начальная точка, с которой выполняется срез. Одним из наиболее существенных недостатков срезания сигнала является возможность получения недопустимых синтетических выборок, а это может привести к отсечению важных признаков сигнала.
Вращение
Вращение может быть применено к многомерным временным рядам путем использования матрицы вращения с определенным углом. В случае одномерных временных рядов вращение выполняется при помощи переворачивания данных. Для многомерных временных рядов новая выборка определяется следующим образом:
\( x'(R) = \{R x_1, \dots, Rx_t, \dots, Rx_T \} \)
где \( R \) — матрица вращения, используемая для аугментации данных. Угол вращения \( \theta \) выбирается случайным образом из нормального распределения. Однако этот алгоритм применяется нечасто, поскольку вращение образца временного ряда может привести к потере информации о классе.
Порой применение вращения ухудшает качество модели. Например, в физических системах вращение меняет вектор гравитации, следовательно, новые данные могут не быть физичными: при гравитации тела будут улетать в космос или рандомно перемещаться, а не падать.
Перестановка
Перестановка перемешивает различные временные срезы сигнала. Основная проблема ее применения заключается в том, что она не сохраняет временные зависимости. Это приводит к созданию недопустимых новых выборок, особенно в задачах регрессии, где последовательность имеет большое значение. Зато методы перестановки могут быть полезны в задачах классификации или детекции аномалий. Математически новая выборка определяется следующим образом:
\( x'(w) = \{x_i,\dots,x_{i+w}, \dots, x_j, \dots, x_{j+w}, \dots, x_k, \dots, x_{k+w} \} \)
где \( i,\ j,\ k \) представляют собой индексы первого среза для каждого окна, так что каждый индекс выбирается ровно один раз, а \( w \) обозначает размер окна. Аналогичный метод иногда используется и в компьютерном зрении (в библиотеке albumentations он реализован как RandomGridShuffle
).
Перестановка каналов
Изменение положения различных каналов многомерных данных является распространенной практикой. В компьютерном зрении популярна мена местами каналов RGB для аугментации данных. Что касается временных рядов, то перестановка здесь может быть применена при сохранении действительности каждого канала данных. Алгоритм для многомерных данных, таких как \( x=\{\{x_{11},\dots,x_{1T}\}, \dots, \{x_{c1},\dots,x_{cT}\} \} \), где \( c \) — количество каналов, задается следующим образом:
\( x=\{\{x_{\sigma(1)1},\dots,x_{\sigma(1)T}\}, \dots, \{x_{\sigma(c)1},\dots,x_{\sigma(c)T}\} \} \)
где \( \sigma: {1,\dots,c } \rightarrow {1,\dots,c} \) — используемая перестановка каналов.
Выводы
Вернемся к тому, что мы часто сталкиваемся с малым объемом качественных данных для обучения моделей при работе с временными рядами. Один из простых способов решения такой проблемы — генерация новых данных при помощи аугментации существующих.
Итак, в этой статье мы познакомили вас с базовыми методами аугментации временных рядов. Многие из них похожи на методы компьютерного зрения, остальные специфичны для временных рядов (например, временное и амплитудное искажения).
Самый простой и безопасный метод аугментации — добавление шума к сигналу. Наверное, поэтому он и самый популярный. На наш взгляд, с другими методами лучше быть более осторожными и прибегать к доменным знаниям. Например, вращение может показаться безопасной аугментацией, но в физических системах оно меняет вектор гравитации. Поэтому новая выборка может ухудшить вашу модель, обучившуюся падению тел при гравитации.
Методы масштабирования могут хорошо работать в медицине, методы перестановки — в задачах классификации, но последние вряд ли улучшат регрессионные модели. В следующей статье мы разберем более продвинутые методы. Они находят некоторую скрытую модель, которая сгенерировала имеющиеся данные, а потом используют эту модель для генерации новых данных. Да-да, сейчас мы говорим о вариационных автоэнкодерах и генеративно-состязательных сетях.
Библиотеки
- Tsaug — питоновская библиотека для аугментации временных рядов.
- tsai — популярная библиотека для работы с временными рядами; имеет модуль для аугментации данных.