AutoAI в IBM Cloud Pak for Data as a Service недавно представил новую функцию для данных временных рядов — вспомогательные функции, также известные как экзогенные функции. Теперь вы можете использовать вспомогательные функции, чтобы предоставить контекст для прогноза. Например, если вы прогнозируете доход от продаж с течением времени, вы можете включить скидки и рекламные акции в качестве вспомогательных функций, чтобы сделать прогнозы более точными.

Позвольте мне продемонстрировать, как вы можете использовать IBM AutoAI Python API, чтобы легко включать вспомогательные функции при обучении модели с использованием данных PM2,5 для более точного прогнозирования уровней загрязнения воздуха на следующие несколько дней.

Настройка среды

Для работы с AutoAI для временных рядов у вас должен быть экземпляр Watson Machine Learning service (входит в бесплатный план Cloud Pak для данных как услуги). Watson Machine Learning предоставляет интерфейс Python через пакет ibm-watson-machine-learning (доступен на pypi). Вы можете легко установить пакет, выполнив следующую команду pip:

pip install ibm-watson-machine-learning

Затем вы должны предоставить информацию для аутентификации для инициализации клиента Python.

from ibm_watson_machine_learning import APIClient
client = APIClient(credentials)

Набор данных временного ряда

Исходный почасовой набор данных содержит данные о PM2,5 посольства США в Пекине. Кроме того, включены метеорологические данные из Пекинского столичного международного аэропорта. Подготовленный набор данных формируется путем объединения почасовых и ежедневных данных, которые отслеживают загрязнение с 1 января 2010 г. по 30 ноября 2014 г. Имеется 8 столбцов: дата, загрязнение, роса, температура, давление, wnd_spd (скорость ветра), снег, и дождь. Столбец даты используется для сортировки данных временного ряда, загрязнение — это столбец прогноза, а остальные столбцы включены в качестве вспомогательных функций для поддержки прогноза.

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

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

AutoAI для временных рядов

Используя Python API, мы можем легко определить эксперимент AutoAI для данных временных рядов. Мы определим следующие параметры для оптимизатора нашего эксперимента:

· name - название эксперимента

· prediction_type — тип задачи — в данном случае временной ряд

· prediction_columns — имена/индексы целевых столбцов

· timestamp_column_name — имя/индекс столбца даты и времени

· feature_columns – имена/индексы столбцов вспомогательных функций

· forecast_window — прогнозируемый диапазон дат/времени в будущем

· holdout_size - количество удерживаемых записей

· lookback_window – прошлый диапазон дат/времени, используемый для обучения модели, -1 означает автоматическое определение

· backtest_num – количество бэктестов

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

· pipeline_types – указать отдельный или группу трубопроводов по типу

Теперь вызовите метод fit(), чтобы запустить задание обучения.

После завершения обучения мы можем перечислить все потенциальные модели, обученные для нас AutoAI.

Мы можем получить информацию о каждом конвейере, вызвав метод get_pipeline_details().

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

Pipeline_4 — лучшая модель, возвращенная AutoAI. Итак, мы сохраним Pipeline 4 как модель для развертывания и скоринга.

Развертывание и оценка

В этом разделе мы развернем лучшую модель конвейера в виде веб-сервиса или онлайн-развертывания. Затем мы будем использовать конечную точку оценки веб-сервиса для прогнозирования прогнозов на следующие 7 дней.

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

Мы можем визуализировать значения прогноза на следующие 7 дней вместе с наблюдаемыми и прогнозируемыми значениями на данных удержания для лучшего сравнения.

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

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

Перейдите в IBM Cloud и проверьте эту новую функцию.
Вы также можете найти образцы блокнотов AutoAI здесь.

Благодаря Джулианне Форго