Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast

Этот пост является совместной работой с Андрисом Энгельбрехтом и Джеймсом Саном из Snowflake, Inc.

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

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

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

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

Основные сервисы AWS, поддерживающие это решение

Forecast предоставляет несколько современных алгоритмов временных рядов и управляет выделением достаточного количества распределенных вычислительных ресурсов для удовлетворения потребностей практически любой рабочей нагрузки. С Forecast вы не получаете одну модель; вы получаете силу многих моделей, которые дополнительно оптимизируются в уникально взвешенную модель для каждого временного ряда в наборе. Короче говоря, сервис предоставляет всю науку, обработку данных и управление ресурсами в простом вызове API.

Шаговые функции AWS предоставляет механизм оркестрации процессов, который управляет общим рабочим процессом. Сервис инкапсулирует вызовы API с помощью Амазонка Афина, AWS Lambdaи Прогноз для создания автоматизированного решения, которое собирает данные из Snowflake, использует прогноз для преобразования исторических данных в прогнозы на будущее, а затем создает данные внутри Snowflake.

Федеративные запросы Athena могут подключаться к нескольким корпоративным источникам данных, включая Amazon DynamoDB, Амазонка Redshift, Сервис Amazon OpenSearch, MySQL, PostgreSQL, Redis и другие популярные сторонние хранилища данных, такие как Snowflake. Коннекторы данных работают как функции Lambda — вы можете использовать этот исходный код, чтобы помочь запустить Соединитель Amazon Athena Lambda Snowflake и подключиться к Приватная ссылка AWS или через шлюз NAT.

Обзор решения

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

  1. Экспорт данных из Snowflake. Вы можете использовать гибкие метаданные для выгрузки необходимых исторических данных, управляемых готовым рабочим процессом.
  2. Импорт данных в Прогноз. Независимо от варианта использования, отрасли или масштаба импорт подготовленных входных данных прост и автоматизирован.
  3. Обучите современную модель временных рядов. Вы можете автоматизировать прогнозирование временных рядов, не управляя базовой наукой о данных или предоставлением оборудования.
  4. Сгенерируйте вывод относительно обученной модели. Результаты прогнозирования легко использовать для любых целей. Они доступны в виде простых файлов CSV или Parquet на Простой сервис хранения Amazon (Amazon S3).
  5. Используйте историю и предсказания будущего одновременно прямо в Snowflake.

На следующей диаграмме показано, как реализовать автоматизированный рабочий процесс, который позволяет клиентам Snowflake получать выгоду от высокоточных прогнозов временных рядов, поддерживаемых Forecast, управляемым сервисом AWS. Предлагаемый здесь дизайн, выходящий за рамки варианта использования и отрасли, сначала извлекает исторические данные из Snowflake. Затем рабочий процесс отправляет подготовленные данные для расчета временных рядов. Наконец, в Snowflake изначально доступны прогнозы на будущие периоды, что обеспечивает удобный пользовательский интерфейс для совместных клиентов AWS и Snowflake.

Хотя в этой архитектуре выделяются только ключевые технические детали, решение легко собрать, иногда в течение 1–2 рабочих дней. Мы предоставляем вам рабочий пример кода, чтобы помочь вам избавиться от монотонной тяжелой работы по созданию решения в одиночку и без предварительного старта. После того, как вы узнаете, как реализовать этот шаблон для одной рабочей нагрузки, вы можете повторить процесс прогнозирования для любых данных, хранящихся в Snowflake. В следующих разделах мы описываем ключевые шаги, которые позволят вам создать автоматизированный конвейер.

Извлечение исторических данных из Snowflake

На этом первом шаге вы используете SQL, чтобы определить, какие данные вы хотите спрогнозировать, и позволяете Athena Federated Query подключиться к Snowflake, запустить свой собственный SQL и сохранить полученный набор записей в Amazon S3. Прогноз требует, чтобы исторические данные обучения были доступны в Amazon S3 до загрузки; поэтому Amazon S3 служит промежуточным буфером хранения между Snowflake и Forecast. Мы используем Athena в этом дизайне, чтобы включить Snowflake и другие разнородные источники данных. Если вы предпочитаете другой подход, используйте команду Snowflake COPY и интеграцию с хранилищем для записи результатов запроса в Amazon S3.

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

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

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Хотя на этом снимке экрана показано, как данные выглядят в естественном состоянии, прогноз требует, чтобы данные были разделены на три разных набора данных:

  • Целевой временной ряд – Это обязательный набор данных, содержащий целевую переменную, который используется для обучения и прогнозирования будущего значения. Сам по себе этот набор данных служит моделью одномерного временного ряда.
  • Связанные временные ряды – Это необязательный набор данных, содержащий временные переменные, которые должны быть связаны с целевой переменной. Примеры включают переменные цены, рекламные акции, трафик гиперлокальных событий, данные об экономических перспективах — все, что, по вашему мнению, может помочь объяснить отклонения в целевых временных рядах и дать более точный прогноз. Связанный набор данных временных рядов превращает вашу одномерную модель в многомерную, чтобы повысить точность.
  • Метаданные элемента – Это необязательный набор данных, содержащий категориальные данные о прогнозируемом элементе. Метаданные элемента часто помогают повысить производительность недавно запущенных продуктов, которые мы называем холодный запуск.

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

Начнем с запроса целевого временного ряда:

select LOCATION_ID, ITEM_ID, 
DATE_DEMAND as TIMESTAMP, QTY_DEMAND as TARGET_VALUE 
from DEMO.FOOD_DEMAND

Необязательный запрос связанных временных рядов извлекает ковариаты, такие как цена и рекламные акции:

select LOCATION_ID,ITEM_ID, DATE_DEMAND as TIMESTAMP,
CHECKOUT_PRICE, BASE_PRICE,
EMAILER_FOR_PROMOTION, HOMEPAGE_FEATURED
from DEMO.FOOD_DEMAND

Запрос метаданных элемента извлекает отдельные категориальные значения, которые помогают дать измерение и дополнительно определить прогнозируемый элемент:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

Определив исходные запросы, мы можем подключиться к Snowflake через федеративный запрос Athena, чтобы отправить запросы и сохранить полученные наборы данных для использования в прогнозах. Для получения дополнительной информации см. Запрашивайте Snowflake с помощью Athena Federated Query и присоединяйтесь к данным в озере данных Amazon S3.

Ассоциация Репозиторий Athena Snowflake Connector на GitHub помогает установить коннектор Snowflake. Прогноз MLOps, репозиторий GitHub помогает организовать все шаги макроса, определенные в этом посте, и делает их повторяемыми без написания кода.

Импорт данных в Прогноз

После завершения предыдущего шага целевой набор данных временных рядов находится в Amazon S3 и готов к импорту в прогноз. Кроме того, необязательные связанные наборы данных временных рядов и метаданных элементов также могут быть подготовлены и готовы к приему. С предоставленным Прогнозное решение MLOps, все, что вам нужно сделать здесь, это инициировать конечный автомат Step Functions, отвечающий за импорт данных — никакого кода не требуется. Прогноз запускает кластер для каждого из предоставленных вами наборов данных и готовит данные для использования службой для построения модели машинного обучения и вывода модели.

Создайте модель машинного обучения временных рядов со статистикой точности

После импорта данных высокоточные модели временных рядов создаются простым вызовом API. Этот шаг инкапсулирован внутри конечного автомата Step Functions, который инициирует Forecast API для запуска обучения модели. После обучения модели предиктора конечный автомат экспортирует статистику модели и прогнозы во время окна тестирования на исторических данных в Amazon S3. Snowflake может запрашивать экспортные данные бэктеста как внешнюю стадию, как показано на следующем снимке экрана. Если вы предпочитаете, вы можете хранить данные на внутреннем этапе. Суть в том, чтобы использовать метрики бэктестинга для оценки разброса производительности временных рядов в предоставленном наборе данных.

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Создавайте прогнозы на будущее

С моделью, обученной на предыдущем шаге, специально созданный конечный автомат Step Functions вызывает API-интерфейс Forecast для создания прогнозов с датой будущего. Прогноз подготавливает кластер для выполнения вывода и извлекает импортированные целевые временные ряды, связанные временные ряды и наборы данных метаданных элементов через именованную модель предиктора, созданную на предыдущем шаге. После создания прогнозов конечный автомат записывает их в Amazon S3, где их снова можно запросить на месте как внешний этап Snowflake или переместить в Snowflake как внутренний этап.

Используйте прогнозные данные с датой будущего прямо в Snowflake

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

В следующем фрагменте кода показано, как запрашивать данные Amazon S3 непосредственно из Snowflake:

CREATE or REPLACE FILE FORMAT mycsvformat
type = 'CSV'
field_delimiter = ','
empty_field_as_null = TRUE
ESCAPE_UNENCLOSED_FIELD = None
skip_header = 1;

CREATE or REPLACE STORAGE INTEGRATION amazon_forecast_integration
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = S3
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::nnnnnnnnnn:role/snowflake-forecast-poc-role'
ENABLED = true
STORAGE_ALLOWED_LOCATIONS = (
's3://bucket/folder/forecast',
's3://bucket/folder/backtest-export/accuracy-metrics-values',
's3://bucket/folder/backtest-export/forecasted-values';

CREATE or REPLACE STAGE backtest_accuracy_metrics
storage_integration = amazon_forecast_integration
url = 's3://bucket/folder/backtest-export/accuracy-metrics-values'
file_format = mycsvformat;

CREATE or REPLACE EXTERNAL TABLE FOOD_DEMAND_BACKTEST_ACCURACY_METRICS (
ITEM_ID varchar AS (value:c1::varchar),
LOCATION_ID varchar AS (value:c2::varchar),
backtest_window varchar AS (value:c3::varchar),
backtestwindow_start_time varchar AS (value:c4::varchar),
backtestwindow_end_time varchar AS (value:c5::varchar),
wQL_10 varchar AS (value:c6::varchar),
wQL_30 varchar AS (value:c7::varchar),
wQL_50 varchar AS (value:c8::varchar),
wQL_70 varchar AS (value:c9::varchar),
wQL_90 varchar AS (value:c10::varchar),
AVG_wQL varchar AS (value:c11::varchar),
RMSE varchar AS (value:c12::varchar),
WAPE varchar AS (value:c13::varchar),
MAPE varchar AS (value:c14::varchar),
MASE varchar AS (value:c15::varchar)
)
with location = @backtest_accuracy_metrics
FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = ',' SKIP_HEADER = 1);

Дополнительные сведения о настройке разрешений см. Вариант 1. Настройка интеграции хранилища Snowflake для доступа к Amazon S3. Кроме того, вы можете использовать Каталог сервисов AWS настроить интеграцию с хранилищем Amazon S3; более подробная информация доступна на Репо GitHub.

Инициировать рабочий процесс на основе расписания или событий

После того как вы установите решение для своей конкретной рабочей нагрузки, последним шагом будет автоматизация процесса по расписанию, подходящему для ваших уникальных требований, например, ежедневно или еженедельно. Главное – решить, как начать процесс. Один из методов заключается в использовании Snowflake для вызова конечного автомата Step Functions, а затем последовательной организации шагов. Другой подход заключается в объединении конечных автоматов в цепочку и запуске общего прогона через Amazon EventBridge правило, которое можно настроить для запуска из события или запланированной задачи, например, в 9:00 по Гринвичу-8 каждое воскресенье вечером.

Заключение

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

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


Об авторах

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Боско Альбукерке является старшим архитектором партнерских решений в AWS и имеет более чем 20-летний опыт работы с базами данных и аналитическими продуктами от поставщиков корпоративных баз данных и облачных провайдеров. Он помогал технологическим компаниям разрабатывать и внедрять решения и продукты для анализа данных.

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Фрэнк Даллезотт является старшим архитектором решений в AWS и увлечен работой с независимыми поставщиками программного обеспечения для проектирования и создания масштабируемых приложений на AWS. У него есть опыт создания программного обеспечения, внедрения конвейеров сборки и развертывания этих решений в облаке.

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Андрис Энгельбрехт является главным архитектором партнерских решений в Snowflake и работает со стратегическими партнерами. Он активно сотрудничает со стратегическими партнерами, такими как AWS, поддерживая интеграцию продуктов и услуг, а также разрабатывая совместные решения с партнерами. Андрис имеет более чем 20-летний опыт работы в области данных и аналитики.

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Чарльз Лафлин является главным архитектором решений, специализирующимся на искусственном интеллекте и машинном обучении, и работает в команде машинного обучения временных рядов в AWS. Он помогает формировать дорожную карту сервиса Amazon Forecast и ежедневно сотрудничает с различными клиентами AWS, помогая трансформировать их бизнес с помощью передовых технологий AWS и идейного лидерства. Чарльз имеет степень магистра в области управления цепочками поставок и последние десять лет работал в индустрии потребительских товаров.

Автоматизируйте прогнозирование временных рядов в Snowflake с помощью Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Джеймс Сан является старшим архитектором партнерских решений в Snowflake. Джеймс имеет более чем 20-летний опыт работы в области хранения и анализа данных. До Snowflake он занимал несколько руководящих технических должностей в AWS и MapR. Джеймс имеет докторскую степень Стэнфордского университета.

Отметка времени:

Больше от Машинное обучение AWS