Данные временных рядов - одна из наиболее естественных форм данных. От использования Интернета до смарт-браслетов, от данных о погоде до фондового рынка - все подпадает под действие временных рядов. В этом блоге мы не будем говорить о LSTM и других методах на основе DL для прогнозирования или классификации. В этом блоге рассказывается, как мы обрабатываем данные временных рядов с использованием различных методологий.

СИМВОЛИЧЕСКАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ

Учитывая временной ряд S = (s_1, s_2,…., S_n), мы разделяем окно на несколько окон и затем присваиваем каждому окну алфавит.

Сначала мы нормализуем данные, затем применяем аппроксимацию агрегированного числа (PAA). Разделите эту серию на n / w окон. Вычислите среднее значение в каждом окне и замените каждое наблюдаемое значение в окне средним. Назначьте символ на основе диапазонов значений PAA. Преобразуйте представление PAA в строку. Но зачем мы это делаем? Использование этого метода значительно упрощает наш анализ по сравнению с подачей необработанных данных. Такие данные могут интерпретировать даже люди. Мы легко можем узнать, насколько две последовательности отличаются друг от друга. Это также можно использовать для классификации похожих типов последовательностей, это также может помочь нам в кластеризации последовательностей. Другие приложения включают обнаружение аномалий.

ДИНАМИЧЕСКОЕ ИЗМЕНЕНИЕ ВРЕМЕНИ

PAA - очень интересный метод, но будут случаи, когда преобразование этих данных в последовательность строк не имеет смысла. Допустим, нам нужно найти разницу между двумя дистрибутивами, как вы это делаете? Вычисление евклидова расстояния для каждой точки может оказаться не такой уж хорошей идеей. На приведенной ниже диаграмме показано, как Dynamic time-warp смотрит на объекты локально и отображает объекты из одной серии в другую в зависимости от местоположения объектов. Желоб отображается на желоб, а долина - на другую долину. Но зачем мы это делаем? Если мы просто вычислим евклидово расстояние между двумя точками, то 2 последовательности, которые являются просто сдвинутой версией друг друга, дадут огромное значение расстояния, поэтому использование динамического деформирования времени идеально, поскольку оно может легко обрабатывать сдвинутый масштаб и вычислять правильную разницу между двумя дистрибутивами или сериалами.

Прежде чем мы углубимся в DTW, давайте закончим с несколькими ограничениями, которые у него есть, они должны соответствовать началу и концу последовательности. Это не может вернуться во времени. Оно должно быть сплошным (без зазоров) и искажать окно | i-j | ‹= Ш.

Ниже приводится псевдокод алгоритма DTW. Это довольно простой алгоритм, который я объясню на примере.

Мы помещаем две серии, как показано на диаграмме ниже, вычисляем расстояние между двумя точками, например, здесь мы вычисляем расстояние между 17 и 15, которое равно 2, затем добавляем наименьшее значение из min (D [i-1, j -1], D [i-1, j], D [I, j-1]) и продолжайте заполнять таблицу. В нашем случае из 1, 5 и 6, 1 является наименьшим, поэтому мы добавим его к 17–15, что даст нам в сумме 3.

Наконец, после заполнения всей таблицы, мы рисуем путь от нижнего правого края таблицы до верхнего левого угла таким образом, чтобы он шел по пути наименьшего значения. Этот путь сообщает нам, какая точка серии к какой сопоставлена. Например, мы видим, что 8,10 и связаны с 7

Для DTW с окнами фиксированного размера мы просто ограничиваем ячейки, которые можно заполнить, при вычислении расстояния между двумя сериями.

НАИБОЛЕЕ ОБЩЕЕ ПОСЛЕДОВАТЕЛЬНОСТЬ (LCSS)

DTW не идеален, он страдает от сопоставления каждой точки из одной последовательности с другой последовательностью, поэтому в случае данных с шумом он может исказить отображение. Чтобы решить эту проблему, у нас есть так называемая самая длинная общая подпоследовательность (LCSS). Он пытается игнорировать шум и не сопоставляет его с другой последовательностью.

Как мы рассчитываем LCSS, давайте посмотрим на розовую рамку на диаграмме ниже и отметим ее как D (i, j)? Здесь у нас есть A на обеих осях X и Y, это означает, что у нас есть общий множитель 1, добавляемый к нему, max (D (i-1, j), D (i, j-1)). Заполните эту матрицу полностью, самая правая нижняя ячейка (в нашем случае D (6,5)) даст вам стоимость между двумя временными рядами.

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

СЧАСТЛИВОГО УЧЕНИЯ…