Создавайте и ориентируйтесь на сегменты клиентов с помощью улучшенного алгоритма RFM.

Несколько лет назад, когда я начал свою первую работу в качестве Data Scientist, ко мне подошел UX-менеджер электронной коммерции и попросил построить сегментацию, чтобы лучше понять поведение клиентов на наших веб-сайтах. Я был очень взволнован, но не знал, как начать. Я допустил ошибки, это заняло у меня некоторое время, но мне удалось создать эту сегментацию, используя базовые методы машинного обучения. Вот история о том, как я создал свою первую сегментацию.

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

Быстрый современный

Идея заключалась в том, чтобы использовать пожизненную ценность клиента (CLV). Почему ? Потому что этот KPI часто используется в маркетинге, и его легко понять и внедрить.
В этой статье исследователи отмечают тот факт, что пожизненная ценность клиента помогает улучшить наши знания о клиентах, но также помогает уменьшить отток. Они говорят, что важно использовать разные виды данных, такие как информация о клиентах, социально-демонстрационная информация, транзакции…

Кроме того, [1] и [2] говорят о пожизненной ценности клиента и представляют метод RFM. Они отмечают тот факт, что CLV довольно сложно рассчитать сам по себе, но для моделирования CLV можно использовать метод RFM. Алгоритм денежной оценки частоты недавности часто используется в маркетинге для классификации клиентов на основе истории их транзакций. В этих работах они использовали одно K-среднее для каждой метрики и объединяли их для создания сегментов. Эта вторая статья делает еще один шаг вперед, добавляя дополнительные показатели. Я нашел эту идею интересной, во-первых, потому, что она тесно связана со статьей, о которой мы уже говорили, а также потому, что в этот раз мы только что добавили навигационные данные, которые были совершенно новым источником данных в хранилище данных. Мы действительно существовали для использования этих навигационных данных, поэтому решили создать собственную модель, сочетающую метод RFM и наши навигационные данные.

Наш выбор

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

  • Recency : количество дней, прошедших с момента последнего заказа.
  • Частота: количество выполненных заказов.
  • Денежная стоимость : общая потраченная сумма.

Все 3 метрики могут быть рассчитаны с данными заказа компании. В нашем случае мы хотели пойти немного дальше и включить четвертую метрику, основанную на данных навигации по веб-сайту, поэтому мы включили следующую метрику:

  • Активность: количество посещений сайта клиентом.

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

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

Подготовка данных

Двумя наборами данных, необходимыми для этого анализа, были история покупок электронной торговли и история журналов навигации электронной торговли. Для первого процесс прост, а процесс подготовки данных короток, поскольку эти данные являются ключевыми для компании и, вероятно, уже структурированы в хранилище данных. Однако для журналов просмотра это немного сложнее. В то время 1/3 всего нашего озера данных (если говорить о размере) составляли журналы просмотра. В то время мы знали, что нам придется использовать Pyspark для обработки этих данных.

Во-первых, журналов просмотров не было в хранилище данных. Были только в озере данных, потому что мы еще не сделали процесс структурирования. Поэтому нам нужно было получить данные из озера данных, читая каждый файл один за другим. Проблема здесь в том, что журналы просмотров часто делятся по часам из-за их размера и ограничений API, и здесь это имело место. Итак, если вы хотите иметь 2-летнюю историю для одного веб-сайта (одной страны), вам нужно прочитать:

24 х 360 х 2 = 17 280 файлов

Это много… В первый раз, когда я попробовал фиктивный способ, я прождал всю ночь, чтобы получить данные за 2 года, затем ядро ​​моего ноутбука рухнуло, и мне пришлось перезапустить процесс с нуля. Так что мы должны были что-то сделать. Мы сделали две операции, чтобы сократить время, необходимое для чтения набора данных:

  1. Объедините 24 файла за день в один файл, чтобы сократить задержки ввода-вывода.
  2. Конвертируйте этот единственный файл в паркетный формат

Эти две операции позволили нам сократить время чтения в 3 раза, а также уменьшить объем памяти в 4 раза, что также является хорошей новостью.

После того, как этот процесс чтения был завершен, мы структурировали данные в фрейм данных Spark, агрегировали их по IP-адресам и идентификаторам клиентов. В конце мы использовали Z-оценку, чтобы убрать выбросы:

  • X : значение элемента
  • μ : среднее значение совокупности
  • σ : стандартное отклонение генеральной совокупности.

Как только весь процесс подготовки данных был завершен, мы были готовы применить наш алгоритм к нашим данным.

Применение нашей модели RFMA

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

Сначала мы применили классическую модель RFM. Мы создали кластеризацию k-средних для каждой метрики, используя метод локтя, и агрегировали кластер, чтобы получить общий балл кластера. Поскольку мы создали 3 кластера для давности, 2 для частоты и 3 для денежной ценности, наша общая оценка кластера изменяется от 0 («худшие» клиенты: высокая давность, низкая частота, низкая денежная ценность) до 5 (лучшие клиенты: низкая давность). , высокая частота и высокая денежная стоимость). Вот распределение общего балла:

Как видите, большинство клиентов находится в кластерах 1, 2 и 3:

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

  • Давность: 3 кластера
  • Частота: 2 кластера
  • Денежная стоимость: 3 кластера
  • Активность: 3 кластера

Таким образом, в этой модели наши клиенты сгруппированы от кластера 0, представляющего наших клиентов с низким интересом к бренду, до кластера 7, представляющего наших золотых клиентов:

Как вы можете видеть еще раз, большинство наших клиентов находятся в кластерах 1, 2 и 3. Точно так же кластеры 5, 6, 7 представляют только 5,6% изученных клиентов.

Чтобы лучше визуализировать эту сегментацию, мы сгруппировали клиентов в 3 уровня:

  • Бронзовые клиенты (низкий CLV): кластеры 0 и 1.
  • Серебряные клиенты (средний CLV): кластеры 2 и 3.
  • Золотые клиенты (высокий CLV): кластеры 4, 5, 6 и 7.

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

  • Применение k-средних для каждой метрики может резко увеличить количество кластеров, если у вас много метрик.
  • Добавление метрики означает добавление кластеров
  • Мы использовали очень мало информации о транзакциях (нет данных о типах продуктов).
  • Даже если мы использовали метод локтя, чтобы получить лучший K для каждой метрики, это не означает, что окончательное распределение кластеров будет соответствующим

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

Забавный факт, сейчас мы работаем над другим проектом по сегментации в Clarins. Этот новый проект направлен на более мощную сегментацию с множеством функций и активаций. Я, вероятно, напишу еще одну статью, когда сегментация будет закончена. Оставайтесь на связи!

Спасибо, что прочитали эту статью. Было довольно забавно оглядываться на прошлый проект, который я делал, вспоминать свои ошибки и вопросы, на которые я не ответил. Тем не менее, я горжусь этим проектом. Не стесняйтесь аплодировать и комментировать, если вы хотите поделиться своими отзывами!

Ресурсы

[0] : Хёнсок Хван, Тэсу Юнг, Ыйхо Су, Модель LTV и сегментация клиентов на основе потребительской ценности: тематическое исследование в отрасли беспроводной связи.

[1] : Чу Чай Генри Чан, Интеллектуальный метод сегментации клиентов на основе ценности для управления кампаниями: пример автомобильного ритейлера.

[2]: Реза Аллахьяри Соини и Эбрагим Фатализад, Сегментация клиентов на основе модифицированной модели RFM в страховой отрасли.