Первая часть утверждала, что ИИ в FMCG-аналитике — это не что-то одно, и давала лестницу из десяти ступеней, чтобы называть, чем именно вы заняты. Эта часть строит машину.
Машина — это не модель. Это три рабочих процесса, у которых общая таблица фактов и общая очередь, и вся интересная инженерия почти целиком в этой общности.
Гранулярность решает всё
Прежде всех трёх процессов: магазин × SKU × неделя, с продажами, ценой, промо, выкладкой, доступностью, дистрибуцией, регионом, сетью и — где до неё дотянуться — промо конкурентов. Плюс база и разрыв в продажах, определённый относительно неё.
Звучит как водопровод, а это решение с самым большим рычагом во всей программе. Ошибитесь с гранулярностью — и каждая следующая модель будет учиться не тому с безупречной технической корректностью. Считайте на уровне «сеть — месяц», и модель с высокой уверенностью обнаружит, что крупные сети продают больше мелких. Это не находка. Это говорит гранулярность.
База — вторая половина того же решения. Почти каждый вопрос ниже на самом деле вопрос про остаток: факт минус ожидание. А «ожидание» — это модельный выбор, который вы делаете, признаёте вы это или нет. Команды, пропустившие базу, в итоге сравнивают с прошлым годом, молча предполагая, что прошлый год был нормальным.
Процесс первый: поиск проблем
Сверху вниз. Что-то случилось, и вы сужаете.
- Наблюдать — отклонение от базы или цели, выявление аномалий → событие
- Локализовать — дерево вкладов, топ-сегменты → сконцентрированные срезы
- Связать — ключевые влияющие факторы, регрессия, SHAP, проверки со сдвигом → вероятные факторы
- Оценить размер — остаток по продажам, недополученные продажи → порядок величины
- Рекомендовать по-лёгкому — правила плюс оценка плюс выполнимость → очередь действий
- Проверить или эскалировать — холдаут, разность разностей, BSTS, «тестируй и учись» → проверенное действие или причинная оценка
Обратите внимание на форму: пять дешёвых шагов и один дорогой, причём дорогой необязателен и стоит последним. Большинство организаций начинает с шестого шага, на самом крупном вопросе, какой у них есть, и через восемь недель выясняет, что эффект в наблюдательных данных не идентифицируется. Гонять 1–5 по всему, а 6 — по трём самым дорогим решениям в году, гораздо лучшее распределение тех же денег.
Процесс второй: поиск возможностей
Снизу вверх. Ничего не сломано, и вы обходите поле.
- Задать вселенную — магазин × SKU, клиент × SKU, сеть × сегмент
- Сопоставить — похожие магазины, справедливая доля, присутствие конкурента, лучший внутренний аналог
- Найти разрыв — белые пятна, разрыв в ассортименте, разрыв к справедливой доле → кандидаты
- Добавить контекст — дистрибуция, доступность, ценовой индекс, конкурент, соответствие покупателю → коды причин
- Оценить размер — ожидаемая скорость × разрыв × маржа × выполнимость → потенциал в деньгах
- Оценить и поставить в очередь — ценность × уверенность × выполнимость × стратегический приоритет → бэклог
Именно этого процесса в большинстве компаний нет, и именно он больше всего оправдывает автоматизацию. Разбор проблем случается и так: кто-то замечает число и спрашивает. А нереализованную возможность не замечает никто — ровно поэтому искать её должна машина. Отсутствие жалобы не есть свидетельство здоровья.
Шаг сопоставления — то место, где всё получается или не получается. «Похожие магазины» должны означать что-то защитимое: формат, зона охвата, диапазон трафика, сеть. Иначе разрыв к справедливой доле — это просто шум со значком валюты впереди.
Процесс третий: поиск недополученных продаж
Спрос был. Его не обслужили.
- Обнаружить проблему с доступностью — флаги доступности или отсутствия на полке, нулевой остаток, потерянная дистрибуция, отсутствие чеков там, где они ожидались
- Ожидаемые продажи — базовая скорость, похожие магазины, сезонность → ожидание
- Потерянные продажи — ожидание минус факт, с подрезкой крайних значений → оценка недополученного
- Связать с коренной причиной — запас, листинг, пополнение, промо, задержка отчётности → код причины
- Приоритизировать — потерянные продажи × маржа × чинимость × стратегический вес → очередь действий
- Обратная связь — до и после, в идеале против контрольной группы → свидетельство восстановления
Недополученные продажи — это не возвратимые продажи. Это стоит говорить громко и в начале любой презентации, потому что число большое, привлекательное и его начинают воспринимать как обещание. Покупатель мог взять пачку конкурента, мог не взять ничего и не расстроиться, а сезон мог закрыться. Недополученные продажи оценивают размер проблемы. Они не оценивают размер приза, и разрыв между этими двумя — то место, где умирает доверие к аналитике.
Где именно проходит предел BI-инструмента
Изрядная часть описанного выше работает внутри Power BI, и это удивляет обе стороны спора. «Дерево декомпозиции» делает локализацию, «Ключевые факторы влияния» — связывание, «Топ-сегменты» — поиск срезов, «Прогноз» — предсказание, «Аномалии» — диагностическую подсветку, «Что если» — сценарии, правила на DAX — предписание по-лёгкому. Это ступени с первой по седьмую из лестницы первой части, в инструменте, который у бизнеса уже есть.
Тем важнее точно назвать, где это заканчивается.
Ключевые факторы влияния ранжируют факторы, связанные с целевой переменной: логистическая регрессия для категориальной цели, линейная — для числовой. Топ-сегменты — совсем другое, на второй вкладке: они ищут сочетания условий, где цель необычно высока или низка, используя дерево решений FastTree, и это ближайшая по духу к поиску срезов. Непрерывные факторы автоматически режутся не более чем на пять управляемых корзин, а анализ идёт по выборке до 10 000 наблюдений.
Можно ли сравнить продажи и доступность? Да, тремя разными способами, и это три разных вопроса:
- Связь уровней — анализируем
Продажи, объясняем черезДоступность, на уровне магазин × SKU × неделя: «высокая доступность обычно соседствует с высокими продажами». - Изменение против изменения — заранее считаем
РазрывПродажиРазрывДоступностии анализируем разрывы: «падение продаж совпало с падением доступности». - Опережение и запаздывание — у «Ключевых факторов» нет понятия порядка во времени. Вам придётся заранее посчитать
Доступность(t−1),Доступность(t−2), скользящие окна. И даже тогда у вас будет предсказательная информация, а не причинность.
Три ловушки, в том порядке, в каком они ловят людей на самом деле:
- Гранулярность. Не та гранулярность — и модель учит размер сети или структуру продаж, а докладывает это как инсайт.
- Утечка целевой переменной. Нельзя объяснять продажи показателем, выведенным из этих же продаж. Случается постоянно и незаметно: обычные виновники — метрики покрытия запасом и скорости продаж.
- Мультиколлинеарность. Флаг промо, глубина скидки, временное снижение цены и выкладка будут делить важность между собой по-разному от запуска к запуску. Соберите их в группы факторов, прежде чем что-либо интерпретировать.
И вопрос, который в итоге задают все: вернут ли разные алгоритмы один и тот же список влияющих факторов? Почти наверняка нет, и это не дефект. Линейные и логистические модели ищут средние условные связи; деревья находят нелинейные пороги; SHAP объясняет одну конкретную предсказательную модель; поиск срезов охотится за необычно плохими подгруппами; дерево декомпозиции прослеживает путь вклада. Честное сравнение — пересечение по Жаккару, ранговая корреляция Спирмена, устойчивость на бутстрэпе, проверка на отложенной выборке — проводится не для того, чтобы короновать победителя. Оно отделяет устойчивые находки от артефактов конкретного метода, а это другой и куда более полезный результат.
Когда причинный дизайн действительно нужен
Назвать факторы недостаточно. Нарисовать граф зависимостей тоже недостаточно, если граф — картинка, а не обязательство. Достаточно становится только тогда, когда существуют одиннадцать вещей:
- Воздействие — что именно меняет бизнес?
- Исход — что мы измеряем?
- Единица — магазин × SKU × неделя, клиент × SKU, регион × неделя
- Тайминг — что до, что после
- Граф зависимостей — кто на кого влияет
- Смешивающие факторы — что влияет и на воздействие, и на исход
- Медиаторы — через что проходит эффект
- Коллайдеры и утечки — на что нельзя контролировать
- Стратегия идентификации — почему это сравнение допустимо
- Оценщик — что считает число
- Проверка — плацебо, предтренды, чувствительность, холдаут
Хрестоматийный пример из FMCG — доступность, и он поучителен тем, что может занимать три разные позиции на одной и той же схеме. Она может быть причиной (доступность упала → продажи упали). Может быть медиатором (промо → спрос вырос → товар кончился → продажи упали). А может быть артефактом задним числом (продажи выросли → сработало пополнение → запас измерили после того, как продажи случились). Эти три требуют разных контролей и дают разные числа. Ничто в данных не подскажет, в каком из трёх вы находитесь. Подсказывает только бизнес-процесс.
Поэтому «я назову факторы» — сырьё для семинара по графу зависимостей, а не причинный дизайн. И поэтому последний отрезок этой работы нельзя отдать инструменту. ИИ не проверит за вас ваш причинный дизайн. Языковая модель может предложить граф, вытащить пропущенные смешивающие факторы и сгенерировать заготовку на DoWhy или EconML. Она не знает настоящий процесс порождения данных, не может сделать непроверяемое допущение истинным и нарисует неверные стрелки с полной уверенностью.
Что даёт вторая часть
Три рабочих процесса, одна гранулярность и защитимая граница между тем, на что ответит BI-инструмент, и тем, где нужен дизайн. Это год работы для небольшой команды и бо́льшая часть достижимой в этой области ценности.
Третья часть — неудобная: кто всё это делает, во что обходится и почему ответ меньше и дешевле, чем предложение поставщика, лежащее у вас на столе.
← ИИ в FMCG-аналитике, часть первая — рамка · ИИ в FMCG-аналитике, часть третья — способность →