Преобразование одномерного временного ряда в двумерное изображение

математика

Оригинальный адрес:Encoding Time Series as Images

В то время как глубокое обучение в настоящее время хорошо развито для компьютерного зрения и распознавания речи, построение прогностических моделей затруднено, когда речь идет о временных рядах. Причины включают в себя то, что рекуррентную нейронную сеть трудно обучать, некоторые исследования трудно применять, а также нет существующей и обучающей сети, а 1D-CNN неудобна.

Но если вы используетеGramian Angular Field(GAF), который может преобразовывать временные ряды в изображения, в полной мере используя преимущества современного машинного зрения.

Эта статья будет включать в себя следующее:

  • Предварительные математические знания;
  • Почему матрица Грама может построить хорошее двумерное представление для одномерных временных рядов;
  • Почему скалярный продукт грамм-матрицы не может представлять данные CNN?
  • Какова операция по подготовке структуры матрицы Грамма для CNN;

Также включает код Python:

  • инструменты NumPy для расчетов GAF;

Анимация ниже показывает полярное кодирование данных, а затем выполнение операции, подобной матрице Грама, над результирующими углами:

1. Предварительные математические знания

Математический подход к GAF и внутреннему продукту тесно связан с соответствующей матрицей Грама.

1.1 Скалярный продукт

Внутренний продукт — это операция между двумя векторами для измерения их «подобия». позволяет использовать традиционныеEuclidian GeometryПонятие о: длине, угле, ортогональности второго и третьего измерений.

В двумерном пространстве два вектораuuиvvВнутренний продукт между ними определяется как:

u,v=u1v1+u2v2\langle u,v\rangle=u_1 \cdot v_1+u_2 \cdot v_2

или:

u,v=uvcos(θ)\langle u,v\rangle=\|u\|\cdot \|v\|\cdot\cos{(\theta)}

еслиuuиvв​с нормой 1 получаем:

u,v=cos(θ)\langle u,v\rangle=cos{(\theta)}

Поэтому, если иметь дело сединичный вектор,ИхВнутренний продукт определяется только углом θ\theta Решил, этот угол может быть выражен в радианах. Расчетное значение будет в [-1,1]. Запомните эти теоремы, которые будут использоваться в других местах этой статьи.

Уведомление: В евклидовых множествах (n-мерных) формальное определение скалярного произведения двух векторов:

u,v=i=1nuivi\langle u,v\rangle=\sum_{i=1}^{n}u_i\cdot v_i

1.2 Матрица Грамма

В линейной алгебре и геометрии матрица Грама является полезным инструментом, который часто используется для вычисления линейной корреляции набора векторов.

определение: Матрица Грама набора из n векторов — это матрица, определяемая скалярным произведением каждой пары векторов. Математически это можно объяснить так:

G=(u1,v1u1,v2u1,vnu2,v1u2,v2u2,vnun,v1un,v2un,vn)G=\begin{pmatrix} \langle u_1,v_1\rangle & \langle u_1,v_2\rangle & \cdots & \langle u_1,v_n\rangle \\ \langle u_2,v_1\rangle & \langle u_2,v_2\rangle & \cdots & \langle u_2,v_n\rangle \\ \vdots & \vdots & \ddots & \vdots \\ \langle u_n,v_1\rangle & \langle u_n,v_2\rangle & \cdots & \langle u_n,v_n\rangle \\ \end{pmatrix}

Опять же, предполагая, что все двумерные векторы являются единичными векторами, мы получаем:

G=(cos(ϕ1,1)cos(ϕ1,2)cos(ϕ1,n)cos(ϕ2,1)cos(ϕ2,2)cos(ϕ2,n)cos(ϕn,1)cos(ϕn,2)cos(ϕn,n))G=\begin{pmatrix} \cos{(\phi_{1,1})} & \cos{(\phi_{1,2})} & \cdots & \cos{(\phi_{1,n})} \\ \cos{(\phi_{2,1})} & \cos{(\phi_{2,2})} & \cdots & \cos{(\phi_{2,n})} \\ \vdots & \vdots & \ddots & \vdots \\ \cos{(\phi_{n,1})} & \cos{(\phi_{n,2})} & \cdots & \cos{(\phi_{n,n})} \\ \end{pmatrix}

вΦ(i,j)\Phi(i,j)угол между двумя векторами.

ключевые выводы: Зачем использовать матрицу Грама?

Матрица Грама сохраняет временные зависимости. Поскольку время увеличивается по мере того, как позиция перемещается из верхнего левого угла в нижний правый, измерение времени закодировано в геометрии матрицы.

Примечание: одномерные временные ряды не могут в какой-то степени объяснить совпадение и скрытое состояние данных; наша цель должна состоять в том, чтобы найти альтернативные и более богатые представления.

2. Реализация

Предположим, есть временной рядX=x1,,xnX={x_1,\cdots,x_n}:

2.1 Масштабирование

Используйте масштабатор Min-Max, ограниченный [-1,1], чтобы масштабировать временной ряд до [-1,1], причина этого в том, что внутренний продукт не является наибольшим наблюдением, предвзятым к значению.

В этом случае использованияСтандартный скейлерне является подходящим кандидатом, так как его выходной диапазон и результирующий внутренний продукт могут превышать [-1,1].

Однако в сочетании с мин-макс скейлером внутренний продукт сохраняет выходной диапазон:

,:[1,1]×[1,1][1,1](x,y)xy\langle\cdot,\cdot\rangle:[-1,1]\times[-1,1]\rightarrow[-1,1] \\ (x,y)\rightarrow x\cdot y

Выбор скалярного произведения в [-1,1] не безобиден. Если нет необходимости, рекомендуется использовать [-1,1] в качестве диапазона ввода.

2.2 Шумовые изображения

После масштабирования временного ряда мы вычисляем скалярное произведение каждой пары и помещаем их в матрицу Грама:

G=(x1x1x1x2x1xnx2x1x2x2x2xnxnx1xnx2xnxn)G=\begin{pmatrix} x_1\cdot x_1 & x_1\cdot x_2 & \cdots & x_1\cdot x_n \\ x_2\cdot x_1 & x_2\cdot x_2 & \cdots & x_2\cdot x_n \\ \vdots & \vdots & \ddots & \vdots \\ x_n\cdot x_1 & x_n\cdot x_2 & \cdots & x_n\cdot x_n \\ \end{pmatrix}

Давайте взглянем на значение G и взглянем на эту картинку:

можно увидеть:

  1. Выходные данные, кажется, следуют распределению Гаусса с центром в 0.

  2. Полученное изображение зашумлено.

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

Это проблема для нашей нейронной сети. Кроме того, CNN лучше работают с разреженными данными (CNN work better with sparse data) было подтверждено.

2.3. Неразреженность

Распределение Гаусса неудивительно. При взгляде на трехмерное значение внутреннего продуктаzzизображения, для всех(x,y)еR²(х, у)∈R^²возможных комбинаций, получаем трехмерную поверхность скалярного произведения:

Предполагая, что значения временного ряда следуют равномерному распределению [-1,1], значения матрицы следуют распределению Гаусса. Ниже приведена гистограмма вывода значения матрицы Грама для различных временных рядов длины n:

3. Начните программировать

Поскольку одномерный временной ряд является одномерным, скалярное произведение не может отличить ценную информацию от гауссовского шума, и нет другого способа использовать отношение «угла», кроме как изменить пространство.

Следовательно, мы должны закодировать временные ряды в пространство по крайней мере двух измерений, прежде чем использовать конструкцию, подобную матрице Грама. Для этого построим связь между одномерным временным рядом и двумерным пространствомбиективная карта, чтобы никакая информация не потерялась.

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

3.1 Последовательности масштабирования

Шаг 1: Масштабируйте последовательность до [-1,1] с помощью масштабатора Min-Max.

Наш процесс такой же, как и вышеМетод реализациипохожий в. Вместе с скейлером Min-Max наше полярное кодирование будет биективным, используяarccosarccosБиекция функций (см. следующий шаг).

Шаг 2. Преобразуйте масштабированные временные ряды в «полярные координаты».

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

Предположим, что наш временной ряд заданNNотметка времениttи соответствующийxxсостав, то:

  • используется уголarccos(x)arccos(x)рассчитывается, значение равно[0,число Пи][0,\pi]между.
  • Сначала вычислите переменную радиуса, мы разделим интервал [0,1] наNNравные части. Таким образом, мы получаемN+1N+1точка разделения{0,,1}\{0,\cdots,1\}. Затем мы отбрасываем 0 и постоянно связываем точки с временными рядами.

Математически определяется как:

{ϕi=arccos(xi)ri=iN\begin{cases} \phi_i=arccos(x_i) \\ r_i=\frac{i}{N} \end{cases}

Эти кодировки имеют ряд преимуществ:

  1. Вся кодировка естьбиективный(как комбинация биективных функций).
  2. это проходитrrКоординаты остаются зависимыми от времени. Это преимущество полезно.

4. Внутренний продукт временного ряда

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

4.1 Почему не внутренний продукт полярно закодированных значений?

Внутренние произведения в двумерном полярном пространстве имеют несколько ограничений, поскольку норма каждого вектора корректируется с учетом временных зависимостей. Точнее должно быть:

  • Внутренний продукт между двумя разными наблюдениями будет смещен в сторону ближайшего (поскольку норма увеличивается со временем);
  • При вычислении внутреннего продукта наблюдения с самим собой результирующая норма также смещена.

Поэтому, если есть такая операция внутреннего продукта, она должна зависеть только от угла.

4.2 Использование угла

Поскольку любая операция, такая как скалярное произведение, неизбежно преобразует информацию двух разных наблюдений в одно значение, мы не можем одновременно хранить информацию, полученную от обоих углов. Мы должны пойти на некоторые уступки.

Чтобы лучше интерпретировать индивидуальную информацию и информацию о соединении с двух точек зрения, авторы определяютДругая операция внутреннего продукта:

xy=cos(θ1+θ2)x\oplus y=\cos{(\theta_1+\theta_2)}

вθ\thetaвыражатьxxиyyУгол.

Уведомление: я выбрал другое обозначение вместо использования внутреннего продукта, потому что эта операция не удовлетворяет требованиям внутреннего продукта (линейный, положительно определенный).

Это дает следующую грамподобную матрицу:

G=(cos(ϕ1+ϕ1)cos(ϕ1+ϕ2)cos(ϕ1+ϕn)cos(ϕ2+ϕ1)cos(ϕ2+ϕ2)cos(ϕ2+ϕn)cos(ϕn+ϕ1)cos(ϕn+ϕ2)cos(ϕn+ϕn))G=\begin{pmatrix} \cos{(\phi_1+\phi_1)} & \cos{(\phi_1+\phi_2)} & \cdots & \cos{(\phi_1+\phi_n)} \\ \cos{(\phi_2+\phi_1)} & \cos{(\phi_2+\phi_2)} & \cdots & \cos{(\phi_2+\phi_n)} \\ \vdots & \vdots & \ddots & \vdots \\ \cos{(\phi_n+\phi_1)} & \cos{(\phi_n+\phi_2)} & \cdots & \cos{(\phi_n+\phi_n)} \\ \end{pmatrix}

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

Преимущество

  1. Диагональная линия состоит из исходных значений масштабированного временного ряда (мы будем приблизительно восстанавливать временной ряд по высокоуровневым признакам, изученным глубокой нейронной сетью);
  2. Временная корреляция через временной интервалkkНаправленная суперпозиция , объясняемая относительной корреляцией.

4.3 Разреженное представление

Теперь построим график плотности распределения значений Gramian Angular Field:

Из приведенного выше графика видно, что поле угла Грама гораздо более разреженное. Чтобы объяснить это, воспользуемсяuvu\oplus vПредставлено в декартовых координатах:

cos(θ1+θ2)=cos(arccos(x)+arccos(y))=cos(acrccos(x))cos(arccos(y))sin(arccos(x))sin(arccos(y))=xy+1x21y2=x,y1x21y2\begin{matrix} \cos(\theta_1+\theta_2) & = & cos(arccos(x)+arccos(y)) \\ & = & cos(acrccos(x))\cdot cos(arccos(y))-sin(arccos(x))\cdot sin(arccos(y)) \\ & = & x\cdot y+\sqrt{1-x^2}\cdot \sqrt{1-y^2} \\ & = & \langle x,y \rangle-\sqrt{1-x^2}\cdot \sqrt{1-y^2} \end{matrix}

В предыдущем пункте мы заметили, что вновь построенная операция соответствует традиционному скалярному продукту.версия наказания:

xy=xy1x21y2x\oplus y=x\cdot y-\rangle-\sqrt{1-x^2}\cdot \sqrt{1-y^2}

Чтобы понять эффект этого наказания. Давайте сначала посмотрим на 3D-схему всей операции:

можно увидеть:

  • Штраф сдвигает средний выход к -1;
  • xxиyyЧем ближе к 0, тем больше штраф. Основная причина в том, что эти точки ближе к гауссовскому шуму;
  • заx=yx=y: будет преобразовано в -1;
  • Выходные данные легко отличить от гауссова шума.

недостаток

  • Однако основная диагональ генерирует большой GAM из-заnn2n\mapsto n^2, а исходный временной ряд имеет длину n. Автор рекомендует использоватькусочно-агрегатное приближение(Приближение кусочного агрегирования) Уменьшить размер.
  • Эта операция на самом деле не является внутренним продуктом.

5. Код

существуетGitHubNUMPY Реализация для преобразования одномерных временных рядов на изображение можно найти на изображении.

Код, прикрепленный выше, похоже, не работает напрямую, поэтому я написал демонстрацию, которую можно использовать самостоятельно с помощью пакета pyts, и поместил ее всобственный GitHubДля получения дополнительной информации, пожалуйста, обратитесь к другому сообщению в блоге -Python: используйте pyts для преобразования одномерных временных рядов в двумерные изображения.

Суммировать: Этот пост в блоге в основном вдохновлен подробной статьей Чжигуана Вана и Тима, которые используют мозаичные сверточные нейронные сети для кодирования временных рядов в изображения для визуального контроля и классификации. В статье также упоминается еще один интересный метод кодирования: поля преобразования Маркова.