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

В этой статье я объясню, как можно повысить точность прогнозирования на основе проекта, который я завершил с одной из крупнейших компаний CPG в мире. Я использовал модель многоуровневого ансамбля (двухэтапную) для прогнозирования прогнозов на ближайшие 3 месяца.

Что такое ансамблевая модель?

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

- Уменьшить ошибку модели (Увеличить точность)

- Улучшить обобщение

Где узкое место?

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

Объяснение многоуровневой модели Emsemble

Многослойная ансамблевая модель представляет собой не что иное, как комбинацию различных базовых моделей. Прогноз ансамблевой модели передается мета-обучаемому, который может быть простой моделью линейной регрессии, придающей веса прогнозам, сделанным базовыми моделями. В моем случае я использовал 6 различных моделей машинного обучения, а именно ARIMA, VAR, SVR, LightGBM, TCN (сеть временной свертки) и XGBoost. В то время как мой мета-обучатель был просто моделью линейной регрессии, которая была обучена на прогнозах, сделанных базовой моделью в отношении цели отгрузки.

Это означает, что мета-обучение будет использовать 0,3 * ARIMA + 0,5 * VAR + 0,1 * SVR + 0,05 * LightGBM + 0,03 * TCN + 0,02 * XGBoost (просто пример) для окончательного прогноза. Это будет меняться для каждого продукта в данных. Основное преимущество этого заключается в том, что мета-обучаемый сможет лучше обобщать прогнозы и не будет переобучать. В моем случае клиент не смог увеличить FA (точность прогнозирования), которая была их показателем успеха, выше 50% (при агрегировании), но после того, как я использовал модель сложенного ансамбля с базовыми моделями, перечисленными выше, и LR в качестве мета-обучения, FA подскочила до 80%, что было действительно хорошо, поскольку предоставленные данные были очень нестабильными и нестационарными из-за пандемии.

В целом, сначала вам нужно попробовать некоторые базовые модели на нескольких продуктах, которые, по вашему мнению, будут хорошо работать с данным набором данных, а затем выбрать диверсифицированные модели в качестве базовых моделей. Затем обучите мета-обучение (это может быть простая модель, такая как LR, или сложная модель, такая как NN) на основе вашего набора данных. Окончательный прогноз будет вашим прогнозом, основанным на прогнозах базовой модели, которые будут более обобщенными и дадут более высокую совокупную точность для всех продуктов по сравнению с моделью с одним исполнением.

Надеюсь, вам понравилось читать эту статью, и мы приветствуем конструктивные отзывы, так как это моя первая статья на Medium!

Использованная литература:

https://builtin.com/machine-learning/ансамбль-модель