Кластеризация временных рядов (Углубленный анализ пространственно-временных закономерностей)

Краткая информация

Разделяет временные ряды, хранящиеся в кубе пространства-времени, на основе сходства характеристик временных рядов. Временные ряды могут быть кластеризованы на основе трех критериев: одинаковые значения времени, одновременная тенденция к увеличению и уменьшению и сходные повторяющиеся закономерности. На выходе этого инструмента создается 2D-карта, отображающая каждое местоположение в кубе, обозначенное принадлежностью к кластеру, и сообщениями. В выходных данных также имеется диаграмма с информацией о репрезентативной сигнатуре временных рядов для каждого кластера.

Подробнее о том, как работает инструмент Кластеризация временных рядов

Иллюстрация

Кластеризация временных рядов

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

  • Этот инструмент поддерживает файлы netCDF, созданные инструментами Создать куб Пространство-Время по агрегации точек, Создать куб Пространство-Время из указанных местоположений и Создать куб Пространство-Время из многомерного растрового слоя.

  • Инструмент сравнивает временные ряды в каждом местоположении со всеми остальными местоположениями во Входном кубе пространства-времени, и временные ряды кластеризуются на основе сходства. Параметр Характеристика интереса используется для задания характеристики, которая будет определять сходство двух временных рядов, и можно установить сходство на основе одной из трех характеристик:

    • Значение - Временные ряды схожи, если имеют приблизительно равные значения Переменной анализа во времени. Например, временной ряд со значениями (1, 0, 1, 0, 1) больше схож с временным рядом со значениями (1, 1, 1, 1, 1), чем с временным рядом со значениями (10, 0, 10, 0, 10), потому что значения более схожи.
    • Профиль (Корреляция) – временные ряды схожи, если их значения имеют тенденцию к увеличению и уменьшению в одно и то же время и приблизительно пропорциональны (другими словами, что они коррелируются во времени). Например, временной ряд со значениями (1, 0, 1, 0, 1) больше схож с временным рядом со значениями (10, 0, 10, 0, 10), чем с временным рядом со значениями (1, 1, 1, 1, 1), потому что значения увеличиваются и уменьшаются одновременно и сохраняют пропорции.
    • Профиль (Фурье) - Временные ряды схожи, если имеют одинаковые гладкие периодические закономерности значений во времени. Эти периоды иногда называют циклами или сезонами, и они представляют собой длительность закономерности, который затем повторяется в новом периоде. Например, компании могут увидеть периодически повторяющиеся еженедельные закономерности в общих продажах, с периодом, начинающимся в понедельник и заканчивающимся в воскресенье. При необходимости можно проигнорировать некоторые характеристики этих закономерностей, используя параметр Игнорируемые характеристики временных рядов. Повторяющиеся закономерности обнаруживаются с помощью функционального анализа данных Фурье. Чтобы этот параметр был наиболее эффективным, временной ряд входного куба пространство-время должен охватывать полностью хотя бы один период. Например, годовой цикл температур определяется сезонами, но если все данные были собраны в течение нескольких месяцев одного года, этот параметр может быть не в состоянии обнаружить годовой цикл.

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

  • Выходные объекты будут добавлены на панель Содержание с применением метода отображения, основанного на поле CLUSTER_ID, который обозначает принадлежность каждого кластера определенному местоположению. Если вы указали, что требуется три кластера, каждая запись будет содержать значение Value 1, 2 или 3 в поле CLUSTER_ID. Поле CENTER_REP используется для идентификации медоида временного ряда каждого кластера и содержит значение 1 для медоида временного ряда каждого кластера и 0 для всех других объектов.

  • Этот инструмент создает сообщения и, дополнительно, диаграммы, которые помогают понять характеристики определенных кластеров. Вы можете получить доступ к сообщениям, удерживая курсор над индикатором выполнения, щелкнув на кнопке всплывающего окна или развернув раздел сообщений на панели Геообработка. Вы также можете открыть сообщения, касающиеся предыдущего запуска инструмента Кластеризация временных рядов с панели История геообработки. Если вы зададите Выходную таблицу для диаграмм, то для выходной таблицы будут созданы диаграммы, отображающие средние временные ряды для каждого кластера и медоид временных рядов в каждом кластере. Доступ к этим диаграммам можно получить на панели Содержание под таблицей, созданной в разделе Автономные таблицы. Дополнительные сведения о выходных сообщениях и диаграммах см. в разделе Как работает инструмент Кластеризация временных рядов.

  • Иногда вы знаете какое число кластеров лучше всего подходит для ваших данных. Если это не так, можно попробовать различные количества кластеров, отмечая, какие значения обеспечивают наилучшую дифференциацию кластеров. Если оставить параметр Число кластеров пустым, инструмент будет оценивать оптимальное число кластеров с помощью псевдо F-статистики и сообщит об оптимальном числе кластеров в виде сообщения геообработки. Чем больше псевдо F-статистика, тем больше каждый кластер отличается от других кластеров. Оптимальное число кластеров не будет больше 10, и вычисление оптимального числа кластеров занимает большую часть времени выполнения инструмента. Рекомендуется указать число кластеров, если известно соответствующее значение или если время выполнения инструмента слишком велико.

    При расчете оптимального количества кластеров инструмент будет искать значение между двумя и десятью кластерами. Для каждого из этих 9 возможных чисел кластеров инструмент будет выполнять кластеризацию 10 раз, используя случайные начальные значения (за исключением случаев, когда Профиль (Корреляция) используется с более чем 10 000 местоположениями в кубе пространства-времени, когда каждое число соседей повторяется 20 раз). Это дает 90 (или 180) возможных результатов кластеризации (по 10 или 20 для каждого из 9 возможных вариантов числа кластеров), и для конечного числа кластеров, используемых в инструменте, выбирается тот, который имеет наибольшую псевдо F-статистику. Самая большая псевдо F-статистика для каждого из девяти возможных кластеров выводится в виде таблицы в сообщениях геообработки.

    Примечание:

    Псевдо F-статистика бесконечности означает, что все временные ряды в одном кластере имеют одинаковые значения.

  • ID кластера, присваиваемый значению, может меняться при последующих запусках инструмента, поскольку алгоритм случайно выбирает начальные значения для отсчета кластеров. Например, предположим, что вы разбиваете местоположения на два кластера на основе ежегодного прироста населения. При первом запуске анализа вы можете видеть, что местоположения с высоким приростом обозначены как кластер 2, а объекты с низким - как кластер 1; при повторном запуске этого же анализа, объекты с высоким приростом могут быть обозначены как кластер 1. Вы также можете видеть, что некоторые объекты со средним приростом переходят из одного кластера в другой. Это связано со случайной составляющей в алгоритме кластеризации. Если результаты кластеризации существенно меняются при повторном запуске инструмента с теми же параметрами, это может говорить о необходимости изменить параметр Число кластеров.

Параметры

ПодписьОписаниеТип данных
Входной куб Пространство-Время

Куб netCDF для анализа. Файл должен быть с расширением .nc, и должен быть создан инструментами Создать куб Пространство-Время по агрегации точек, Создать куб Пространство-Время из указанных местоположений или Создать куб Пространство-Время из многомерного растрового слоя.

File
Переменная анализа

Числовая переменная в файле netCDF, меняющаяся во времени, которая будет использована для различения кластеров.

String
Выходные объекты

Новый выходной класс объектов, содержащий все местоположения куба пространства-времени и поле, обозначающее принадлежность к кластерам. Этот класс объектов является 2D представлением кластеров в ваших данных.

Feature Class
Характеристика интереса

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

  • Значение — Точки с одинаковыми значениями во времени будут кластеризованы вместе.
  • Профиль (Корреляция) —Местоположения со значениями, которые имеют тенденцию пропорционально увеличиваться и уменьшаться в одно и то же время, будут кластеризованы вместе.
  • Профиль (Фурье) —Местоположения со значениями, имеющими сходные гладкие периодические закономерности, будут кластеризованы вместе.
String
Число кластеров
(Дополнительный)

Число создаваемых кластеров. Если оставить пустым, инструмент определит оптимальное число кластеров с помощью псевдо F-статистики. Оптимальное число кластеров будет показано в окне сообщения.

Long
Выходная таблица для диаграмм
(Дополнительный)

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

Table
Игнорируемые характеристики временных рядов
(Дополнительный)

Задает характеристики, которые будут игнорироваться при определении сходства между двумя временными рядами.

  • Временной лаг — Время начала каждого периода, включая временные лаги, будет игнорироваться. Например, если два временных ряда имеют схожие периодические закономерности, но значения одного из них отстают на три дня от другого, то временные ряды будут считаться схожими.
  • Радиус действия —Величина значений в каждом периоде будет проигнорирована. Например, если два временных ряда начинают и заканчивают свои периоды в одно и то же время, они будут считаться похожими, даже если фактические значения сильно отличаются.
String
Включение всплывающих окон временных рядов
(Дополнительный)

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

  • Отмечено - Для выходных объектов будут созданы диаграммы временных рядов.
  • Не отмечено - Диаграммы временных рядов не будут создаваться. Используется по умолчанию.
Boolean

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})
ИмяОписаниеТип данных
in_cube

Куб netCDF для анализа. Файл должен быть с расширением .nc, и должен быть создан инструментами Создать куб Пространство-Время по агрегации точек, Создать куб Пространство-Время из указанных местоположений или Создать куб Пространство-Время из многомерного растрового слоя.

File
analysis_variable

Числовая переменная в файле netCDF, меняющаяся во времени, которая будет использована для различения кластеров.

String
output_features

Новый выходной класс объектов, содержащий все местоположения куба пространства-времени и поле, обозначающее принадлежность к кластерам. Этот класс объектов является 2D представлением кластеров в ваших данных.

Feature Class
characteristic_of_interest

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

  • VALUE Точки с одинаковыми значениями во времени будут кластеризованы вместе.
  • PROFILEМестоположения со значениями, которые имеют тенденцию пропорционально увеличиваться и уменьшаться в одно и то же время, будут кластеризованы вместе.
  • PROFILE_FOURIERМестоположения со значениями, имеющими сходные гладкие периодические закономерности, будут кластеризованы вместе.
String
cluster_count
(Дополнительный)

Число создаваемых кластеров. Если оставить пустым, инструмент определит оптимальное число кластеров с помощью псевдо F-статистики. Оптимальное число кластеров будет показано в окне сообщения.

Long
output_table_for_charts
(Дополнительный)

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

Table
shape_characteristic_to_ignore
[shape_characteristic_to_ignore,...]
(Дополнительный)

Задает характеристики, которые будут игнорироваться при определении сходства между двумя временными рядами.

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

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

String
enable_time_series_popups
(Дополнительный)

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

  • CREATE_POPUPДля выходных объектов будут созданы диаграммы временных рядов.
  • NO_POPUPДиаграммы временных рядов не будут создаваться. Используется по умолчанию.
Boolean

Пример кода

TimeSeriesClustering, пример 1 (окно Python)

В следующем скрипте окна Python показано, как использовать инструмент 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")
TimeSeriesClustering, пример 2 (автономный скрипт)

Пример скрипта Python с использованием инструмента TimeSeriesClustering для кластеризации схожих местоположений магазинов:

# 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")

Параметры среды

Генератор случайных чисел

В качестве генератора случайных чисел всегда используется Mersenne Twister.

Связанные разделы