Развертывание, обучение и выводы для прогнозирования в 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.
- Репозиторий GitHub: https://github.com/modelstar-labs/modelstar
- Документация: https://modelstar.io/docs/quickstart/