Задний план

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

Также включено несколько сравнений функций прогнозирования в RemixAutoML с функциями прогнозирования Neural Prophet, популярного пакета прогнозирования на Python.

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

Для тех, кто хочет сразу перейти к коду, в конце статьи есть сценарий R с примером настройки функции вне образца для оптимизации функции AutoCatBoostCARMA (). Не стесняйтесь адаптировать его к своему сценарию использования.

Обработка данных

Пакет написан на R, доступен на GitHub и использует data.table для всех внутренних операций обработки данных, что означает, что функции могут обрабатывают большие данные, они могут обрабатывать их как можно быстрее, и они могут делать это с минимальным объемом памяти. Взгляните на производительность data.table по сравнению с другими фреймворками, такими как Pandas, DataFrames.jl (идет хороший прогресс!), Dplyr, Spark и другими.

Сравнительное сравнение обработки данных в R, Python, Julia, Spark и некоторых других.

Модели ML

Используемые алгоритмы машинного обучения включают CatBoost, XGBoost и H2O. Версия H2O имеет 6 базовых алгоритмов на выбор: Gradient Boosting Machine, Distributed Random Forest, Generalized Additive Model, Generalized Linear Model, Deep Learning и их подпрограмма AutoML, которая включает составной ансамбль. (Я подумываю о добавлении LightGBM в микс в будущем, но я открыт для других предложений)

Если вы хотите изучить другие методы, доступные в пакете, ознакомьтесь с примерами в GitHub README или в справочном руководстве по пакету.

Перечень методов прогнозирования

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

  1. Панельные методы позволяют прогнозировать по категориальным переменным, так что вы можете прогнозировать временные ряды для любого количества групп в рамках одной модели (например, прогнозирование еженедельных продаж по магазинам и отделам).
  2. Версия с векторной авторегрессией позволяет пользователю за один раз прогнозировать несколько рядов по группам (например, прогнозировать еженедельные продажи и транзакции по магазинам и отделам).
  3. Версия с прерывистым спросом может обрабатывать данные, в которых в ряду есть много нулей (например, прогнозирование медленно движущихся skus).
  4. Версия панельной когорты предназначена для прогнозирования до N когортных периодов в будущем для всех когорт по группам (например, прогнозирование показателей ежедневной воронки конверсии продаж с помощью переменных группировки источников лидов).
  5. Версии временных рядов предназначены для наборов данных отдельных временных рядов и используют обучение с подкреплением для поиска оптимальных настроек параметров.

Сравнение с популярным пакетом прогнозирования Neural Prophet

Разбивка AutoCatBoostCARMA ()

Это мой метод. Основное различие между версиями CatBoost, XGBoost и H2O связано с параметрами машинного обучения, доступными для настройки. Все функции, перечисленные в этом блоге, имеют рабочие примеры в GitHub README, файлах справки R (которые можно открыть в сеансе R) или в справочном руководстве по пакету.

Пять аспектов функции AutoCatBoostCARMA ():

  1. Функциональная инженерия
  2. Улучшения рядов данных
  3. Параметры машинного обучения
  4. Параметры настройки сетки
  5. Идеи модели

Разработка функций

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

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

Улучшения серий данных

Эти параметры могут быть установлены для изменения базовых данных, используемых в результатах обучения и прогнозирования машинного обучения. Например, временное взвешивание особенно полезно, если вы прогнозируете ключевые показатели эффективности бизнес-единицы, которая время от времени изменяет свои процессы. Это позволит модели быстрее уловить изменения.

Сравнение функций с Neural Prophet

Параметры ML

Это те же аргументы, которые вы бы увидели, если бы строили регрессионную модель машинного обучения для регрессионных типов проектов с помощью функции AutoCatBoostRegression () из RemixAutoML. У CatBoost есть еще много параметров, которые нужно настроить, но мне не приходилось добавлять их на данный момент.

Параметры настройки сетки

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

Модель Insights

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

TrainOnFull: если для этого аргумента установлено значение ИСТИНА, модель регрессии обучается, а затем создается прогноз. Если для него установлено значение FALSE, обучается только модель, но возвращается вся информация о модели. Обычно я сначала запускаю в режиме FALSE, чтобы получить информацию о модели для проверки работоспособности.

Возвращается следующая информация о модели. Вы также можете сохранить все, кроме данных проверки, в файл в формате PDF, указав путь к файлу в аргументе PDFOutputPath.

  1. Данные проверки для дальнейшего анализа (включая прогнозы модели)
  2. Графики оценки регрессии (версия коробчатой ​​диаграммы ниже)
  3. Метрики производительности регрессии для удерживаемых данных (R2, MAE, MAPE, RMSE)
  4. Данные переменной важности. Таблица и отформатированная гистограмма (ниже)
  5. Таблица данных о важности взаимодействия (ниже)
  6. Графики калибровки частичной зависимости и прямоугольные диаграммы (ниже)

Ниже приведены два примера построенных графиков калибровки частичных зависимостей. Вы можете указать системе, сколько графиков вы хотите сгенерировать, задав для аргумента NumParDepPlots определенное значение.

Важность парного взаимодействия - новое предложение от команды CatBoost.

Контакт

Надеюсь, вам понравилась статья. Не стесняйтесь связаться со мной в LinkedIn. Если у вас есть какие-либо вопросы или проблемы, напишите мне или отправьте сообщение о проблеме на GitHub. Если у вас есть идеи по улучшению этих функций, я готов обсудить их. Я также принимаю запросы на вытягивание, если они повышают ценность функций. Если вам нужна дополнительная консультация или у вас есть проект, который вам нужно завершить, напишите мне!

R Скрипт для настройки

Если у вас нет графического процессора, вам придется переключить переменную TaskType на «CPU» под переменной Path.