Почему market basket analysis даёт мусор на сырых транзакциях
Market basket analysis ломается не на алгоритме, а на входе. Транзакции выгружают из кассы как есть: в массив попадают отменённые чеки, возвраты, дубли артикулов, служебные строки вроде пакета или доставки и позиции, разбитые на несколько операций. Если считать правила сочетания товаров по такому набору, модель честно выносит наверх то, что лежит в каждом втором чеке, — и вместо управляемых сочетаний отдаёт очевидные «хлеб и молоко».
Цена ошибки не в странных числах, а в потере доверия к инструменту. Категорийный менеджер один раз открывает отчёт, видит тривиальные пары и больше им не пользуется — решения о выкладке и перекрёстных предложениях снова принимаются на ощущениях.
Подготовка данных здесь важнее выбора меры интересности. Возвраты и отмены убирают, дубли артикулов склеивают, весовой товар приводят к сопоставимым единицам, сервисные строки отделяют от товарных, а границы корзины восстанавливают, если чек разбит на несколько операций. Только после этого анализ корзины покупателя показывает поведение, а не артефакты учёта, и пара перестаёт быть следствием того, что оба товара просто часто покупают.
Разбираем, как это закрывается: какие проверки качества данных о заказах ставим до расчёта, по каким признакам отсекаем статистический шум и как убедиться, что найденные сочетания вообще можно превратить в действие.
Что меняется на полке и в отчётах после внедрения
Пересборка правил сочетаний перестаёт быть квартальным проектом. Раньше выгрузка корзин, чистка и пересчёт занимали дни ручной работы аналитика, поэтому правила устаревали между запусками. Теперь расчёт идёт по расписанию на свежих транзакциях, и новая партия сочетаний появляется в отчётах в тот же день.
Второй сдвиг — доля ручной работы с ассортиментом. Категорийный менеджер больше не сводит пары в таблицах: спорные сочетания приходят с числом корзин, долей совместных покупок и оценкой устойчивости. Ручной остаётся проверка на полке и решение о выкладке — то, что расчёт закрыть не может.
Третий — устойчивость рекомендаций. Правило, выросшее на нескольких случайных чеках, отсекается по порогам поддержки и достоверности, поэтому в рабочие рекомендации не попадает разовый всплеск. Отдельно проверяем, как связь держится на разных периодах: если при разбиении исторических данных она распадается, правило не доходит до выкладки.
На полке это видно как перестановка: связанные товары встают рядом, дополняющие попадают в зону импульса, неиспользуемые связки уходят из плана. В отчётах меняется набор метрик — вместо доли товара в выручке на первый план выходят частота совместных покупок и покрытие корзины.
Что проверяем перед передачей: воспроизводимость расчёта на исторических данных, долю правил, прошедших пороги, время полного пересчёта и список пар, которые менеджер подтверждает вручную. Это и есть список приёмки — по нему видно, работает ли модель на ваших данных, а не на демонстрационном наборе.
Режимы расчёта market basket: пакетный, потоковый, гибридный
Частота обновления правил задаёт сразу две вещи: пользу выдачи и нагрузку на хранилище. Пересчитывать связи на каждой новой корзине смысла нет — на коротком окне они шумят, а рекомендации скачут от сессии к сессии. Слишком редкий пересчёт даёт устойчивые правила, но пропускает смену спроса: новинки и сезонные позиции выпадают из выдачи на дни.
Режим выбирают по двум вопросам: как быстро меняется ассортимент и нужна ли реакция внутри текущей сессии покупателя. Ниже — три схемы, между которыми выбор идёт на практике.
| Режим | Когда подходит | Ограничения |
|---|---|---|
| Пакетный пересчёт правил | Ассортимент меняется медленно, решения нужны к утру: пополнение полки, категорийные отчёты | Правила живут до следующего окна, реакция на всплеск спроса — только после пересчёта |
| Потоковый расчёт корзин | Нужна реакция внутри сессии: допродажа, подсказка в корзине, динамические наборы | Длинное окно дорого по ресурсам, связи на малой выборке нестабильны — нужны пороги поддержки |
| Гибридный режим | Большой каталог: устойчивые связи пересчитываются редко, быстрые подсказки нужны часто | Два слоя правил согласуют по ключам товаров, сложнее отлаживать и объяснять выдачу |
На старте почти всегда берут пакетный пересчёт: он предсказуем и легко проверяется на исторических данных. Потоковый включают, когда появляется сценарий, где важна свежесть, — иначе усложнение не окупается. В гибридном режиме правила двух слоёв сопоставляют по ключам: если ключи разошлись, выдача начинает противоречить сама себе.
«Пакетный пересчёт закрывает большинство задач; к гибриду переходят, когда появляется метрика, которую нельзя посчитать ночью» — из практики наших внедрений в ритейле
Как мы внедряем корзинный анализ: этапы работ
Внедрение корзинного анализа (market basket analysis) начинается не с модели, а с данных о заказах. Пока не проверены полнота чеков и разметка товаров, любые ассоциативные правила будут описывать шум. Ниже — порядок работ, который мы проходим вместе с командой заказчика.
- Аудит данных о заказах. Сверяем состав чеков, идентификаторы товаров и категорий, разбираем дубли, отмены, возвраты и весовые позиции, оцениваем глубину истории. Итог — отчёт о пригодности данных и перечень пробелов, которые нужно закрыть до расчёта.
- Схема расчёта. Согласуем уровень анализа — чек или заказ, окно истории, минимальные пороги поддержки и достоверности. Фиксируем, какие связки считаем значимыми, а что уходит в исключения.
- Настройка расчёта правил. Собираем регулярный пересчёт: полный прогон по накопленной истории и инкрементальный по новым чекам. Результат складывается в витрину, откуда его забирают рекомендации, рассылки и интерфейсы.
- Проверка правил на истории. Прогоняем связки на прошлых периодах: сколько подтвердилось, сколько оказалось ложным, что рассыпалось на сезонных всплесках. Неустойчивые комбинации отсекаем до запуска.
- Встраивание в процессы. Правила подключаем туда, где принимаются решения: подбор сопутствующих товаров, навигация по каталогу, сборка наборов. По обратной связи корректируем пороги и состав исключений.
- Передача решения команде. Отдаём конфигурации, схему данных, регламент пересчёта и разбор типовых сбоев, обучаем специалистов заказчика — дальше система работает без нашего участия.
Что передаём на руки: правила, схемы, регламенты
Проект по market basket analysis заканчивается не списком частых пар товаров, а набором артефактов, по которым систему можно развивать без нас. Передаём всё в воспроизводимом виде: тот же расчёт на новых данных даёт сопоставимый результат, а логика отбора объясняется порогами, а не устными договорённостями.
- Документация по решению — описания сущностей: корзина, транзакция, товарная позиция, правило, сегмент покупателя; словарь метрик с формулами.
- Правила отбора сочетаний — выставленные пороги поддержки и достоверности, фильтры по категориям, стоп-листы и исключения служебных позиций.
- Схема данных — структура витрины транзакций, источники, требования к полноте и частоте поступления, обработка возвратов и весовых товаров.
- Регламент пересчёта — триггеры и периодичность, порядок прогона при накоплении новых транзакций и изменении справочников.
- Контроль устойчивости правил — проверка связок на нескольких периодах и точках продаж, отсев случайных совпадений, журнал причин исключения.
- Регламент обновления справочников — фиксация даты актуальности, контроль доли нераспознанных позиций в корзинах и порог, при котором правило уходит на пересмотр.
- Отчётность и передача — состав регулярных выгрузок, описание витрин для аналитиков, порядок доступа к среде расчёта и порядок сопровождения.
Кейс: как сократили пустые корзины и редкие сочетания
До: интуиция вместо данных
Сеть магазинов, несколько десятков точек, ассортимент в тысячи позиций. Сочетания товаров в чеке разбирали вручную: категорийные менеджеры опирались на опыт и на продажи отдельных позиций, а не на совместные покупки. В результате 44% чеков оставались пустыми корзинами с одной позицией, а редкие сочетания товаров с сильной связью ни разу не попадали в акцию — их просто не видели.
Что изменили и что получили
Собрали историю чеков за длинный период и посчитали правила ассоциаций по поддержке, достоверности и силе связи. Отсеяли шум: сезонные всплески, пары, склеенные одной скидкой, позиции без маржинальности. На выходе — ранжированный список связок, который ушёл в категорийный менеджмент как план выкладки и совместных акций; эффект проверяли на сопоставимых по трафику точках.
Внедрение сократило долю чеков с одной позицией с 44% до 31%, среднее число позиций в чеке выросло на 0,6, а доля акций, построенных на связках из модели, дошла до 70%. Метрики до и после считали по одним и тем же правилам, поэтому рост нельзя списать на сезонность.
Сочетания товаров перестали быть делом вкуса: видим, какие пары действительно тянут друг друга, и планируем выкладку по этому списку — результат повторяется от точки к точке.
— руководитель направления «ПродМаркет»
Что делать, если в каталоге уже есть ручные правила сочетаний?
Ручные правила сочетаний — это договорённости: промо-связки, требования поставщиков, логика выкладки, которую менеджер правит в админке. Данными они не проверяются: пара живёт в каталоге годами, а в чеках пересекается редко.
Рабочая схема — гибрид: ручные правила остаются жёсткими ограничениями, расчётный слой даёт рекомендации с весом и объяснением. Частоту наборов и силу связи считаем по классическому подходу Agrawal и Srikant — он даёт числа вместо вкусовых оценок.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Только ручные правила | Мало данных, узкий ассортимент | Конфликты правил не видны, не масштабируется |
| Теневой прогон расчёта | Первый шаг миграции на расчёт | Выкладка пока управляется вручную |
| Гибрид: ручные как ограничения | Каталог с промо и обязательствами | Нужен регламент приоритетов |
| Полный переход на расчёт | Большой поток чеков, нет внешних обязательств | Теряется формальная логика категорий |
Миграция на расчёт идёт этапами: сводим текущие правила в один реестр с источником и сроком, гоняем расчёт в теневом режиме, собираем отчёт по конфликтам. Каждую спорную пару отдаём менеджеру с цифрами — поддержка, уверенность, число чеков.
После согласования правило получает приоритет, и расчёт начинает управлять выкладкой в оговорённых зонах каталога. Обычно 10-15% ручных правил отменяются как ошибочные, остальные сохраняются и начинают работать на данных.
Частые технические сомнения перед стартом
Перед стартом технические команды задают почти одни и те же вопросы: как правило ведёт себя на данных, которых не было при обучении, и что произойдёт, когда изменится ассортимент, цены или канал продаж. Ниже — короткие ответы по четырём узким местам, которые чаще всего ломают доверие к результату.
Сезонность в правилах — как не тащить праздничный всплеск в обычный месяц?
Правила считаем на скользящем окне и храним привязку к периоду: предпраздничный, базовый, период распродаж. Связь, поднявшаяся на сезонном спросе, не попадает в базовый набор — иначе летние рекомендации тянут новогодние позиции.
Оптовые отгрузки в данных — не испортят ли они статистику?
Испортят, если считать всё в одном потоке: одна крупная отгрузка весит как сотни обычных чеков. Разделяем потоки по типу отгрузки и каналу, строим правила отдельно для розницы и для опта, а смешанные сочетания помечаем как низкоприоритетные.
Как понять, что связь настоящая, а не случайная?
Каждое правило проверяем на устойчивость: пересчёт на независимых периодах, оценка силы связи относительно случайного совпадения, отсечение редких сочетаний. В рабочий набор идёт только то, что повторяется в разных окнах и не держится на единичной крупной закупке.
Как часто пересчитывать правила?
Частота задаётся темпом изменений: при быстром обновлении ассортимента и цен — ежедневное дополнение на новых данных, при стабильном каталоге — полный пересчёт раз в неделю. Расписание фиксируем в регламенте, чтобы набор правил не «дрожал» между запусками.
Обсудим вашу задачу и вернёмся с оценкой и планом
Первый разговор занимает около часа и идёт по делу — смотрим на данные, а не на презентацию. Чтобы вернуться с оценкой проекта и планом работ, нам нужен минимум контекста, остальное уточняем сами.
- Выгрузка транзакций за несколько месяцев: чеки, позиции, время покупки, канал продаж.
- Расшифровка справочника товаров: категории, наборы, весовые позиции, сезонные замены.
- Перечень бизнес-вопросов: допродажа в чеке, раскладка на полке, сборка наборов, акции.
- Где лежат данные и как к ним подключиться: хранилище, отчётный слой, регулярная выгрузка.
- Ограничения по доступу: правила обезличивания, требования службы безопасности, режим.
- Кто на стороне заказчика принимает результат и в каком виде его ждёт.
По итогам разговора присылаем план работ: этапы, состав данных, формат выдачи, срок старта проекта и точки, где вы принимаете решение о продолжении. Схема расчёта показателей тоже идёт в комплекте — чтобы результат можно было объяснить бизнесу, а не принять на веру.
Дальше — короткий пилот на вашем срезе данных: он показывает, ловит ли модель устойчивые связки, и только после этого мы говорим о масштабировании. Обсудить задачу можно письмом или коротким созвоном — этого достаточно, чтобы перейти к оценке.







