MAPE, средняя абсолютная процентная ошибка, считают одинаково для любого бизнеса, и это методологическая ошибка. В B2B, где заказы редкие, крупные и нерегулярные, формула регулярно делит на ноль или на величины, близкие к нулю, и превращается в бессмысленные проценты. В B2C, где продажи частые и объём выше, MAPE на агрегированном уровне работает относительно исправно, но маскирует провалы по отдельным чувствительным к промо категориям. По исследованию Роба Хайндмана (Rob J. Hyndman, ведущего специалиста по прогнозированию), процентные метрики «имеют бесконечное или неопределённое значение при наличии нулевых значений в ряду, что часто встречается в интермиттирующем спросе». Ниже: почему MAPE ломается по-разному в B2B и B2C, какую метрику считать вместо неё и как не спутать статистическую точность с реальными деньгами.
Почему MAPE ломается на разных типах спроса
Формула MAPE: среднее по всем периодам от модуля разницы факта и прогноза, делённого на факт. Проблема в знаменателе: если фактическая продажа в периоде равна нулю или близка к нулю (типичная ситуация для B2B-позиции, которую заказывают раз в две-три недели), ошибка на этом периоде становится бесконечной или экстремально большой и перекашивает среднее по всей выборке. Хайндман показывает, что даже «симметричный» вариант sMAPE не спасает: если фактическое значение близко к нулю, прогноз тоже обычно близок к нулю, и деление на малое число остаётся проблемой. Вторая причина, которую называет Хайндман: MAPE асимметрична и «накладывает более тяжёлый штраф на положительные ошибки, чем на отрицательные», то есть одинаковая по абсолютной величине ошибка занижения и завышения прогноза даёт разный процент.
В B2C с высоким объёмом ежедневных продаж эта проблема выражена слабее: нулевые дни редки, знаменатель почти всегда заметно больше нуля, и агрегированный MAPE даёт более устойчивую цифру. Но устойчивость на уровне всей категории не означает точность на уровне отдельного товара: тот же эффект маскировки, что описан в кейсе на 30 000 SKU (единая ошибка 18% скрывала провал 27% по промо-чувствительному домену), возникает и внутри B2C-ассортимента, если не считать метрику по сегментам отдельно.
Модель: какую метрику считать в B2B и в B2C
Для B2B с интермиттирующим (прерывистым) спросом по данным Baeldung on Computer Science корректнее использовать WAPE (Weighted Average Percentage Error): сумма модулей ошибок по всем позициям, делённая на сумму модулей фактических продаж, а не среднее по отдельным процентным ошибкам. В источнике прямо сказано: «when the total number of sales can be low or the product analyzed has intermittent sales, WAPE is recommended». WAPE не делится на ноль по каждой отдельной позиции, потому что знаменатель, это сумма по всем позициям и периодам сразу, а не по одному интервалу.
Для сравнения точности между разными товарами или разными моделями (а не только для агрегированной оценки) Хайндман предлагает MASE (Mean Absolute Scaled Error): ошибка модели делится не на факт, а на среднюю ошибку простого наивного прогноза (прогноз на следующий период равен предыдущему периоду) по той же истории. Такая метрика «не имеет бесконечного или неопределённого значения, кроме случая, когда все исторические наблюдения равны между собой», что делает её пригодной именно там, где MAPE отказывает: на позициях с редкими нулевыми продажами.
Для B2C с ровным ежедневным спросом MAPE применим на уровне категории, но требует обязательной сегментации: считать отдельно по доменам с разной чувствительностью к промо и сезону (как в модели из статьи про ИИ-прогнозирование спроса), иначе хороший средний показатель скроет плохой результат по конкретному сегменту.
Алгоритм: как считать и интерпретировать ошибку прогноза
Шаг 1. Посчитать долю периодов с нулевыми или близкими к нулю фактическими продажами по каждой позиции. Если доля таких периодов заметна (типично для B2B-позиций с заказами раз в 2-4 недели), MAPE в чистом виде даёт нестабильный и завышенный результат.
Шаг 2. При заметной доле нулевых периодов считать WAPE на агрегированном уровне вместо MAPE. WAPE устойчив к отдельным нулевым знаменателям, потому что суммирует ошибки и факт по всей выборке, а не усредняет отдельные проценты.
Шаг 3. Для сравнения точности между позициями или моделями считать MASE, а не MAPE. MASE масштабируется относительно наивного прогноза и остаётся определённым там, где процентная ошибка обращается в бесконечность.
Шаг 4. В B2C с высоким объёмом сегментировать MAPE по доменам с разной природой спроса, а не считать одну цифру на весь ассортимент. Устойчивый знаменатель не отменяет риск маскировки провала в конкретном сегменте средним результатом по остальным.
Шаг 5. Переводить любую метрику точности в денежный эффект отдельно для дефицита и для избытка. Одинаковый процент ошибки означает разные суммы потерь в зависимости от маржи товара и от того, дефицит это или излишек, а не только от размера самой ошибки.
Иллюстрация: одна и та же ошибка, разная цена
[Факт, источник fnow.ru] По приведённому в источнике примеру с товаром маржой 2600 рублей ошибка прогноза в 60 единиц обошлась бизнесу в 156 000 рублей при дефиците (недополученная прибыль от нераспроданного спроса) и всего в 5720 рублей при избытке (стоимость замороженных в остатке денег): разница в 27 раз при одинаковой по модулю ошибке. Источник также указывает ориентир по уровню MAPE в зависимости от регулярности спроса: на ровном ежедневном спросе MAPE 15% считается посредственным результатом, а на позициях, которые продаются раз в две недели по одной-две штуки, 40% может оказаться пределом возможного. Одна и та же цифра точности означает разное качество модели в B2C и в B2B.
[Оценка, иллюстративный расчёт] Возьмём 10 позиций B2B-ассортимента с фактическими продажами за месяц: 8 позиций проданы, 2 позиции имели нулевые продажи в отчётном периоде. Если прогноз по этим двум позициям был отличен от нуля (например, прогнозировали 3 и 5 единиц), классический MAPE для них не определён (деление на ноль) и обычно на практике либо исключается из расчёта, либо искусственно ограничивается, оба варианта искажают итоговую цифру. WAPE по тем же 10 позициям считается корректно: сумма модулей ошибок по всем позициям делится на сумму модулей факта по всем позициям, включая нулевые, и даёт единственное конечное число.
Типичные ошибки в расчёте точности прогноза
| Ошибка | Последствие | Что делать вместо этого |
|---|---|---|
| MAPE считается по позициям с нулевыми продажами в части периодов | Деление на ноль или на близкое к нулю число, метрика становится бесконечной или экстремальной | Считать WAPE на агрегированном уровне вместо MAPE |
| Метрика точности не переводится в деньги раздельно по дефициту и избытку | Одинаковый процент ошибки маскирует разницу в реальном ущербе до 27 раз | Считать денежные потери отдельно для дефицита и для избытка, с учётом маржи |
| Точность B2B и B2C сравнивается по одному и тому же MAPE без поправки на регулярность спроса | Ложный вывод о том, что модель в B2B работает хуже, хотя причина в природе спроса, а не в качестве модели | Использовать MASE для сравнения между позициями и сегментами с разной регулярностью |
| Единый порог «хорошего» MAPE применяется ко всему ассортименту | Нереалистичные ожидания от модели по редким позициям, необоснованное решение отключить прогноз | Задавать ориентир по точности отдельно для регулярного и для редкого спроса |
| Средняя точность по ассортименту считается достаточной без разбивки по доменам | Хороший общий результат скрывает провал в конкретном чувствительном к промо сегменте | Считать метрику отдельно по доменам с разной природой спроса |
Ограничения
MASE требует достаточной истории для расчёта наивного прогноза внутри выборки: на совсем новых позициях без истории продаж метрика не даёт надёжного ориентира, и точность на таких позициях правильнее оценивать отдельно, по аналогам. WAPE, будучи устойчивым к нулевым знаменателям на уровне отдельной позиции, агрегирует ошибку по всей выборке и потому может маскировать провал по конкретному товару так же, как обычный MAPE маскирует провал по домену, поэтому агрегированную метрику всегда стоит сопровождать разбивкой хотя бы на 2-3 сегмента. Ни одна из метрик точности не заменяет прямой расчёт денежных потерь: процент ошибки, это прокси-показатель, а не сама бизнес-цель, и разница в цене ошибки при дефиците и при избытке требует отдельного расчёта в каждом конкретном случае.
Практический итог
MAPE, посчитанный одинаково для B2B и B2C, а тем более для позиций с разной регулярностью спроса внутри одного ассортимента, даёт число, которым нельзя пользоваться напрямую. Для интермиттирующего спроса и малых объёмов корректнее считать WAPE на агрегированном уровне и MASE для сравнения между позициями, а не классический MAPE. Первый шаг: посчитать долю периодов с нулевыми или близкими к нулю продажами по ключевым товарным группам, прежде чем выбирать метрику и обещать себе или руководству конкретный процент точности.
Частые вопросы
Какая метрика лучше: MAPE или WAPE?
Зависит от структуры спроса. При регулярных продажах без нулевых периодов MAPE применим и достаточно нагляден. При интермиттирующем спросе (типично для B2B и для редко продаваемых B2C-позиций) WAPE устойчивее, потому что не делится на ноль по каждой отдельной позиции.
Что делать с нулевыми продажами при расчёте точности прогноза?
Не исключать их молча из выборки и не считать по ним MAPE напрямую: это либо завышает, либо занижает итоговую цифру в зависимости от способа обработки. Использовать WAPE на агрегированном уровне или явно помечать такие периоды и анализировать отдельно, особенно если ноль вызван дефицитом на складе, а не отсутствием спроса. Подробнее про эту ошибку: ИИ-прогнозирование спроса: как считать точность и 5 ошибок внедрения.
Можно ли сравнивать точность прогноза между B2B и B2C проектами по одному и тому же MAPE?
Напрямую нет. Регулярность спроса сильно влияет на достижимый уровень MAPE: 15% на ежедневных стабильных продажах и 40% на позициях, продаваемых раз в две недели, могут отражать одинаково хорошую работу модели, а не разное качество. Для сопоставимого сравнения используется MASE, масштабированная относительно наивного прогноза для каждого ряда.
Какой MAPE считается хорошим результатом для склада или закупок?
Единого порога нет: ориентир зависит от регулярности спроса и от стоимости ошибки. Ближе к делу оценивать не процент точности сам по себе, а денежные потери от дефицита и от избытка при текущем уровне ошибки, поскольку одинаковый процент может означать совершенно разную сумму в зависимости от маржи товара.
Похожие материалы: