Что дает рознице машинное обучение: пример проекта

    У розницы очень разнообразный круг покупателей. Их много – всевозможных профессий и уровней дохода, от молодёжи до пенсионеров. Такое разнообразие не получится корректно описать двумя-тремя бизнес-правилами, потому что вы просто не сможете охватить все сочетания критериев и неизбежно потеряете часть клиентов. Поэтому для розницы очень важно как можно точнее сегментировать свою аудиторию, но это неизбежно усложняет модели. Здесь на помощь приходят технологии Machine Learning, дающие бизнесу более точные прогнозы и ответы на важные вопросы.





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

    Другой актуальный вопрос: как оптимизировать работу персонала? Например, нужно спланировать рабочие смены кассиров и продавцов-консультантов. Один способ подразумевает использование статистического анализа. Аналитик оценивает активность клиентов в зависимости от дня недели и видит, что в субботу покупают больше всего, а в пятницу и в воскресенье чуть меньше. Эту гипотезу проверяют статистическими тестами, а выводы передают руководству.

    Но такой анализ может не учитывать многих сочетаний факторов. Например, если 7 марта приходится на среду — купят ли в этот день больше, чем в пятницу (ведь в обычное время пятница – более популярный день, чем остальные будни)? А выпускные? Или местные праздники? Чем больше факторов, тем труднее их все учесть с помощью простых правил. И вместо того, чтобы бесконечно усложнять правила, можно построить модель, которая спрогнозирует спрос на конкретный день.



    Наш проект в non-food ритейле


    В данном случае нужно было проанализировать базу покупателей (примерно 2,5 млн человек) и предсказать, кто из них вернётся в магазин в ближайшие две недели. Мы взяли два метода библиотеки CatBoost — CatBoostClassifier и CatBoostRegressor, первая — для прогнозирования состава аудитории, вторая — для выбора самых востребованных товаров в ближайшие 2 недели. CatBoost вышел в самом начале нашего проекта, это был свежий подход к работе с категориальными признаками. А поскольку номенклатура товаров нашего заказчика содержит очень много категориальных фич, мы с удовольствием попробовали новинку в работе. После подбора параметров модель сразу же оправдала наши надежды точным прогнозированием. Не зря CatBoost — одна из самых популярных сегодня моделей градиентного бустинга.

    Для модели взяли статистику за 2017 год:

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

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

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

    Клиенты, рекомендованные моделью для целевой рассылки, за один визит имели более крупный медианный чек, а за анализируемый период купили суммарно на бо̒льшую сумму, чем прочие клиенты.



    В итоге после рассылки около 30% клиентов приобрели хотя бы один товар из трех, предсказанных моделью.

    Теперь компания может точнее прогнозировать продажи: ритейлер знает, кто придет к нему в ближайшее время и что купит. Это помогает не только оптимизировать логистику, но и снизить сопутствующие расходы. Например, если конкретный клиент обычно ничего не покупает зимой, то не нужно отправлять ему SMS в январе. Модели также оптимизируют рассылки: специалист на основе прогноза сразу понимает, кому отправить e-mail, а кому — срочное SMS.

    Подводные камни


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

    1. Контрольная — рассылку не получали.
    2. Группа с напоминаниями — получали общий текст от магазина.
    3. Группа с рекомендациями — получали SMS с тремя конкретными товарами, предсказанными моделью.

    Оказалось, что люди, получившие рекомендации, покупали меньше, чем клиенты, не получавшие рассылок. Меньше был и средний чек, и количество приобретенных товаров. T-тест показал, что различия были статистически значимы (pvalue=0,017).



    Мягко говоря, такие результаты всех обескуражили. Стали искать причину и выяснили, что магазины отправляли клиентам сообщения в определенный мессенджер, а его пользователи в нашем сегменте изначально покупали меньше по сравнению с другими клиентами. Об этом не знали даже маркетологи заказчика. Так что эксперимент получился некорректным, но по его результатам мы добавили в модель параметр «пользователь мессенджера». Этот случай демонстрирует, как тщательно нужно выбирать каналы для общения с клиентами.
    Какие ещё можно сделать выводы?

    • Данных много не бывает.
    • Иногда взгляд аналитика со стороны приводит к свежей идее.

    Сегментация клиентов


    Анализ данных позволяет обнаружить закономерности, которые были скрыты в ранее доступной информации. Хорошим примером служит сравнение групп клиентов с помощью RFM-сегментации (Recency Frequency Monetary) и сегментации с использованием алгоритмов ML.

    В RFM-сегментации используются три основных показателя:

    • давность последней покупки,
    • частота покупок за период,
    • сумма, потраченная клиентом.

    На основании этих данных выделяют основные группы: «транжиры», «лояльные клиенты», «почти потерянные клиенты» и т.п. А маркетологи уже включают нужную целевую группу в определенную рассылку или делают предложение именно для этой группы.

    Например, с помощью RFM-сегментации можно выделить сегменты покупателей и представить их как точки в трехмерном пространстве:



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

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

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



    Давайте расширим набор характеристик клиентов: добавим пол, возраст, особенности поведения и прочее. Как теперь алгоритм распределит покупателей?

    Например, есть группа, которая охватывает как лучших клиентов (самых прибыльных), так и их «соседей», приносящих меньшую прибыль. Почему алгоритм выделил эту группу — вопрос для аналитика. Быть может, эти клиенты при дополнительном стимулировании покажут большую доходность. Или, напротив, эти клиенты не особо перспективны и повышение доходности было случайным отклонением, — стимулировать их дополнительно бессмысленно. Можно выдвинуть различные теории, но проверять их приходится экспериментально.



    Планирование складов — прогнозирование продаж


    Дальше у проекта возможны несколько вариантов развития. Например, можно прогнозировать покупки в конкретном магазине на ближайший период. Тогда администратор магазина сможет вовремя заказать с центрального склада нужные товары.

    Анализ покупок в конкретной торговой точке поможет сформировать и выкладку товаров на витринах. К примеру, если в магазин приходит много покупателей-мужчин, отдел с мужской продукцией не стоит размещать в дальнем углу.

    Нельзя забывать о так называемой каннибализации магазинов. То есть, если две точки продаж одной сети находятся рядом (например, в разных концах одной улицы), одна из них может оттягивать клиентов на себя, а вторая будет простаивать. Можно построить модель, которая станет отслеживать подобные явления и сигнализировать об этом.

    ***

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

    Аналитики Дирекции по разработке и внедрению ПО, «Инфосистемы Джет»
    Инфосистемы Джет
    319,00
    Компания
    Поделиться публикацией

    Комментарии 18

      +3

      Оказалось, что люди, получившие рекомендации, покупали меньше, чем клиенты, не получавшие рассылок
      Никто не любит спам :)

        0
        Не факт, что тут именно про спам. Например, когда мне от одной крупной федеральной сети приходит рассылка о скидках на крепкий алкоголь — я чаще всего заезжаю в магазин именно за ним, а из прочего покупаю то, что вспомнится на бегу. А в другой день, без рассылки, я в тот же магазин наеду с готовым списком покупок, существенно превышающим первый кейс и по количеству позиций, и по сумме затрат.
          –1
          Ваше предположение вполне жизненное и тоже имеет право на существование, но в нашем случае была выявлена другая закономерность.
          Мы сравнивали средний чек пользователей «одного мессенджера» (конкретного канала получения информации) со всеми остальными клиентами, вошедшими в таргет-рассылку (как получившими в итоге напоминание и/или рекомендации, так и нет). Конкретно для этих пользователей «одного мессенджера» средний чек был заметно ниже, чем для остальных в таргет-рассылке. Это может быть связано с большим числом факторов (этим мессенджером в принципе пользуются менее выгодные магазину клиенты, или менее выгодные клиенты оставляют этот мессенджер в качестве контакта при заполнении анкеты, или что-то еще), теорий может быть много.
          +5
          Божественные диаграммы! Полное отсутствие читабельности!
            0
            я так понял, они после уменьшения размерности.
              +1
              они просто красивые, разноцветные, информация представлена в неочевидном виде. Там, где должно быть по одному значению каждого цвета (вторая сверху), налеплено точек так… я вот не понимаю, что они там все делают?
              У 3Д информативность нулевая.
              В общем надо или уделять визуализации данных больше внимания или всё таблицами предоставлять, проще будет.
                +2
                Нет, это тоже спам, только маркетинговый. Сложная диаграмма, красивая, но не понятная никому.
                0
                Обычно основное предназначение таких визуализаций — медитировать на них
                0
                Хм… а если просто сделать мобильное приложение, где можно будет подписаться на акции по интересующему товару и предлагать пользователю подписываться на уведомления по покупаемому им товаром. Ну в уведомлениях писать «Товар рекомендованный искуственным интелектом».
                  0
                  А объем выборок не подскажете, когда это можно применять? Сеть Десяток магазинов, десяток — другой покупателей в день ( в зависимости от магазина) покупают пяток товаров на чек… Есть смысл анализировать?
                    0
                    Датасет в несколько миллионов покупателей, десятки магазинов.
                      0
                      Это у Вас… Интересует начиная с каких объемов это может начать работать?
                        0
                        Это может быть и один магазин с хорошо налаженным сбором данных о не очень многочисленных покупателях и транзакциях на протяжении нескольких лет. Или большая сеть, собравшая данные за несколько месяцев с несколькими миллионами транзакций. В конечном счете всё упирается именно в доступность данных.

                        Очевидно, что крафтовой лавке с десятком покупателей в месяц смысла нет точно, а сети, скажем, из десятка ларьков с фруктами может быть полезно, если они собирают данные о своих покупателях и их покупках.
                      0
                      Думаю понятие «статистической значимости» здесь применимо на 99,99%. Меня учили, что при анализе «человеков» ((С) Футурама) объём выборки в 1000 — минимально достаточен. При уменьшении этого числа точность деградирует значительно сильнее, чем повышается при его (даже значительном) увеличении.
                      Другими словами: 1000 — нормуль, 10000 — хорошо, 1 млн. — ещё лучше, 500 — скорее всего полня фигня.
                      0
                      Какие обозначения приняты для нижней диаграммы?
                        –1
                        Это визуализация методом главных компонент: проекция на плоскость положения точек относительно друг друга в многомерном пространстве. Соответственно, оси — компонента 1 и компонента 2.
                        0
                        Стали искать причину и выяснили, что магазины отправляли клиентам сообщения в определенный мессенджер, а его пользователи в нашем сегменте изначально покупали меньше по сравнению с другими клиентами. Об этом не знали даже маркетологи заказчика. Так что эксперимент получился некорректным, но по его результатам мы добавили в модель параметр «пользователь мессенджера»

                        Вам бы вообще стоило начать с корректной постановки задачи для A/B и A/A тестов, прежде чем фичи добавлять.

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

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое