Проблема нехватки признаков: как мы строим прогноз в Verme WFM
25 сентября 2025
Качество планирования графиков персонала напрямую влияет на издержки бизнеса. Неточный прогноз при планировании ведет либо к перерасходу на зарплаты, либо к нехватке сотрудников, снижению качества обслуживания и потерям продаж. Verme WFM решает эту проблему, обеспечивая построение гибких графиков, наиболее точно соответствующих потребности в персонале.
Такой подход обеспечивает для наших клиентов:
Снижение затрат на персонал до 15% за счет исключения перерасхода на зарплаты.
Рост продаж благодаря оптимальному покрытию пиков трафика.
Полная автоматизация планирования для всей сети магазинов без ручных корректировок.
Процесс прогнозирования при построении графиков под потребность — это всегда работа с ограничениями. Даже если нам удалось идеально очистить и обогатить исторические данные (этап препроцессинга), мы сталкиваемся с фундаментальной проблемой: как строить прогноз на те даты, для которых еще не сформировались ключевые исторические признаки?
Упрощенно можно сказать, что модель прогнозирования «подбирает коэффициенты» для расчета будущих значений, опираясь на исторические данные. Наибольший вклад в точность для большинства бизнес-драйверов (трафик, продажи) вносят признаки, описывающие недельную и годовую сезонность:
Lag 7 — значение показателя 7 дней назад.
Lag 365 — значение показателя год назад.
Среднее за прошлую неделю.
День недели — категориальный признак.
Упрощая, можно сказать, что модель «подбирает коэффициенты» для вычисления будущих значений ряда, зная его исторические значения.
При этом даже в случае «идеальных» данных мы обязательно столкнемся с проблемой «нехватки признаков».
Представим, что сегодня 1 июня, и мы строим прогноз на весь июнь. Чтобы спрогнозировать первую субботу июня (3 июня), модель может использовать значение Lag 7 — это суббота недельной давности (27 мая). Оно нам известно. Но как быть со второй субботой июня (10 июня)? Для нее признак «Lag 7» должен указывать на субботу 3 июня — то есть на ту самую дату, которую мы только что спрогнозировали! Исторического значения для 3 июня не существует, есть лишь наше прогнозное значение. Эта ситуация повторяется для каждого последующего дня.
Важный признак «значение неделю назад» в первую неделю не определено (на картинке ниже «первая прогнозная суббота» (оранжевая линия) будет похожа на «последнюю историческую субботу» (синяя линия)). А какое значение будет «второй прогнозной субботы» (зеленая линия), если исторических значений еще нет?
Мы исследовали и протестировали несколько стратегий решения этой задачи. Рассмотрим их на конкретном примере прогнозирования количества покупателей на субботу 10 июня.
Способ 1. Заполнить неизвестные значения нулями
Суть: Если значение признака (например, Lag 7 для 10 июня) неизвестно, мы просто заменяем его на ноль.
Пример: Для прогноза на 10 июня модель вместо значения трафика на 3 июня получит 0.
Плюсы: Очень прост в реализации, не требует дополнительных вычислений.
Минусы: Модель лишается одного из самых важных признаков. Это может работать только для абсолютно стабильных рядов без недельной сезонности (например, ежедневные продажи молока). Но для трафика, который всегда выше в выходные, этот способ приводит к значительным ошибкам.
Способ 2. Всегда использовать одно фиксированное значение
Суть: Мы заменяем правило «7 дней назад» на другое, но всегда постоянное правило, например, «35 дней назад». Таким образом, для любого дня прогноза мы используем только реальные исторические данные.
Пример: Для прогноза на 10 июня модель будет смотреть на данные за 6 мая (Lag 35).
Плюсы: Простота, модель всегда работает с реальными, а не прогнозными данными.
Минусы: Сильно теряется актуальность. Данные месячной давности могут не отражать текущий тренд или специфику месяца. Прогноз продаж учебников в сентябре, основанный на данных августа (перед школой), будет завышенным, а на данных октября — заниженным.
Способ 3. Использовать несколько моделей для разных дней
Суть: Создается отдельная модель для прогнозирования каждого дня горизонта. Например, одна модель учится предсказывать только понедельники, используя в качестве признака последний известный понедельник, другая — только вторники и т.д.
Пример: Чтобы спрогнозировать 10 июня (суббота), «субботняя» модель будет использовать данные последней исторической субботы (27 мая).
Плюсы: Высокая точность, так как каждая модель тонко настраивается на специфику своего дня недели.
Минусы: Чрезвычайная ресурсоемкость. Для прогноза на 30 дней вперед нужно обучить и поддерживать 30 моделей для каждого ряда, что неприемлемо для больших сетей с тысячами товарных категорий и магазинов.
Способ 4. Использовать «прогнозные данные» в качестве исторических (Рекуррентный подход)
Суть: Мы используем одно и то же мощное правило (например, Lag 7), но для тех дат, чьи исторические значения неизвестны, модель подставляет свои же предыдущие прогнозы.
Пример:
Сначала модель прогнозирует трафик на субботу, 3 июня, используя реальные данные за 27 мая.
Затем, чтобы спрогнозировать трафик на субботу, 10 июня, модель в качестве признака Lag 7 использует уже спрогнозированное значение для 3 июня.
Плюсы: Позволяет сохранить важнейшие признаки (недельную сезонность) на всем горизонте прогнозирования, используя при этом всего одну модель.
Минусы: Риск «накопления ошибки»: если прогноз на 3 июня был неточным, эта ошибка может передаться на прогноз для 10 июня.
Какой способ выбирает Verme? Результаты эксперимента
Для оценки эффективности мы провели масштабный эксперимент на 10 000 реальных временных рядов. Критериями были точность (средняя процентная ошибка MAPE) и скорость работы.
Наилучший результат по точности показал рекуррентный подход (Способ 4). Несмотря на теоретический риск накопления ошибки, на практике наша модель и этап постпроцессинга эффективно с этим справляются. Этот метод обеспечивает высочайшую точность, учитывая недельную сезонность, и при этом остается ресурсоэффективным, что критически важно для обработки тысяч рядов в промышленной эксплуатации.
Это наглядный пример того, как сложная техническая задача, неизбежно возникающая при реальном прогнозировании, находит практическое и эффективное решение в платформе Verme.
Заключение: точный прогноз как основа бизнес-эффективности
Прогнозирование в Verme — это не просто алгоритм, а комплексный инженерный процесс, который решает реальные бизнес-проблемы. Мы начинаем с «реанимации» и обогащения данных, используем мощь ансамблей моделей и гарантируем, что итоговый прогноз будет не только статистически точным, но и осмысленным с точки зрения бизнеса.
Что это дает нашим клиентам?
Снижение затрат на персонал до 15% за счет исключения перерасхода на зарплаты.
Рост продаж благодаря оптимальному покрытию пиков трафика.
Полная автоматизация планирования для всей сети магазинов без ручных корректировок.
Узнайте, как Verme поможет вашему бизнесу сократить издержки на персонал до 15%. Оставьте заявку на демонстрацию платформы.