Развертывание, обучение и выводы для прогнозирования в Snowflake стали проще благодаря Modelstar

Что такое прогнозирование и варианты его использования?

Прогнозирование продаж является рудиментарным для управления бизнесом

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

Технические вызовы для прогнозирования будущего

Прогнозирование продаж — это приложение анализа временных рядов. Есть несколько компонентов, которые следует учитывать:

  • Сезонность: периодические изменения во времени. Пример: летние и зимние каникулы — ежегодные, или повышенное потребление кофе по утрам — ежедневно.
  • Тренд: непрерывные непериодические изменения. Пример: Рост продаж компании за последние 5 лет.
  • Разрушительные события: внезапные изменения. Это может быть вызвано как предсказуемыми факторами, такими как праздники или сервисное обслуживание, так и непредсказуемыми проблемами, такими как случайные ошибки или ошибки.

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

SQL 1-liner для прогнозирования

Modelstar позволяет отправлять модели прогнозирования и управлять ими, а также визуализировать результаты моделирования с помощью одной строки SQL внутри Snowflake. Под капотом Modelstar предоставляет предварительно созданные алгоритмы прогнозирования и предоставляет их как хранимую процедуру SQL в вашей базе данных. В этом примере мы будем использовать univariate_time_series_forecast (API doc). Этот API основан на библиотеке с открытым исходным кодом Prophet, которая является одним из наиболее широко используемых алгоритмов прогнозирования в отрасли.

Modelstar построен на недавно запущенных функциях Snowflake и DBT, таких как Snowpark и DBT Python Model. Он автоматически обрабатывает файловый ввод-вывод в вычислениях Snowflake, зависимостях и артефактах модели.

В этом руководстве представлены шаги по созданию модели прогнозирования продаж и отчета. Это охватывает:

  • Основная концепция: о вариантах использования и технологиях прогнозирования продаж.
  • Инструмент Modelstar CLI: руководство по установке Modelstar
  • univariate_time_series_forecast Синтаксис SQL: однострочный SQL для составления прогноза
  • Отчет о прогнозировании: результаты прогнозов готовы для использования бизнес-группами.

К концу этого примера вы будете знать, как обучить модель прогноза внутри Snowflake и создать отчет, показывающий производительность модели следующим образом:

Подготовка к переходу на SQL ML

Это краткое руководство по настройке Modelstar, если вы впервые пользуетесь Modelstar.

Шаг №1: Установите Modelstar

$ pip install modelstar

Подтвердите установку проверкой версии

$ modelstar --version

Шаг № 2: Инициализируйте проект Modelstar

$ modelstar init sales_forecast

СОВЕТ.modelstar init <project_name> — это базовая команда, где <project_name> можно заменить любым именем по вашему выбору.

Вы увидите папку sales_forecast, созданную в вашем рабочем каталоге.

Шаг № 3: Настройка сеанса Snowflake

Внутри папки sales_forecast найдите файл modelstar.config.yaml и откройте его в своем любимом редакторе. Добавьте в него данные своей учетной записи Snowflake и учетные данные. Не стесняйтесь называть сеанс любым именем. В этом примере мы используем snowflake-test. Credentaisl в этом файле используется для подключения к вашему хранилищу данных Snowflake.

# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
    - name: snowflake-test
      connector: snowflake
      config:
          account: WQA*****
          username: <username>
          password: <password>
          database: MODELSTAR_TEST
          schema: PUBLIC
          stage: test
          warehouse: COMPUTE_WH

ПРИМЕЧАНИЕ. Создайте этап в базе данных хранилища Snowflake и укажите его здесь в конфигурации.

Шаг № 4: Пингуем Snowflake

Теперь мы можем начать сеанс Modelstar с вашего терминала. Внутри каталога только что сгенерированного проекта Modelstar (в нашем примере это ./sales_forecast/) выполните следующее:

$ modelstar use snowflake-test

СОВЕТ: modelstar use <session name> — это команда, если вы указали другое имя сеанса, используйте его для замены <session name>.

Успешный пинг должен привести к чему-то вроде этого:

Шаг № 5: Зарегистрируйте алгоритм прогноза в Snowflake

Modelstar предоставляет готовый алгоритм прогнозирования и управляет зависимостями для этого алгоритма, так что вам не придется этого делать. Чтобы сделать это доступным на вашем складе Snowflake, выполните следующую команду:

$ modelstar register forecast:univariate_time_series_forecast

Сообщение об успехе выглядит так:

Шаг № 6: Загрузите образцы данных о продажах в Snowflake

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

$ modelstar create table sample_data/sales.csv:SALES

Эта команда загружает файл sales.csv в Snowflake и создает таблицу под названием ПРОДАЖИ. Узнайте больше об этом API здесь.

Построить модель прогноза с помощью SQL 1-linear

Запустите этот скрипт в рабочей таблице Snowflake

Используйте следующую команду в Snowflake для построения модели прогнозирования (в приведенном ниже примере используются образцы данных, загруженные на шаге № 6):

CALL UNIVARIATE_TIME_SERIES_FORECAST('SALES', 'DS', 'Y', 40, 'M');

Это означает: предсказать следующие 40 M (месяцев) значения Y на основе исторических данных в таблице SALES, где DS — столбец времени.

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

Под капотом алгоритм прогноза работает внутри Snowflake как хранимая процедура. Он принимает следующие параметры:

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

Проверить результат

После завершения обучения модели в окне «Результаты снежинки» успешный запуск должен вывести строку json, подобную этой:

{
    "return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
    "run_id": "3NvQXnHQqUdYG4Fu"
}

Это означает, что таблица с именем «RESULT_UNIVARIATE_TIME_SERIES_FORECAST» была создана для материализации данных прогноза, а идентификатор запуска («3NvQXnHQqUdYG4Fu») может помочь вам получить отчет о прогнозе.

Проверьте таблицу данных прогноза

Давайте проверим таблицу результатов прогона, используя:

SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;

В таблице 4 столбца:

  • DS (дата/время): время
  • Y_FORECAST, YHAT_LOWER, YHAT_UPPER (с плавающей запятой): средняя, ​​нижняя и верхняя связи прогнозируемого значения (см. Uncertainty Intervals в разделе "Глоссарий" для их значения).

Проверьте прогнозный отчет

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

$ modelstar check <run_id>

В вашем терминале должно появиться следующее сообщение:

Как уже упоминалось, в вашем браузере появится отчет:

Что в отчете

Отчет включает 3 раздела:

  • Метаинформация об этом прогоне

  • Диаграмма прогнозирования: для проверки качества моделирования и результатов прогнозирования.

  • Компонентный анализ: чтобы проиллюстрировать тенденцию и сезонность, которую «изучила» ваша модель, включая общую тенденцию, а также годовую и еженедельную сезонность (циклические закономерности в течение 1 года/недели).

ГЛОССАРИЙ:

Прогноз внутри выборки и вне выборки. На основе прогноза в выборке можно проверить, насколько хорошо модель прогноза соответствует фактическим данным. Прогноз вне выборки показывает предсказание будущего.

Интервалы неопределенности: полоса между верхней и нижней границами. Это означает, что с вероятностью 80% истинное значение попадает в этот интервал. Более высокое требование определенности приводит к более широкому диапазону (см. Статья Бартоша). Неопределенность также растет по мере того, как мы продвигаемся дальше в будущее, что приводит к расширению полосы как функции времени.

Заключение

Прогнозирование продаж является рудиментарным для управления бизнесом. Наша цель состояла в том, чтобы отправить функцию прогнозирования в Snowflake для обучения модели машинного обучения и создания прогнозов с ее использованием. Всего этого мы добились всего одной строкой SQL. Наряду с этим создается отчет о прогоне, содержащий подробную информацию о прогоне вместе с прогнозным анализом. Это стало возможным благодаря Modelstar.

Ознакомьтесь с репозиторием Modelstar на GitHub: здесь, пометьте его звездочкой, чтобы быть в курсе последних обновлений. В случае ошибок, проблем или запросов функций для вашего варианта использования обратитесь на Github или откройте проблему на GitHub.