Clustering de serie temporal (Minería de patrones en espacio-tiempo)

Resumen

Divide una colección de serie temporal, almacenada en un cubo de espacio-tiempo, en función de la similitud de las características de las series temporales. Las series temporales se puede agrupar según tres criterios: tener valores similares a lo largo del tiempo, tender a aumentar o disminuir al mismo tiempo y tener patrones repetidos similares. La salida de esta herramienta es un mapa 2D que muestra en el cubo cada ubicación simbolizada por pertenencia a un clúster y mensajes. La salida también incluye gráficos que contienen información sobre la firma de serie temporal representativa para cada clúster.

Más información sobre cómo funciona la herramienta Clustering de serie temporal

Ilustración

Clustering de serie temporal

Uso

  • Esta herramienta acepta archivos netCDF creados con las herramientas Crear cubo de espacio-tiempo agregando puntos, Crear cubo de espacio-tiempo a partir de entidades definidas y Crear cubo de espacio-tiempo a partir de capa ráster multidimensional.

  • Esta herramienta compara la serie temporal en cada ubicación con las del resto de ubicaciones en el Cubo de espacio-tiempo de entrada, y las series temporales se agrupan en función de su parecido. El parámetro Característica de interés se utiliza para definir lo que significa que dos series temporales sean similares, además, es posible definir la similitud según estas características:

    • Valor: las series temporales son similares si tienen aproximadamente los mismos valores de la Variable de análisis a lo largo del tiempo. Por ejemplo, una serie temporal con valores (1, 0, 1, 0, 1) se parece más a una serie temporal con valores (1, 1, 1, 1, 1) de lo que se parece a otra con (10, 0, 10, 0, 10), puesto que los valores se parecen más.
    • Perfil (Correlación): las series temporales se parecen si sus valores tienden a aumentar y disminuir al mismo tiempo y sus valores son aproximadamente proporcionales (es decir, se correlacionan a lo largo del tiempo). Por ejemplo, una serie temporal con valores (1, 0, 1, 0, 1) se parece más a una serie temporal con valores (10, 0, 10, 0, 10) de lo que se parece a otra con (1, 1, 1, 1, 1), puesto que los valores aumentan y disminuyen al mismo tiempo y mantienen una proporción constante.
    • Perfil (Fourier): las series temporales se parecen si presentan patrones periódicos y uniformes en sus valores a lo largo del tiempo. En ocasiones, estos periodos se conocen como ciclos o estaciones y representan duraciones de un patrón que se repite en un nuevo periodo. Por ejemplo, es posible que los negocios observen patrones repetidos periódicos en las ventas totales de cada semana, con un intervalo que comienza el lunes y termina el domingo. Si lo desea, puede optar por ignorar determinadas características de estos patrones con el parámetro Características de serie temporal que ignorar. Los patrones repetidos se detectan mediante análisis de datos funcionales con una familia Fourier. Para que esta opción sea la más eficaz, la serie temporal del cubo de espacio-tiempo debe abarcar toda la duración de al menos un periodo. Por ejemplo, la temperatura presenta un periodo anual basado en el clima de las estaciones, no obstante, si todos los datos se recopilan en varios meses de un mismo año, es posible que esta opción no detecte el periodo anual.

    Con la definición de similitud, las ubicaciones del cubo de espacio-tiempo se agrupan utilizando uno de los distintos algoritmos de clustering para producir los clústeres definitivos que devuelve la herramienta. Consulte Cómo funciona Clustering de serie temporal para obtener más información sobre estos algoritmos de clustering.

  • Las Entidades de salida se agregarán al panel Contenido con una representación en pantalla basada en el campo CLUSTER_ID y se indicará el clúster en el que quedó cada una de las ubicaciones. Si especifica tres clústeres, por ejemplo, cada registro tendrá un valor de 1, 2 o 3 para el campo CLUSTER_ID. El campo CENTER_REP identifica el medoide de la serie temporal de cada clúster y contiene un valor de 1 para la serie temporal del medoide de cada clúster y un 0 para el resto de entidades.

  • Esta herramienta crea mensajes y gráficos opcionales para ayudarle a comprender las características de los clústeres identificados. Puede acceder a los mensajes desplazándose sobre la barra de progreso, haciendo clic en el botón emergente o expandiendo la sección de mensajes en el panel Geoprocesamiento. También puede acceder a los mensajes de una ejecución anterior de la herramienta Clustering de serie temporal a través del Historial de geoprocesamiento. Si especifica una Tabla de salida para gráficos, se crearán gráficos para la tabla de salida que muestren las series temporales medias de cada clúster y el medoide de la serie temporal de cada clúster. Se puede acceder a estos gráficos en el panel Contenido, en la tabla creada en la sección Tablas independientes. Para obtener más información sobre los mensajes y gráficos de salida, consulte Cómo funciona Clustering de serie temporal.

  • A veces conoce el número de clústeres más adecuado para sus datos. En caso contrario, puede que tenga que probar diferentes números de clústeres, anotando qué valores proporcionan la mejor diferenciación de clústeres. Si deja vacío el parámetro Número de clústeres, la herramienta evaluará el número óptimo de clústeres mediante un pseudo índice estadístico F e informará del número óptimo de clústeres en forma de mensaje de geoprocesamiento. Cuanto mayor sea el pseudo índice estadístico F, más distinto será cada clúster del resto. El número óptimo de clústeres no superará los diez, y calcular el número óptimo de clústeres ocupa la mayoría del tiempo de ejecución de la herramienta. Se recomienda proporcionar un número de clústeres si conoce un valor adecuado o si el tiempo de ejecución de la herramienta es demasiado largo.

    Para calcular el número óptimo de clústeres, la herramienta probará entre dos y diez clústeres. Para cada uno de estos nueve números posibles de clúster, la herramienta realizará diez clústeres con valores de inicialización iniciales aleatorios (salvo cuando se utiliza Perfil (Correlación) con más de 10.000 ubicaciones en el cubo de espacio-tiempo, en cuyo caso cada número de vecinos se repite 20 veces). Genera 90 (o 180) posibles resultados de clustering (10 o 20 para cada uno de los nueve números posibles de clústeres), el que tenga el mayor pseudo índice estadístico F se elegirá para el número final de clústeres utilizado en la herramienta. El mayor pseudo índice estadístico F de cada uno de los nueve números posibles de clústeres se imprime como una tabla en los mensajes de geoprocesamiento.

    Nota:

    Un pseudo índice estadístico F de infinito significa que todas las series temporales del mismo clúster son perfectamente similares entre sí.

  • El Id. de clúster asignado a una ubicación puede cambiar de una ejecución a la siguiente, ya que el algoritmo selecciona aleatoriamente los valores de inicialización iniciales para empezar a hacer crecer los clústeres. Por ejemplo, supongamos que divide las ubicaciones en dos clústeres basados en el crecimiento anual de la población. La primera vez que ejecuta el análisis puede ver las ubicaciones de crecimiento elevado etiquetadas como clúster 2 y las ubicaciones de crecimiento bajo etiquetadas como clúster 1; la segunda vez que ejecute el mismo análisis, las ubicaciones de crecimiento elevado pueden estar etiquetadas como clúster 1. También podría ver que algunas de las ubicaciones de crecimiento medio cambian la pertenencia a un clúster de una ejecución a otra. Se debe a un componente aleatorio del algoritmo de clustering. Si los resultados del clustering cambian considerablemente al volver a ejecutar la herramienta con los mismos parámetros, plantéese cambiar el valor del parámetro Número de clústeres.

Sintaxis

arcpy.stpm.TimeSeriesClustering(in_cube, analysis_variable, output_features, characteristic_of_interest, {cluster_count}, {output_table_for_charts}, {shape_characteristic_to_ignore}, {enable_time_series_popups})
ParámetroExplicaciónTipo de datos
in_cube

Cubo de netCDF que se analizará. Este archivo debe tener una extensión .nc y se debe haber creado utilizando las herramientas Crear cubo de espacio-tiempo agregando puntos, Crear cubo de espacio-tiempo a partir de entidades definidas o Crear cubo de espacio-tiempo a partir de capa ráster multidimensional.

File
analysis_variable

La variable numérica del archivo netCDF, que cambia a lo largo del tiempo, que se utilizará para distinguir un clúster de otro.

String
output_features

La nueva clase de entidad de salida contiene todas las ubicaciones en el cubo de espacio-tiempo y un campo que indica la pertenencia a un clúster. Esta clase de entidad será una representación bidimensional de los clústeres en sus datos.

Feature Class
characteristic_of_interest

Especifica la característica de la serie temporal que se utilizará para determinar las ubicaciones que se deben agrupar juntas.

  • VALUE Las ubicaciones con valores similares a lo largo del tiempo se agruparán juntas.
  • PROFILELas ubicaciones con valores que tienden a aumentar y disminuir proporcionalmente al mismo tiempo se agruparán juntas.
  • PROFILE_FOURIERLas ubicaciones con valores con patrones periódicos y uniformes que se parecen se agruparán juntas.
String
cluster_count
(Opcional)

El número de clústeres que se desea crear. Si se deja vacío, la herramienta evaluará el número óptimo de clústeres mediante un pseudo índice estadístico F. El número óptimo de clústeres se comunicará en la ventana de mensajes.

Long
output_table_for_charts
(Opcional)

Si se especifica, esta tabla contiene las series temporales representativas de cada clúster en función tanto del promedio de cada serie temporal como del medoide de serie temporal. Puede acceder a los gráficos creados a partir de esta tabla en la sección Tablas independientes.

Table
shape_characteristic_to_ignore
[shape_characteristic_to_ignore,...]
(Opcional)

Especifica las características que se ignorarán a la hora de determinar la similitud entre dos series temporales.

  • TIME_LAG Se ignorará la hora de inicio de cada periodo, incluidos los intervalos de tiempo. Por ejemplo, si dos series temporales tienen patrones periódicos similares, pero los valores de una son tres días anteriores a los de la otra, las series temporales se considerarán similares.
  • RANGESe ignorará la magnitud de los valores en cada periodo. Por ejemplo, si dos series temporales comienzan y finalizan sus periodos al mismo tiempo, se considerarán similares, incluso si los valores actuales son muy distintos.

Si se ignoran ambas características, dos series temporales se considerarán similares si la duración de los periodos es similar, incluso si comienzan en momentos distintos y los periodos no tienen los mismos valores.

String
enable_time_series_popups
(Opcional)

Especifica si se crearán gráficos de series temporales en los elementos emergentes de cada entidad de salida que muestren las series temporales de la entidad y la serie temporal media de todas las entidades del mismo clúster como la entidad. Las series temporales emergentes no son compatibles con las salidas de los shapefiles.

  • CREATE_POPUPSe crearán gráficos de series temporales para las entidades de salida.
  • NO_POPUPNo se crearán gráficos de series temporales. Esta es la opción predeterminada.
Boolean

Muestra de código

Ejemplo 1 de TimeSeriesClustering (ventana de Python)

En el siguiente script de Python se muestra cómo utilizar la herramienta TimeSeriesClustering:

import arcpy
arcpy.env.workspace = r"C:\Analysis"
# Value
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc",
                                "Air_NONE_ZEROS", r"Analysis.gdb\Temp_Value_3Clusts", 
                                "VALUE", 3, "Temp_Value_3Clusts_Chart", None, "CREATE_POPUP")
# Profile - correlation
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc", "Air_NONE_ZEROS",
                                r"Analysis.gdb\Temp_Profile_3Clusts", "PROFILE", 3, 
                                r"Temp_Profile_3Clusts_Chart", None, "CREATE_POPUP")
# Profile - Fourier
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc",
                                "Air_NONE_ZEROS", r"Analysis.gdb\Temp_Fourier_3Clusts",
                                "PROFILE_FOURIER", 3, r"Temp_Fourier_3Clusts_Chart", 
                                "TIME_LAG", "CREATE_POPUP")
Ejemplo 2 de TimeSeriesClustering (script independiente)

En el siguiente script de Python se muestra cómo utilizar la herramienta TimeSeriesClustering para agrupar ubicaciones de almacén similares en clúster:

# Create clusters of store locations with similar sales volumes over time.
# Import system modules.
import arcpy
# Set property to overwrite existing output, by default.
arcpy.env.overwriteOutput = True
# Set workspace...
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace
# Create 3 clusters of location with similar extent of fluctuation in temperature.
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc", "Air_NONE_ZEROS",
                      r"Analysis.gdb\Temperature_TSC",
                      "PROFILE_FOURIER", 3, "Temp_Chart", None, 
                      "CREATE_POPUP")
# Create a feature class containing all the bins in the input space time cube.
arcpy.stpm.VisualizeSpaceTimeCube3D(r"Temperature.nc", "Air_NONE_ZEROS", "VALUE", 
                      r"Temp_Bins.shp")
# Make the bins as a feature layer.
arcpy.MakeFeatureLayer_management("Temp_Bins.shp", "Temp_Bins_Temp_Layer")
# Join the clustering results to the bins so each bin now has a cluster ID.
arcpy.management.AddJoin("Temp_Bins_Temp_Layer", "Location", 
                      r"Analysis.gdb\Temperature_TSC", "Location", "KEEP_ALL")
# Summarize the bins using Summary Statistics with Cluster ID as a case field
# to get the minimum, maximum, and average temperature for each cluster.
arcpy.analysis.Statistics("Temp_Bins_Temp_Layer", "Temp_Bins_Statistics.shp",
                      "Temp_Bins.VALUE MEAN;Temp_Bins.VALUE MAX;Temp_Bins.VALUE MIN",
                      "Temperature_TSC.CLUSTER_ID")

Entornos

Generador de números aleatorios

El tipo de generador de números aleatorios que se utiliza siempre es Mersenne Twister.

Información de licenciamiento

  • Basic: Sí
  • Standard: Sí
  • Advanced: Sí

Temas relacionados