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
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.
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
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.
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.
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.
Un valor escalado en el intervalo [0,1].
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.
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()
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()
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()
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)
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:
Para calcular Cos (A + B) en el cálculo del campo angular de Gramian, lo extendemos de la siguiente manera
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
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.
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.
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
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.
Número público: coche caracol AI
Mantente humilde, mantente disciplinado, mantente progresista
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