Самая главная формула успеха — знание, как обращаться с людьми. Теодор Рузвельт В прошлой статье попытался рассказать про основы аналитики ценообразования. Теперь давайте поговорим о более интересных вещах. Вы когда-нибудь задумывались о том, почему вы покупаете определенные продукты в магазинах, как выбираете среди множества аналогов? Скорее всего, четкого ответа под все возможные походы в магазин дать не получится, многие из них спонтанны. Но общая идея очевидна – при походе в магазин вы пытаетесь закрыть имеющуюся потребность (в еде, гаджетах, развлечениях, блэкджеке). В данной статье на примере продуктовых ритейлеров расскажу об имеющемся опыте, как используя некоторые базовые логические предположения и анализ сообществ в графах, можно определить, как именно покупатели выбирают товар. В классических историях о ритейле сразу вспоминаются истории о рекомендательных системах, в которых уже давно используется анализ чековых данных покупателей. Например знаменитые истории про Target и про пиво с подгузниками.  
Данные кейсы построены на известном в узких кругах подходом, который называется Market Basket Analysis (MBA) или анализ ассоциативных правил. Основная идея подхода — построить набор правил вида “когда покупают X, обычно покупают и Y” и использовать их в дальнейших процессах (персональные рекомендации, выкладка и т.п.). Правила позволяют определить товары комплементы, которые дополняют друг друга. Данный подход довольно популярен ввиду простоты реализации и хорошей интерпретируемости результатов. Основные проблемы заключаются в том, что не всегда понятно, как применять полученные правила и как, кроме комплементов, определить товары заменители-субституты. Попробуем немного улучшить данный подход: сгруппировать товары в зависимости от потребностей покупателей и понять, как покупатель принимает решение о покупке. Давайте немного усложним подход MBA и рассмотрим дополнительно информацию по картам лояльности, которые есть у многих российских ритейлеров (для онлайна можно использовать ID клиента). Проведем MBA не на уровне чековых данных, а на уровне карточек (т.е. вместо ID чека будем использовать ID карты/ID клиента). В результате мы получим пары товаров, которые связаны друг с другом на уровне клиента, т.е. если клиент купил товар X, то он также покупает товар Y и ключевое здесь, что товар Y может быть куплен во время другого похода в магазин.  Давайте подумаем, как можно определить товары заменители. Сделаем логичное предположение, что человек не часто покупает товары заменители в одном чеке (вы же редко покупаете стиральный порошок 3 и 5 кг одновременно). Это самое важное предположение во всем анализе, которое хорошо работает для продуктового ритейла/хоз.товаров и с небольшими корректировками для остальных видов ритейлеров. Из этого предположения можно сделать вывод, что если пара товаров часто покупается клиентами, но при этом редко встречается в одном чеке, то с большой уверенностью можно сказать, что это товары заменители. Утверждение довольно сильное и требует предварительного качественного анализа связей – необходимо убрать статистически незначимые связи, убрать “бананы” и пр. Для оставшихся связей можно ввести метрику W, которая отражает, насколько чаще товары покупаются в рамках одной карты лояльности, чем в одном чеке. В результате у нас образовались пары товаров вида “товары X и Y редко берут в одном чеке, но часто берут одни и те же люди” с некоторой мерой связи W. Чем эта мера связи больше, тем больше товары можно считать заменителями. Следующий логичный шаг – посмотреть не на отдельные пары товаров, а на все имеющиеся пары в совокупности. Т.е. каждую пару товаров можно представить в виде ребра графа с весом W. Если изобразить полученные связи графически, то получится что-то такое: 
Из графа явно видны “сообщества” товаров, сильно связанные друг с другом. Давайте применим алгоритмы поиска сообществ в графах (social network analysis, SNA) и посмотрим на результат. Для примера использован алгоритм Лувейна. В результате должны получится группы товаров-заменителей. Посмотрим на пример результата: Результат выглядит позитивно, данные товары действительно похожи на товары заменители и закрывают потребность в йогуртах от DANONE. Все полученные группы товаров хорошо согласуются с интуитивным понимаем товаров-заменителей. Есть, конечно, и менее очевидные примеры, которые ритейлер относил к разным группам, в частности из-за бренда, но с точки зрения покупателя они все равно закрывают одну потребность: Алгоритм Лувейна позволяет строить иерархии сообществ. В упрощенном виде – давайте построим сообщества разных размеров, развернем их в дерево (дерево принятие решений покупателя, customer decision tree) и посмотрим на пример результата:  Ура! Полученное дерево отлично трактуется с точки зрения бизнес логики и интуиции – человек определился, что хочет сгущенку, потом выбрал между банкой и пакетом, затем выбрал цену, по которой готов купить товар. Теперь мы понимаем по каким характеристиками человек закрывает потребность в сгущенке – вид упаковки и ценовой сегмент. В данном конкретном примере нет привязанности к бренду и прочих вещей, которые часто любят приписывать к товару. Полученное дерево позволяет определить потребности покупателей (нижние уровни дерева) и характеристики товаров, которые влияют на выбор (согласно иерархии дерева). Применить результат можно в различных областях ритейла: В результате мы немного усложнили классический MBA анализ, получили результаты, которые сразу можно использовать в различных процессах ритейлера. Задачка интересная, требуется и логически подумать, и проанализировать данные, и кластеризовать графы.  Надеюсь было интересно! Оптимизируйте процессы, кластеризуйте графы, оптимизируйте хранение данных (ведь Garbage In – Garbage Out) и получайте классные результаты.