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 здесь.
Благодаря Джулианне Форго