Связаться с нами
Закрыть
Назад в блог
Назад в блог

Автоматизация RFM-анализа: как сегментировать клиентскую базу на Python

#аналитика
14 ноября 386 просмотров 7 минут на чтение
Рассказывает
Иван Барченков
Коммерческий директор
RFM-анализ позволяет направлять маркетинговые ресурсы в нужном направлении благодаря сегментации клиентской базы по трем основным показателям потребительского поведения:

R - recency — давность (как давно ваши клиенты что-то покупали);
F - frequency — частота (как часто клиенты покупают);
M - monetary — деньги (общая сумма покупок).

Существует несколько способов проведения RFM-анализа. Все они отличаются уровнем автоматизации и денежными вложениями. В данной статье мы рассмотрим наиболее оптимальный способ - RFM-анализ с помощью языка программирования Python. 

Преимущества способа:
  • Автоматизация процесса сегментации по RFM.
  • Возможность работы с многотысячной (объемной) клиентской базой.
  • Бесплатный инструмент для проведения RFM-анализа.
Недостатки способа:
  • Может показаться сложным для специалистов, не имевших дело с программированием.

На самом деле, работа с Python легче, чем может показаться на первый взгляд. А если учесть, что в статье приводится поэтапная настройка RFM-анализа, то задача по силам даже начинающему маркетологу.

Принцип RFM-сегментации

RFM-анализ производится на основе выгрузки из системы учета/CRM/ERP или excel. Каждого клиента базы данных за исследуемый период необходимо распределить по соответствующим сегментам. Для этого в группах recency, frequency и monetary определим еще по три категории (для более детального анализа их может быть больше), обозначив цифрами от 1 до 3.


Сегментация по RFM


В результате за каждым клиентом будет закреплено трехзначное число. Например, 213 - сегмент покупателей, относительно недавно (2) совершивших разовую покупку (1) с высоким чеком (3).

В нашем случае все клиенты будут распределены по 27 сегментам. Это позволит направлять digital-инструменты на более узкую аудиторию, а не целиться рекламой на общую массу клиентов с разными целями и отношением к бренду.

С помощью таблицы в Microsoft Excel можно разбить клиентов по сегментам вручную. Но если база состоит из нескольких сотен тысяч уникальных покупателей, но разумнее прибегнуть к автоматизации процесса. 


Python для автоматизации RFM-анализа

Для автоматизации RFM-анализа потребуется библиотека RFMizer на языке программирования Python. Она была создана сотрудником Google Александром Приходько и размещена по ссылке https://github.com/Slony/rfmizer

Предоставляем пошаговую инструкцию для запуска скрипта.

Подготовительный этап

Шаг 1. Скачать архив библиотеки RFMizer и распаковать его. 

Шаг 2. Установить язык программирования Python, точнее его интерпретатор версии 3 и выше. 

Для облегчения данной задачи рекомендуем скачать и установить программу Anaconda. Версии для Windows, MacOS и Linux доступны по ссылке https://www.anaconda.com/distribution/ .

Выбираем версию Python 3.7 version (доступна на момент статьи) или выше

    
Шаг 3. Установить пакет pyyaml и plotly. 

Заходим в Anaconda-Navigator в раздел Environment (окружение). В правом поле ввода поискового запроса указываем наименование искомых файлов. Получив результат поиска, нажимаем на пакет и кликаем по кнопке Apply.


На изображении пример с другим пакетом, который еще не установлен

Подготовительная часть перед работой с Python завершена. Следующий этап - настройка библиотеки RFMizer.

Настройка RFMizer

RFMizer - это библиотека на языке Python, которая позволяет автоматизировать процесс произведения RFM-анализа. На данном этапе необходимо обозначить собственные показатели для последующего запуска скрипта.

Шаг 1. Зайти в папку, в которую распаковано содержимое архива RFMizer. Открыть файл config.yaml.

Шаг 2. Установить текстовый редактор, поддерживающий  плагины на языке Python.
Следующие операции подразумевают редактирование файла config.yaml. Для этого лично мы применяем программу Sublime Text.
Если у вас установлен другой текстовый редактор, поддерживающий  плагины на языке Python, скачивать Sublime Text не обязательно.

Шаг 3. Подставить в файл config.yaml данные для RFM-анализа.
Внутри файла config.yaml вместо строк-подсказок подставляем собственные значения или значения клиента.

В данном документе задается:
  • количество сегментов в каждом из параметров Recency, Frequency, Monetary (в нашем случае три)
  • период, за который делается анализ  look_back_period 
  • значения предсказания prediction_period

Ниже приводим содержимое файла в текстовом виде:

input_columns: # указываете название столбцов в исходном файле, который будете анализировать. Он же выгрузка из CRM

  - order_date

  - user_id

  - order_value

segments_count:

  recency: 3  # указываете количество сегментов по данному показателю

  frequency: 3  # указываете количество сегментов по данному показателю

  monetary: 3    # указываете количество сегментов по данному показателю

rfmizer:

  look_back_period: 365 # указываете количество дней от сегодняшней даты для анализа

  output_columns: # указываете столбцы, которые будут в результате работы. Вы можете указать больше столбцов, но их название должно совпадать с названием из input_coloms

    user_id: user_id

    recency: recency

    frequency: frequency

    monetary: monetary

predictor:

  prediction_period: 182 # lookback window for RFMestimator (number of days)

output_path: . # путь к файлу с результатами. По умолчанию та же папка, где и файлы скрипта

output_file_prefix: RFM_3-3-3-365-182 # задаете название файла


Шаг 4. Сохранить измененный файл.

Шаг 5. Добавить в папку со скриптом файл выгрузки из CRM.

Выгрузка из CRM должна содержать следующие столбцы:
  • order_date
  • user_id
  • order_value

Важно!

Необходимо соблюдать требования к файлу из CRM (формат csv). Все они обозначены в документе readme.txt (файл также доступен по ссылке https://github.com/Slony/rfmizer), содержащемся в библиотеке RFMizer. 

Выдержка из файла readme.txt

  • Файл должен быть в кодировке UTF-8
  • В начале файла не должно быть маркера последовательности байтов (BOM, byte order marker).
  • Поля в строках должны разделяться запятыми: «,».
  • В качестве символа десятичной точки в числах должен использоваться символ `.` (точка) или символ `,` (запятая).
  • В полях, содержащих двойные кавычки `"`, все символы двойных кавычек должны быть задвоены: везде вместо `"` надо вставить `""`
  • Поля, содержащие запятую `,`, двойные кавычки `"` или переводы строки, должны быть заключены в двойные кавычки `"`.

В конце файла readme.txt прописан алгоритм работы RFMizer’а. Поклонникам программирования будет интересно с ним ознакомиться. Если вы не из их числа, то пропустить данный раздел не страшно.

Запуск скрипта

Для запуска скрипта требуется выполнить команду python rfmizer.py config.yaml input-file 

Сделать это необходимо из папки, в которой находится файл.

На заметку!
Последний параметр команды input-file - это название файла из CRM. Чтобы было проще, советуем переименовать файл в orders.csv. Тогда команда будет выглядеть так: python rfmizer.py config.yaml orders.csv

Шаг 1. Выполнить команду pwd в командной строке для определения директории. Получаем ответ /Users/ibarchenkov.

Шаг 2. Выполнить команду для перехода в папку со скриптом.

После нажатия “Ввод” последует смена директории и запуск скрипта.

В результате в папке со скриптом появятся три файла:

  • RFM_3-3-3-365-182_borders.csv
  • RFM_3-3-3-365-182_mapping.csv
  • RFM_3-3-3-365-182_ratios.csv

Напомним! 
Новые файлы получили такое название, потому что в config.yaml в параметре output_file_prefix было указано RFM_3-3-3-365-182.


Обзор результата работы скрипта

RFM_3-3-3-365-182_borders.csv - это текстовый файл в формате CSV, который содержит числовые значения вычисленных границ между сегментами. С большой долей вероятности вы не будете никак работать с данным файлом

Пример содержимого файла:

dimension,segment,border

frequency,1,2

frequency,2,3

frequency,3,4

frequency,4,6

monetary,1,23.7

monetary,2,35.95

monetary,3,51.0

monetary,4,82.0

recency,1,-252

recency,2,-192

recency,3,-137

recency,4,-80



RFM_3-3-3-365-182_mapping.csv - текстовый CSV-файл, в котором каждая строка состоит из четырех обязательных полей и произвольного количества необязательных полей (например, параметры географической принадлежности места совершения заказа или любые другие параметры, которые интересны).

Это наиболее важный файл. Он позволяет соединить результаты RFM-анализа и персональные данные пользователя, которые в последующем нужны для работы в рекламных системах.

Обязательными являются поля:
  • user_id - внутренний идентификатор пользователя в CRM-системе (берется из исходного файла).
  • Новизна (recency) - условно, давность последнего заказа
  • Частота (frequency) - сегмент измерения частоты заказа
  • Доходность (monetary) - денежное измерение

Пример содержимого файла:

user_id,recency,frequency,monetary,geo

274223,1,3,4,1

826746,2,2,1,5

734242,4,1,2,7


RFM_3-3-3-365-182_ratios.csv - файл содержит большое количество строк.

Количество строк должно быть равно следующему числу 1 (строка с названием столбцов) + R*F*M + 1 (строка с значением 0,0.0). Получаем 29 строк.


Пример нескольких строк файла:

Наибольший интерес в данном файле представляет столбец bid ratio. Bid ratio является мультипликатором ставки для каждого из пересечений сегментов пользователей, который создает скрипт RFMizer. Это означает, что если ранее ставка для закупки трафика была равна 10 рублям, то при работе с отдельными сегментами, например для сегмента 1,2,1, ставку 10 рублей необходимо умножить на мультипликатор 0,47 (значение округлено до сотых).

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

Коллеги, приходите к нам за услугой аналитики для бизнеса!

Другие статьи по теме
15 января 432 просмотра 6 минут
#аналитика
Цели в Google Analytics: как создать, настроить и установить
06 октября 223 просмотра
#аналитика
Что такое Big Data простыми словами
Большие данные становятся неотъемлемой частью нашей жизни. Все мы ежедневно используем какие-либо технологии и контактируем с продуктами и крупными компаниями. Компании предлагают нам свои продукты и, в свою очередь, используют данные, которые мы им предоставляем (начиная от отслеживания переходов на сайте и заканчивая персональной информацией при оформлении заказов). Настал момент подробнее разобраться, как собираются эти огромные потоки информации и что с ними делают.
10 сентября 180 просмотров
#аналитика
Customer Journey Map: что это, зачем, источники информации, где и как визуализировать
«Клиент редко покупает то, что бизнес ему продает», – сказал Питер Друкер, один из известных теоретиков менеджмента. Многие клиенты вкладывают другие смыслы в ваши товары и приходят к покупке с помощью тех каналов, которым вы, возможно, не уделяли внимание.
22 июля 444 просмотра 4 минуты
#аналитика
CRM-системы: что это такое и зачем они нужны
Автоматизация рабочих процессов сейчас – это привилегия не только крупного бизнеса. IT-технологии развились до такой степени, что различные аналитические системы и другие нужные продукты стали доступны малым и средним компаниям. В том числе и программы для автоматизации работы с клиентами. Если вы все еще сомневаетесь в необходимости внедрения CRM-системы, то эта статья для вас.
20 июля 154 просмотра 4 минуты
#аналитика
Применение машинного обучения в Google таблицах с помощью библиотеки Tensorflow.js и Google Apps скрипта
Тема машинного обучения сейчас очень актуальна и продолжает набирать обороты. Машинное обучение — это алгоритм, с помощью которого система распознает данные и их закономерности, предсказывает значения на основе обученной модели.
02 июня 211 просмотр 3 минуты
#аналитика
Сервис передачи расходов из Яндекс.Маркета в Яндекс.Метрику
MediaNation начала работу над созданием собственного сервиса стриминга данных – StreamMyData. Первый коннектор, который представлен в системе, позволяет передавать данные о расходах из Яндекс.Маркета в Яндекс.Метрику. Это означает, что в Метрике вы сможете видеть расходы по Яндекс.Маркету, сопоставлять их с данными по продажам и доходу и принимать решения о том, как повысить эффективность размещения на Яндекс.Маркете.
27 мая 142 просмотра 1 минута
#аналитика
Как в Google BigQuery разделить значение столбца по символу
Часто в UTM-метках используется символ вертикальной черты (|), который разделяет параметры визуально. В результате при передаче таких данных в базу два важных параметра попадают в один столбец, что затрудняет их дальнейший анализ. Возникает вопрос: как их “физически” разделить, если работа с данными ведется в Google BigQuery?
20 мая 529 просмотров 8 минут
#аналитика
Кейс: сквозная аналитика для Tilda-сайта и нестандартной CRM
Мы привыкли, что сквозная аналитика востребована в крупном ритейле, и для ее обеспечения используются большие сложные CRM. Однако этот кейс демонстрирует, что связь транзакций и источников лидов интересует всех, кто хочет грамотно подходить к маркетингу. Даже модных блогеров, чьи сайты созданы на Tilda, а используемая CRM ограничена в функционале.
23 апреля 138 просмотров 8 минут
#аналитика
Маркетинговая аналитика во времена COVID-19 – опыт Google
На днях Thinkwithgoogle.com опубликовал материал своего руководителя отдела стратегической аналитики, Авинаша Кошика, где тот рассказывает, от какой аналитической работы его отдел отказался на период пандемии, а какую продолжает вести. Любопытный материал с точки зрения отношения (очень) крупного бизнеса к текущей ситуации. Приводим наиболее интересные тезисы.
18 февраля 478 просмотров 10 минут
#аналитика
Как анализировать данные продаж с помощью Google BigQuery и Data Studio
Давайте работать?
Мы верим в ваш бизнес
Наверх