Обучение модели Прогнозирование временных рядов (GeoAI)

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

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

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

Этот инструмент обучает модели прогнозирования временных рядов, используя различные модели, основанные на глубоком обучении, такие как Fully Connected Network (FCN), Long Short-Term Memory (LSTM), InceptionTime, ResNet и ResCNN. Эти модели поддерживают многомерные временные ряды, в которых модель извлекает информацию из более чем одной зависящей от времени переменной для прогнозирования будущих значений. Обученная модель сохраняется в виде файла пакета глубокого обучения (.dlpk) и может быть использована для прогнозирования будущих значений с помощью инструмента Прогнозирование с использованием модели временных рядов.

Подробнее о работе моделей прогнозирования временных рядов

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

  • Необходимо установить подходящую среду глубокого обучения для Python в ArcGIS AllSource.

    Узнайте, как установить среды глубокого обучения для ArcGIS

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

  • По сравнению с другими инструментами прогнозирования в наборе инструментов Прогнозирование временных рядов, этот инструмент использует модели прогнозирования временных рядов на основе глубокого обучения. Модели глубокого обучения обладают высокой способностью к обучению и подходят для временных рядов, которые следуют сложным тенденциям и которые трудно моделировать с помощью простых математических функций. Однако им требуется больший объем обучающих данных, для изучения таких сложных тенденций, и использование большего количества вычислительных ресурсов для обучения и построения выводов. Для этого инструмента рекомендуется использование графического процессора (GPU).

  • Чтобы запустить этот инструмент с использованием GPU, установите для параметра среды Тип процессора значение GPU. Если у вас более одного графического процессора, вместо этого задайте для параметра среды значение GPU ID.

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

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

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

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

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

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

  • Значение параметра Выходные объекты будет добавлено на панель Содержание с рендерингом на основе окончательного прогнозируемого временного шага.

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

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

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

Параметры

ПодписьОписаниеТип данных
Входные данные временных рядов

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

File
Выходная модель

Местоположение выходной папки, в которой будет храниться обученная модель. Обученная модель будет сохранена в виде файла пакета глубокого обучения (.dlpk).

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

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

String
Длина последовательности

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

  • Если параметр Многоступенчато не включен, значение этого параметра должно быть меньше или равно общему количеству входных временных шагов, оставшихся после исключения шагов, согласно значению параметра Число временных шагов, исключаемых для проверки.
  • Если параметр Многоступенчатосто отключен, значение Длина последовательности, увеличенное в 1,5 раза, должно быть меньше или равно общему количеству временных шагов, оставшихся после исключения шагов, согласно значению параметра Число временных шагов, исключаемых для проверки.

Long
Независимые переменные обучения
(Дополнительный)

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

Value Table
Максимальное число эпох
(Дополнительный)

Максимальное число эпох, для которых будет обучаться модель. Значение по умолчанию равно 20.

Long
Число временных шагов, исключаемых для проверки
(Дополнительный)

Число временных шагов, которые исключаются для проверки. Например, если указано значение 14, то последние 14 строк во фрейме данных будут использоваться в качестве проверочных данных. По умолчанию используется 10 процентов от общего количества временных шагов. В идеале значение не может быть меньше, чем 5 процентов от всех временных шагов входного куба.

  • Если параметр Многоступенчато не включен, значение этого параметра должно составлять менее 25 процентов от общего количества записей во входном кубе пространство-время.
  • Если параметр Многоступенчато включен, его значение должно быть меньше или равно половине значения параметра Длина последовательности.

Long
Тип модели
(Дополнительный)

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

  • InceptionTimeДля обучения модели будет использоваться архитектура InceptionTime. Используется по умолчанию.
  • ResNetДля обучения модели будет использоваться архитектура ResNet.
  • ResCNNДля обучения модели будет использоваться архитектура ResCNN.
  • FCNДля обучения модели будет использоваться архитектура FCN.
  • LSTMДля обучения модели будет использоваться архитектура LSTM.
  • TimeSeriesTransformerДля обучения модели будет использоваться архитектура TimeSeriesTransformer.
String
Размер пакета
(Дополнительный)

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

В зависимости от GPU компьютера это число может быть изменено на 8, 16, 32, 64 и так далее.

Long
Аргументы модели
(Дополнительный)

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

Value Table
Завершить обучение, когда модель больше не улучшается
(Дополнительный)

Указывает, будет ли прекращено обучение модели, если потеря проверки не зафиксирует улучшения после пяти последовательных эпох.

  • Отмечено — обучение модели прекратится, если потеря проверки не зафиксирует улучшения после пяти последовательных эпох. Используется по умолчанию.
  • Не отмечено — обучение модели будет продолжаться до тех пор, пока не будет достигнуто максимальное количество эпох.

Boolean
Выходной класс пространственных объектов
(Дополнительный)

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

Feature Class
Выходной куб
(Дополнительный)

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

File
Многоступенчато
(Дополнительный)

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

  • Отмечено — при обучении модели будет использоваться многоступенчатый подход.
  • Не отмечено — при обучении модели будет использоваться традиционный одношаговый подход. Используется по умолчанию.

Boolean

arcpy.geoai.TrainTimeSeriesForecastingModel(in_cube, out_model, analysis_variable, sequence_length, {explanatory_variables}, {max_epochs}, {validation_timesteps}, {model_type}, {batch_size}, {arguments}, {early_stopping}, {out_features}, {out_cube}, {multistep})
ИмяОписаниеТип данных
in_cube

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

File
out_model

Местоположение выходной папки, в которой будет храниться обученная модель. Обученная модель будет сохранена в виде файла пакета глубокого обучения (.dlpk).

Folder
analysis_variable

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

String
sequence_length

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

  • Если параметр multistep равен False, значение этого параметра должно быть меньше или равно общему количеству входных временных шагов, оставшихся после исключения шагов, согласно значению параметра validation_timesteps.
  • Если параметр multistep равен True, значение sequence_length, увеличенное в 1,5 раза, должно быть меньше или равно общему количеству временных шагов, оставшихся после исключения шагов, согласно значению параметра validation_timesteps.

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

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

Value Table
max_epochs
(Дополнительный)

Максимальное число эпох, для которых будет обучаться модель. Значение по умолчанию равно 20.

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

Число временных шагов, которые исключаются для проверки. Например, если указано значение 14, то последние 14 строк во фрейме данных будут использоваться в качестве проверочных данных. По умолчанию используется 10 процентов от общего количества временных шагов. В идеале значение не может быть меньше, чем 5 процентов от всех временных шагов входного куба.

  • Если значение параметра multistep равно False, значение этого параметра должно составлять менее 25 процентов от общего количества записей во входном кубе пространство-время.
  • Если значение параметра multistep равно True, его значение должно быть меньше или равно половине значения параметра sequence_length.

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

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

  • InceptionTimeДля обучения модели будет использоваться архитектура InceptionTime. Используется по умолчанию.
  • ResNetДля обучения модели будет использоваться архитектура ResNet.
  • ResCNNДля обучения модели будет использоваться архитектура ResCNN.
  • FCNДля обучения модели будет использоваться архитектура FCN.
  • LSTMДля обучения модели будет использоваться архитектура LSTM.
  • TimeSeriesTransformerДля обучения модели будет использоваться архитектура TimeSeriesTransformer.
String
batch_size
(Дополнительный)

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

В зависимости от GPU компьютера это число может быть изменено на 8, 16, 32, 64 и так далее.

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

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

Value Table
early_stopping
(Дополнительный)

Указывает, будет ли прекращено обучение модели, если потеря проверки не зафиксирует улучшения после пяти последовательных эпох.

  • TRUEОбучение модели прекратится, если потеря проверки не зафиксирует улучшения после пяти последовательных эпох. Используется по умолчанию.
  • FALSEОбучение модели будет продолжаться до тех пор, пока не будет достигнуто максимальное количество эпох.
Boolean
out_features
(Дополнительный)

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

Feature Class
out_cube
(Дополнительный)

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

File
multistep
(Дополнительный)

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

  • TRUEПри обучении модели будет использоваться многоступенчатый подход.
  • FALSEПри обучении модели будет использоваться традиционный одношаговый подход. Используется по умолчанию.
Boolean

Пример кода

Пример TrainTimeSeriesForecastingModel (автономный скрипт)

В этом примере показано, как использовать функцию TrainTimeSeriesForecastingModel.

# Name: TrainTimeSeriesForecastingModel.py
# Description: Train a time series model on space-time cube data with
# different AI models.
  
# Import system modules                                                                                                                                                                                                                                                                                                                    
import arcpy
import os

# Set local variables
datapath  = "path_to_data_for_forecasting" 
out_path = "path_to_gdb_for_forecasting"

model_path = os.path.join(out_path, "model")
in_cube = os.path.join(datapath, "test_data")
out_features = os.path.join(out_path, "forecasted_feature.gdb", "forecasted")

# Run TrainTimeSeriesForecastingModel
arcpy.geoai.TrainTimeSeriesForecastingModel(
        in_cube,
        model_path,
        "CONSUMPTION",
        12,
        None,
        20,
        2,
        "InceptionTime",
        64,
        None,
        True,
        out_features
    )