Utilice el campo angular de Gram (GAF) para convertir datos de series temporales en imágenes

Este artículo presentará el campo angular de Gramian en detalle y mostrará "Cómo convertir datos de series temporales en imágenes" con ejemplos de código.

Gramian Angular Summation / Difference Fields (GASF / GADF) puede convertir series de tiempo en imágenes para que podamos usar redes neuronales convolucionales (CNN) para datos de series de tiempo

0ffc4c144088052e53ef2277a9a572ed.gif

concepto basico

Antes de comenzar con la introducción, creo que primero debemos estar familiarizados con los conceptos básicos de GASF / GADF. Si ya lo sabes, puedes saltarte esta sección.

Coordenadas cartesianas: Coordenadas cartesianas (en francés: les coordonnées cartésiennes) es el nombre colectivo del sistema de coordenadas cartesianas y el sistema de coordenadas oblicuas. Los dos ejes que se cruzan en el origen constituyen un sistema de coordenadas plano afín. Si las unidades de medida en las dos rectas numéricas son iguales, el sistema de coordenadas afines se denomina sistema de coordenadas cartesianas. Un sistema de coordenadas cartesianas con dos ejes perpendiculares entre sí se denomina sistema de coordenadas cartesianas cartesianas; de lo contrario, se denomina sistema de coordenadas cartesianas oblicuas. La ubicación de un punto (u otra forma geométrica) está determinada por uno o más números. Por ejemplo, si tomamos un sistema de coordenadas bidimensional, la posición está determinada por un par de números, como (2,3). Luego, la ubicación se muestra en distancia desde dos líneas de referencia, llamadas ejes x e y.

41179a9d086dc28fd2e798cf7cf55616.png

Coordenadas polares: Pertenece a un sistema de coordenadas bidimensional, el fundador es Newton, se utiliza principalmente en el campo de las matemáticas. Las coordenadas polares se refieren a tomar un punto fijo O en el plano, llamado polo, generar un rayo Ox, llamado eje polar, y luego seleccionar una unidad de longitud y la dirección positiva del ángulo (generalmente en sentido antihorario). Imagina un círculo con centro en el origen que corta al punto (2,3). Encontramos el radio de este círculo y el ángulo entre el eje x y la línea que conecta (0,0) y (2,3). En coordenadas polares se representaría como (3.6, 56.3), que es un punto a 3.6 unidades del polo y 56.3° del eje polar

a6acdd3edde83b062207b0a5e63f3c77.png

Matriz de Gram: Supongamos que tenemos un conjunto de vectores V. La matriz de Gram es la matriz producto interior de cada par de vectores de V. Como se muestra en la siguiente figura, cada elemento de la matriz <vi, vj> es el producto vectorial entre los vectores vi y vj.

c69fb99a312b3d8941fdbc8f4bb40849.png

Las imágenes e introducciones anteriores son de Wiki y la Enciclopedia Baidu. Lo anterior es una breve introducción a los conceptos básicos, así que vayamos al grano.

el rincón de la abuela

Ahora avanzaremos hacia el objetivo principal de esta publicación, que es comprender el proceso de representación de series temporales en imágenes. En resumen, el proceso se puede entender a través de los siguientes tres pasos.

7681e8acf3150d23dcec756de1fe47df.png

  1. Agregue la serie temporal para reducir el tamaño tomando el promedio de cada punto M. Este paso utiliza Aproximación de agregación por partes / PAA.

  2. Un valor escalado en el intervalo [0,1].

  3. Las coordenadas polares se generan tomando la marca de tiempo como el arcocoseno del radio y los valores de escala. Este Yang puede proporcionar el valor del ángulo.

  4. Generar GASF/GADF. En este paso, cada par de valores se suma (resta), luego se toman y se suman los cosenos.

La descripción del idioma puede no ser precisa, el código se usa para explicar en detalle a continuación

Ejemplo en Python

He proporcionado un ejemplo de Python aquí para demostrar el estado del proceso paso a paso de convertir una serie temporal en una imagen utilizando los campos de ángulo de Gram.

importar paquetes requeridos

from pyts.approximation import PiecewiseAggregateApproximation
from pyts.preprocessing import MinMaxScaler
import numpy as np
import matplotlib.pyplot as plt

Generar algunos datos de demostración

X = [[1,2,3,4,5,6,7,8],[23,56,52,46,34,67,70,60]]
plt.plot(X[0],X[1])
plt.title(‘Time series’)
plt.xlabel(‘timestamp’)
plt.ylabel(‘value’)
plt.show()

4366d56a432436bcdba198770a9f333e.png

Aproximación y escalado de agregados por partes

# PAA
transformer = PiecewiseAggregateApproximation(window_size=2)
result = transformer.transform(X)

# Scaling in interval [0,1]
scaler = MinMaxScaler()
scaled_X = scaler.transform(result)

plt.plot(scaled_X[0,:],scaled_X[1,:])
plt.title(‘After scaling’)
plt.xlabel(‘timestamp’)
plt.ylabel(‘value’)
plt.show()

395d1057f9aa7ce6e4a6508e6f527300.png

Convertir a coordenadas polares

arccos_X = np.arccos(scaled_X[1,:])
fig, ax = plt.subplots(subplot_kw={‘projection’: ‘polar’})
ax.plot(result[0,:], arccos_X)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks
ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line
ax.grid(True)

ax.set_title(“Polar coordinates”, va=’bottom’)
plt.show()

3eb2171b4a98e37521724b93d66c482a.png

Campos de suma angular de Gramian

field = [a+b for a in arccos_X for b in arccos_X]
gram = np.cos(field).reshape(-1,4)
plt.imshow(gram)

a3c5be7d92ff83ab78a16e5782107205.png

adición final

Los pasos anteriores se utilizan para ilustrar el proceso de convertir una serie temporal en una imagen mediante el campo de diferencia/suma angular de Gramian. En el uso real, no es necesario calcular las coordenadas polares debido a las siguientes reglas trigonométricas:

6e1736a145495401a58218199d0de552.png

Para calcular Cos (A + B) en el cálculo del campo angular de Gramian, lo extendemos de la siguiente manera

2ac995e24d0f8ab2ac8673bcdb60caa2.png

Porque calculamos A y B tomando el coseno inverso de los valores de la serie temporal (en realidad en el PAA y los valores escalados). Para obtener otras instrucciones, consulte la descripción de GramianAngularField en la biblioteca pyts.

cita

  1. Wang, Z. y Oates, T. (2015). Imágenes de series temporales para mejorar la clasificación y la imputación. Conferencia conjunta internacional IJCAI sobre inteligencia artificial , 2015 - enero , 3939–3945.

  2. Eamonn J Keogh y Michael J Pazzani. Ampliación de la deformación dinámica del tiempo para aplicaciones de minería de datos. En Actas de la sexta conferencia internacional ACM SIGKDD sobre descubrimiento de conocimiento y minería de datos, páginas 285–289. ACM, 2000.

  3. https://pyts.readthedocs.io/en/stable/_modules/pyts/image/gaf.html#GramianAngularField

Autor: Pankaj Chejara

Editar: deephub-imba

Lectura recomendada:

Mi intercambio de reclutamiento escolar por Internet de 2022

Mi Resumen 2021

Hablando de la diferencia entre la publicación de algoritmos y la publicación de desarrollo

Resumen de salarios de investigación y desarrollo de reclutamiento de escuelas de Internet

Para series de tiempo, todo lo que puedes hacer.

¿Qué es el problema de la secuencia espacio-temporal? ¿Qué modelos se utilizan principalmente para tales problemas? ¿Cuáles son las principales aplicaciones?

Número público: coche caracol AI

Mantente humilde, mantente disciplinado, mantente progresista

93311f87e1eb2688d2888e2fc8a8eeb7.png

Envíe [Snail] para obtener una copia del "Proyecto práctico de IA" (AI Snail Car)

Envíe [1222] para obtener una buena nota de cepillado de leetcode

Envíe [AI Four Classics] para obtener cuatro libros electrónicos clásicos de AI

Supongo que te gusta

Origin blog.csdn.net/qq_33431368/article/details/123700477
Recomendado
Clasificación