Прогнозирование спроса, управление цепочками поставок и запасами, финансовое планирование важны для бизнес-операций. Modelstar позволяет вам сделать это в Snowflake всего с одной строкой SQL.
Что такое прогнозирование временных рядов и варианты его использования?
Прогнозирование временных рядов — это метод прогнозирования значений на основе исторических данных, отобранных по времени.
Прогнозирование является рудиментарным для управления бизнесом
Прогнозирование может помочь компаниям принимать правильные бизнес-решения по управлению цепочками поставок, управлению запасами (сколько и когда пополнять запасы), финансовому планированию, плану продуктов, стратегии найма и т. д. При наличии точных и своевременных результатов прогнозирования управление бизнесом может иметь лучшее понимание того, как распределять ресурсы или использовать попутный ветер.
Технические проблемы прогнозирования
Прогнозирование — это применение анализа временных рядов. Есть несколько компонентов, которые следует учитывать:
- Сезонность: периодические изменения во времени. Пример: летние и зимние каникулы — ежегодные, или повышенное потребление кофе по утрам — ежедневно.
- Тренд: непрерывные непериодические изменения. Пример: Рост продаж компании за последние 5 лет.
- Разрушительные события: внезапные изменения. Это может быть вызвано как предсказуемыми факторами, такими как праздники или сервисное обслуживание, так и непредсказуемыми проблемами, такими как случайные ошибки или ошибки.
Хороший алгоритм прогнозирования должен охватывать большинство компонентов и статистически делать прогнозы с определенным уровнем достоверности.
Технические проблемы внедрения
Python имеет богатую экосистему для реализации алгоритмов машинного обучения и прогнозирования. Новая функция Snowflake Snowpark, которая переносит Python в ваше хранилище данных, используя UDF для запуска Python в SQL, меняет правила игры в отношении преобразований, которые вы можете выполнять с вашими данными. Тем не менее, это может быть сложно и занять много времени, если вы хотите внедрить комплексное решение для выполнения прогнозирования. Modelstar решает эту проблему, предоставляя оптимизированное решение для переноса сверхспособностей Python в SQL.
Modelstar — это проект с открытым исходным кодом, основанный на недавно запущенных функциях Snowflake, таких как Snowpark. Он автоматически обрабатывает зависимости, артефакты модели и ввод-вывод файлов в вычислениях Snowflake.
SQL 1-liner для прогнозирования
Modelstar позволяет отправлять модели прогнозирования и управлять ими, а также визуализировать результаты моделирования с помощью 1 строки SQL внутри Snowflake. Под капотом Modelstar предоставляет предварительно созданные алгоритмы прогнозирования и предоставляет их как хранимую процедуру SQL в вашей базе данных. В этом примере мы будем использовать univariate_time_series_forecast
(API doc). Этот API основан на библиотеке с открытым исходным кодом Prophet, которая является одним из наиболее широко используемых алгоритмов прогнозирования в отрасли.
В этом руководстве представлены шаги для создания модели прогнозирования временных рядов и отчета. Это охватывает:
- Основная концепция: о вариантах использования и технологиях прогнозирования продаж.
- Инструмент Modelstar CLI: руководство по установке Modelstar
univariate_time_series_forecast
Синтаксис SQL: однострочный SQL для составления прогноза- Отчет о прогнозировании: результаты прогнозов готовы для использования бизнес-группами.
К концу этого примера вы будете знать, как обучить модель прогноза внутри Snowflake и создать отчет, показывающий производительность модели следующим образом:
Подготовка к переходу на SQL ML
Это краткое руководство по настройке Modelstar, если вы впервые пользуетесь Modelstar.
Шаг №1: Установите Modelstar
$ pip install modelstar
СОВЕТ. Мы рекомендуем использовать виртуальную среду для управления зависимостями. Вот краткий обзор того, как начать работу: Среды Python.
Проверьте установку с помощью быстрой проверки версии:
$ modelstar --version
Это должно отобразить номер версии в вашем терминале.
Шаг № 2: Инициализируйте проект Modelstar
$ modelstar init forecast_project
СОВЕТ.
modelstar init <project_name>
— это базовая команда, где<project_name>
можно заменить любым именем по вашему выбору.
Теперь вы увидите папку forecast_project
, созданную в вашем рабочем каталоге.
Шаг № 3: Настройка сеанса Snowflake
Внутри папки forecast_project
найдите файл modelstar.config.yaml
и откройте его в своем любимом редакторе. Добавьте в него данные своей учетной записи Snowflake и учетные данные. Не стесняйтесь называть сеанс любым именем. В этом примере мы используем snowflake-test
. Учетные данные в этом файле используются для подключения к вашему хранилищу данных Snowflake. (Примечание. Не фиксируйте файл modelstar.config.yaml в своем CI/CD, системе управления версиями.)
# ./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 (в нашем примере это ./forecast_project/
) выполните следующее:
$ 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/time_series_data.csv:TS_DATA_TABLE
Эта команда загружает файл time_series_data.csv
в Snowflake и создает таблицу с именем ‘TS_DATA_TABLE’
. Узнайте больше об этом API здесь.
Построить модель прогноза с помощью SQL 1-linear
Запустите этот скрипт в рабочей таблице Snowflake
Используйте следующую команду в Snowflake для построения модели прогнозирования (в приведенном ниже примере используются образцы данных, загруженные на шаге № 6):
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');
Это означает: предсказать следующие 40
M
(месяцев) значения Y
на основе исторических данных в таблице TS_DATA_TABLE
, где 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
(datetime
): дата и времяY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(с плавающей запятой): средняя, нижняя и верхняя связи прогнозируемого значения (см.Uncertainty Intervals
в разделе «Глоссарий» для их значения).
Проверить прогнозный отчет
Отчет, который записывает информацию о запуске с артефактами машинного обучения, автоматически создается с помощью Modelstar. Чтобы проверить отчет, просто запустите эту команду на локальном компьютере:
$ modelstar check <run_id>
В вашем терминале должно появиться следующее сообщение:
Как уже упоминалось, в вашем браузере появится отчет:
Что в отчете
Отчет включает 3 раздела:
- Метаинформация об этом прогоне
- Диаграмма прогнозирования: для проверки качества моделирования и результатов прогнозирования.
- Компонентный анализ: чтобы проиллюстрировать тенденцию и сезонность, которую «изучила» ваша модель, включая общую тенденцию, а также годовую и еженедельную сезонность (циклические закономерности в течение 1 года/недели).
ГЛОССАРИЙ
Прогноз в выборке и вне выборки. На основе прогноза в выборке можно проверить, насколько хорошо модель прогноза соответствует фактическим данным. Прогноз вне выборки показывает предсказание будущего.
Интервалы неопределенности: полоса между верхней и нижней границами. Это означает, что с вероятностью 80% истинное значение попадает в этот интервал. Более высокое требование определенности приводит к более широкому диапазону (см. Статья Бартоша). Неопределенность также растет по мере того, как мы продвигаемся дальше в будущее, что приводит к расширению полосы как функции времени.
Заключение
Прогнозирование является рудиментарным для управления бизнесом. Наша цель состояла в том, чтобы отправить функцию прогнозирования в Snowflake для обучения модели машинного обучения и создания прогнозов с ее использованием. Всего этого мы добились всего одной строкой SQL. Наряду с этим создается отчет о прогоне, содержащий подробную информацию о прогоне вместе с прогнозным анализом. Это стало возможным благодаря компании Modelstar.
Проверьте репозиторий GitHub: здесь от Modelstar, пометьте его звездочкой, чтобы быть в курсе последних обновлений. В случае ошибок, проблем или запросов функций для вашего варианта использования обратитесь на Github или откройте проблему на GitHub.
- Репозиторий GitHub: https://github.com/modelstar-labs/modelstar
- Документация: https://modelstar.io/docs/quickstart/