Автор Francesca Lazzeri. Эта статья является выдержкой из книги Машинное обучение для прогнозирования временных рядов с помощью Python , также выпущенной Lazzeri, опубликованной Wiley.

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

Построение моделей машинного обучения (ML) с данными временных рядов часто занимает много времени и требует учета множества факторов, таких как повторение алгоритмов, настройка гиперпараметров ML и применение методов проектирования функций. Эти варианты умножаются на данные временных рядов, поскольку специалисты по обработке данных должны учитывать дополнительные факторы, такие как тенденции, сезонность, праздники и внешние экономические переменные. В этой статье я продемонстрирую, как обучить регрессионную модель прогнозирования временных рядов с помощью Автоматизированного машинного обучения в Машинном обучении Azure.

Машинное обучение Azure

Машинное обучение Azure - это облачный сервис для ускорения и управления жизненным циклом проекта машинного обучения. Специалисты по обработке данных и инженеры могут использовать его в своих повседневных рабочих процессах для обучения и развертывания моделей и управления MLOps.

Для разработчиков приложений он предоставляет инструменты для интеграции моделей в приложения или сервисы. Разработчикам платформ доступен надежный набор инструментов, поддерживаемый надежными API-интерфейсами Azure Resource Manager, для создания расширенных инструментов машинного обучения. Предприятиям, работающим в облаке Microsoft Azure, предоставляется доступ к знакомой системе безопасности и управлению доступом на основе ролей (RBAC) для инфраструктуры, включая настройку проектов для отказа в доступе к защищенным данным и определенным операциям.

Автоматизированное машинное обучение в машинном обучении Azure

Автоматизированное машинное обучение (Automated ML) - это процесс автоматизации трудоемких итеративных задач разработки модели ML. Он позволяет специалистам по обработке данных, аналитикам и разработчикам создавать модели машинного обучения в большом масштабе, которые являются эффективными и продуктивными, сохраняя при этом качество модели. Автоматизированное машинное обучение в машинном обучении Azure основано на работе Microsoft Research.

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

Машинное обучение Azure предлагает два следующих варианта работы с автоматизированным машинным обучением:

  • Для опытных клиентов - пакет SDK для Python для машинного обучения Azure.
  • Для клиентов с ограниченным опытом или без кода, студия машинного обучения Azure.

В этой статье я покажу, как использовать пакет SDK для Python для машинного обучения Azure для использования автоматизированного машинного обучения в Azure. Если вы используете облачный вычислительный экземпляр машинного обучения Azure, вы готовы приступить к программированию с помощью записной книжки Jupyter или JupyterLab. Дополнительную информацию о настройке среды разработки для машинного обучения Azure можно найти на странице https://docs.microsoft.com/en-us/azure/machine-learning/how-to-configure-environment.

Вы также можете перейти по следующим ссылкам, чтобы настроить рабочую область машинного обучения Azure и узнать, как использовать записные книжки Jupyter в Машинном обучении Azure:

Более того, цель вычислений требуется для выполнения удаленного запуска вашего автоматизированного эксперимента машинного обучения. Машинное обучение Azure - это управляемая вычислительная инфраструктура, которая позволяет создавать одно- или многоузловые вычисления. Чтобы узнать больше о том, как настроить и использовать вычислительные цели для обучения модели, вы можете посетить: docs.microsoft.com/en-us/azure/machine-learning/how-to-set-up-training-targets.

Автоматизированное машинное обучение для сценариев временных рядов

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

Следующие примеры на Python показывают, как делать следующее:

  • Подготовьте данные для прогнозирования временных рядов с помощью автоматизированного машинного обучения.
  • Настройте параметры конкретных временных рядов в объекте AutoMLConfig с помощью «AutoMLConfig».
  • Обучите модель с помощью AmlCompute, инфраструктуры управляемых вычислений, которая позволяет легко создавать одно- или многоузловые вычисления.

В этом примере автоматизированного машинного обучения используется набор данных о потреблении энергии в Нью-Йорке (mis.nyiso.com/public/P-58Blist.htm). Набор данных включает данные о потреблении в Нью-Йорке, хранящиеся в табличном формате, и включает в себя данные о потреблении энергии и численные характеристики погоды с почасовой частотой. Целью этого эксперимента является прогнозирование спроса на энергию в Нью-Йорке на следующие 24 часа путем создания решения для прогнозирования, которое использует исторические данные об энергии из того же географического региона.

Если вы заинтересованы в изучении дополнительных общедоступных наборов данных и функций (таких как погода, спутниковые снимки или социально-экономические данные) и добавлении их в этот набор данных по энергетике, чтобы повысить точность ваших моделей машинного обучения, я рекомендую проверить каталог открытых наборов данных Azure ( Www.aka.ms/AzureOpenDatasetsCatalog). Этот каталог содержит коллекцию общедоступных наборов данных, которые специалисты по данным могут использовать для решений моделей машинного обучения. Включение функций из тщательно подобранных наборов данных в ваши модели машинного обучения может повысить точность прогнозов и сократить время подготовки данных.

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

Для задач прогнозирования автоматизированное машинное обучение использует этапы предварительной обработки и оценки, специфичные для данных временных рядов. Сначала он определяет частоту выборки временных рядов (например, ежечасно, ежедневно, еженедельно) и создает новые записи для отсутствующих временных точек, чтобы сделать ряд непрерывным. Затем он вменяет отсутствующие значения в столбцы для цели (с помощью прямого заполнения) и функции (с использованием средних значений столбца) и создает функции на основе зернистости, чтобы включить фиксированные эффекты для разных серий. Наконец, он создает основанные на времени функции для помощи в изучении сезонных закономерностей и кодирует категориальные переменные в числовые величины (чтобы узнать больше об этом процессе, посетите www.aka.ms/AutomatedML).

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

В приведенном ниже коде показано, как установить эти параметры в Python. В частности, вы используете параметр blocked_models, чтобы исключить некоторые модели. Вы можете удалить модели из списка blocked_models и увеличить значение параметра эксперимент_timeout_hours, чтобы увидеть результаты автоматизированного машинного обучения:

# Automated ML configuration 
automl_settings = {'time_column_name': time_column_name,    
                  'max_horizon': max_horizon,} 
automl_config = AutoMLConfig(task='forecasting', primary_metric='normalized_root_mean_squared_error', 
blocked_models = ['ExtremeRandomTrees', 'AutoArima', 'Prophet'],
experiment_timeout_hours=0.3,
training_data=train,
label_column_name=target_column_name,  compute_target=compute_target,
enable_early_stopping=True,
n_cross_validations=3,
verbosity=logging.INFO,
**automl_settings)

Теперь мы вызываем метод submit для объекта эксперимента и передаем конфигурацию запуска. В зависимости от данных и количества итераций это может продолжаться некоторое время. Вы можете указать show_output = True, чтобы выводить текущие итерации на консоль:

# Initiate the remote run 
remote_run = experiment.submit(automl_config, show_output=False) 
remote_run

Ниже мы выбираем лучшую модель из всех итераций обучения с помощью метода get_output:

# Retrieve the best model 
best_run, fitted_model = remote_run.get_output() 
fitted_model.steps

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

# Make predictions using test data
X_test = test.to_pandas_dataframe().reset_index(drop=True) 
y_test = X_test.pop(target_column_name).values

Для прогнозирования мы будем использовать функцию Python прогноз, как показано в следующем примере кода:

# Apply the forecast function 
y_predictions, X_trans = fitted_model.forecast(X_test)

Вывод

В этой статье я показал, как обучить модель регрессии прогнозирования временных рядов с использованием методов авторегрессии и автоматизированного машинного обучения в Машинном обучении Azure. Автоматизированное машинное обучение позволяет специалистам по данным, аналитикам и разработчикам создавать модели машинного обучения с высоким масштабом, эффективностью и производительностью, сохраняя при этом качество моделей.

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

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

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

использованная литература

Франческа Лаззери находится в LinkedIn и Twitter.