Разработка AI-системы корзинного анализа Market Basket Analysis

Ручные правила сочетаний быстро устаревают, а отчёты не подсказывают, что поставить рядом на полке. Мы разрабатываем корзинный анализ market basket analysis под ключ: от подготовки данных до готовых правил и регламентов. Вы получаете рост среднего чека и меньше пустых корзин.
Часто задаваемые вопросы

Почему market basket analysis даёт мусор на сырых транзакциях

Market basket analysis ломается не на алгоритме, а на входе. Транзакции выгружают из кассы как есть: в массив попадают отменённые чеки, возвраты, дубли артикулов, служебные строки вроде пакета или доставки и позиции, разбитые на несколько операций. Если считать правила сочетания товаров по такому набору, модель честно выносит наверх то, что лежит в каждом втором чеке, — и вместо управляемых сочетаний отдаёт очевидные «хлеб и молоко».

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

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

Разбираем, как это закрывается: какие проверки качества данных о заказах ставим до расчёта, по каким признакам отсекаем статистический шум и как убедиться, что найденные сочетания вообще можно превратить в действие.

Что меняется на полке и в отчётах после внедрения

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

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

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

На полке это видно как перестановка: связанные товары встают рядом, дополняющие попадают в зону импульса, неиспользуемые связки уходят из плана. В отчётах меняется набор метрик — вместо доли товара в выручке на первый план выходят частота совместных покупок и покрытие корзины.

Что проверяем перед передачей: воспроизводимость расчёта на исторических данных, долю правил, прошедших пороги, время полного пересчёта и список пар, которые менеджер подтверждает вручную. Это и есть список приёмки — по нему видно, работает ли модель на ваших данных, а не на демонстрационном наборе.

Режимы расчёта market basket: пакетный, потоковый, гибридный

Частота обновления правил задаёт сразу две вещи: пользу выдачи и нагрузку на хранилище. Пересчитывать связи на каждой новой корзине смысла нет — на коротком окне они шумят, а рекомендации скачут от сессии к сессии. Слишком редкий пересчёт даёт устойчивые правила, но пропускает смену спроса: новинки и сезонные позиции выпадают из выдачи на дни.

Режим выбирают по двум вопросам: как быстро меняется ассортимент и нужна ли реакция внутри текущей сессии покупателя. Ниже — три схемы, между которыми выбор идёт на практике.

Режим Когда подходит Ограничения
Пакетный пересчёт правил Ассортимент меняется медленно, решения нужны к утру: пополнение полки, категорийные отчёты Правила живут до следующего окна, реакция на всплеск спроса — только после пересчёта
Потоковый расчёт корзин Нужна реакция внутри сессии: допродажа, подсказка в корзине, динамические наборы Длинное окно дорого по ресурсам, связи на малой выборке нестабильны — нужны пороги поддержки
Гибридный режим Большой каталог: устойчивые связи пересчитываются редко, быстрые подсказки нужны часто Два слоя правил согласуют по ключам товаров, сложнее отлаживать и объяснять выдачу

На старте почти всегда берут пакетный пересчёт: он предсказуем и легко проверяется на исторических данных. Потоковый включают, когда появляется сценарий, где важна свежесть, — иначе усложнение не окупается. В гибридном режиме правила двух слоёв сопоставляют по ключам: если ключи разошлись, выдача начинает противоречить сама себе.

«Пакетный пересчёт закрывает большинство задач; к гибриду переходят, когда появляется метрика, которую нельзя посчитать ночью» — из практики наших внедрений в ритейле

Как мы внедряем корзинный анализ: этапы работ

Внедрение корзинного анализа (market basket analysis) начинается не с модели, а с данных о заказах. Пока не проверены полнота чеков и разметка товаров, любые ассоциативные правила будут описывать шум. Ниже — порядок работ, который мы проходим вместе с командой заказчика.

  1. Аудит данных о заказах. Сверяем состав чеков, идентификаторы товаров и категорий, разбираем дубли, отмены, возвраты и весовые позиции, оцениваем глубину истории. Итог — отчёт о пригодности данных и перечень пробелов, которые нужно закрыть до расчёта.
  2. Схема расчёта. Согласуем уровень анализа — чек или заказ, окно истории, минимальные пороги поддержки и достоверности. Фиксируем, какие связки считаем значимыми, а что уходит в исключения.
  3. Настройка расчёта правил. Собираем регулярный пересчёт: полный прогон по накопленной истории и инкрементальный по новым чекам. Результат складывается в витрину, откуда его забирают рекомендации, рассылки и интерфейсы.
  4. Проверка правил на истории. Прогоняем связки на прошлых периодах: сколько подтвердилось, сколько оказалось ложным, что рассыпалось на сезонных всплесках. Неустойчивые комбинации отсекаем до запуска.
  5. Встраивание в процессы. Правила подключаем туда, где принимаются решения: подбор сопутствующих товаров, навигация по каталогу, сборка наборов. По обратной связи корректируем пороги и состав исключений.
  6. Передача решения команде. Отдаём конфигурации, схему данных, регламент пересчёта и разбор типовых сбоев, обучаем специалистов заказчика — дальше система работает без нашего участия.

Что передаём на руки: правила, схемы, регламенты

Проект по market basket analysis заканчивается не списком частых пар товаров, а набором артефактов, по которым систему можно развивать без нас. Передаём всё в воспроизводимом виде: тот же расчёт на новых данных даёт сопоставимый результат, а логика отбора объясняется порогами, а не устными договорённостями.

  • Документация по решению — описания сущностей: корзина, транзакция, товарная позиция, правило, сегмент покупателя; словарь метрик с формулами.
  • Правила отбора сочетаний — выставленные пороги поддержки и достоверности, фильтры по категориям, стоп-листы и исключения служебных позиций.
  • Схема данных — структура витрины транзакций, источники, требования к полноте и частоте поступления, обработка возвратов и весовых товаров.
  • Регламент пересчёта — триггеры и периодичность, порядок прогона при накоплении новых транзакций и изменении справочников.
  • Контроль устойчивости правил — проверка связок на нескольких периодах и точках продаж, отсев случайных совпадений, журнал причин исключения.
  • Регламент обновления справочников — фиксация даты актуальности, контроль доли нераспознанных позиций в корзинах и порог, при котором правило уходит на пересмотр.
  • Отчётность и передача — состав регулярных выгрузок, описание витрин для аналитиков, порядок доступа к среде расчёта и порядок сопровождения.

Кейс: как сократили пустые корзины и редкие сочетания

До: интуиция вместо данных

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

Что изменили и что получили

Собрали историю чеков за длинный период и посчитали правила ассоциаций по поддержке, достоверности и силе связи. Отсеяли шум: сезонные всплески, пары, склеенные одной скидкой, позиции без маржинальности. На выходе — ранжированный список связок, который ушёл в категорийный менеджмент как план выкладки и совместных акций; эффект проверяли на сопоставимых по трафику точках.

Внедрение сократило долю чеков с одной позицией с 44% до 31%, среднее число позиций в чеке выросло на 0,6, а доля акций, построенных на связках из модели, дошла до 70%. Метрики до и после считали по одним и тем же правилам, поэтому рост нельзя списать на сезонность.

Сочетания товаров перестали быть делом вкуса: видим, какие пары действительно тянут друг друга, и планируем выкладку по этому списку — результат повторяется от точки к точке.

— руководитель направления «ПродМаркет»

Что делать, если в каталоге уже есть ручные правила сочетаний?

Ручные правила сочетаний — это договорённости: промо-связки, требования поставщиков, логика выкладки, которую менеджер правит в админке. Данными они не проверяются: пара живёт в каталоге годами, а в чеках пересекается редко.

Рабочая схема — гибрид: ручные правила остаются жёсткими ограничениями, расчётный слой даёт рекомендации с весом и объяснением. Частоту наборов и силу связи считаем по классическому подходу Agrawal и Srikant — он даёт числа вместо вкусовых оценок.

Вариант Когда подходит Ограничения
Только ручные правила Мало данных, узкий ассортимент Конфликты правил не видны, не масштабируется
Теневой прогон расчёта Первый шаг миграции на расчёт Выкладка пока управляется вручную
Гибрид: ручные как ограничения Каталог с промо и обязательствами Нужен регламент приоритетов
Полный переход на расчёт Большой поток чеков, нет внешних обязательств Теряется формальная логика категорий

Миграция на расчёт идёт этапами: сводим текущие правила в один реестр с источником и сроком, гоняем расчёт в теневом режиме, собираем отчёт по конфликтам. Каждую спорную пару отдаём менеджеру с цифрами — поддержка, уверенность, число чеков.

После согласования правило получает приоритет, и расчёт начинает управлять выкладкой в оговорённых зонах каталога. Обычно 10-15% ручных правил отменяются как ошибочные, остальные сохраняются и начинают работать на данных.

Частые технические сомнения перед стартом

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

Сезонность в правилах — как не тащить праздничный всплеск в обычный месяц?

Правила считаем на скользящем окне и храним привязку к периоду: предпраздничный, базовый, период распродаж. Связь, поднявшаяся на сезонном спросе, не попадает в базовый набор — иначе летние рекомендации тянут новогодние позиции.

Оптовые отгрузки в данных — не испортят ли они статистику?

Испортят, если считать всё в одном потоке: одна крупная отгрузка весит как сотни обычных чеков. Разделяем потоки по типу отгрузки и каналу, строим правила отдельно для розницы и для опта, а смешанные сочетания помечаем как низкоприоритетные.

Как понять, что связь настоящая, а не случайная?

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

Как часто пересчитывать правила?

Частота задаётся темпом изменений: при быстром обновлении ассортимента и цен — ежедневное дополнение на новых данных, при стабильном каталоге — полный пересчёт раз в неделю. Расписание фиксируем в регламенте, чтобы набор правил не «дрожал» между запусками.

Обсудим вашу задачу и вернёмся с оценкой и планом

Первый разговор занимает около часа и идёт по делу — смотрим на данные, а не на презентацию. Чтобы вернуться с оценкой проекта и планом работ, нам нужен минимум контекста, остальное уточняем сами.

  • Выгрузка транзакций за несколько месяцев: чеки, позиции, время покупки, канал продаж.
  • Расшифровка справочника товаров: категории, наборы, весовые позиции, сезонные замены.
  • Перечень бизнес-вопросов: допродажа в чеке, раскладка на полке, сборка наборов, акции.
  • Где лежат данные и как к ним подключиться: хранилище, отчётный слой, регулярная выгрузка.
  • Ограничения по доступу: правила обезличивания, требования службы безопасности, режим.
  • Кто на стороне заказчика принимает результат и в каком виде его ждёт.

По итогам разговора присылаем план работ: этапы, состав данных, формат выдачи, срок старта проекта и точки, где вы принимаете решение о продолжении. Схема расчёта показателей тоже идёт в комплекте — чтобы результат можно было объяснить бизнесу, а не принять на веру.

Дальше — короткий пилот на вашем срезе данных: он показывает, ловит ли модель устойчивые связки, и только после этого мы говорим о масштабировании. Обсудить задачу можно письмом или коротким созвоном — этого достаточно, чтобы перейти к оценке.

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139