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

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

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

Анализ RFM (новизна, частота и денежная стоимость)

Сегментация клиентов по показателю RFM — это метод, который оценивает, какие клиенты представляют наибольшую и наименьшую ценность для организации, основываясь на времени возврата, частоте и денежной стоимости покупки, чтобы предсказать, какие клиенты с наибольшей вероятностью совершат покупки снова в будущем. будущее. Эта концепция основана на маркетинговой предпосылке, согласно которой 80% вашего дохода приходится на 20% ваших клиентов.

Этот метод (оценка RFM) в основном отвечает на следующие три вопроса: (1) Когда клиент в последний раз совершал покупку (Давность). ? (2)Как часто вы делаете покупки (Частота)? (3) Сколько тратит клиент (в денежном выражении)?

Постановка задачи

В условиях, когда конкретная компания, представляющая бренды одежды и аксессуаров, не знала о типах своих клиентов, компания решила выделить сегмент для всех своих клиентов, чтобы ответить на следующие вопросы: (1 ) Кто самые ценные клиенты? (2) Как привлечь новых клиентов, похожих на самых ценных?

Цель

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

Также было бы интересно в данном случае определить: (*)Какие клиенты являются наиболее/наименее ценными? (*) Каковы ценные потенциальные клиенты? (*) Какую ценность клиент создает для организации?

Эти вопросы могут привести нас к следующему восприятию: (*) сегментировать клиентов на основе их ценности; (*) Отслеживайте миграцию клиентов между определенными сегментами.

Набор данных

Анализируемые данные относятся к покупкам, совершенным в период с 2011 по 2013 год. Эти данные являются чисто гипотетическими и предназначены для демонстрации методики анализа оценки RFM. При необходимости с реальными данными будет сделан новый пост либо на Python, либо на R, чтобы продемонстрировать мощь метода в классификации и сегментации клиентов. Однако в данном исследовании будет использоваться R.

Исследовательский анализ

Перефразируя John Wilder Tukey (1977), исследовательский анализ — это метод, в котором используется широкий спектр количественных и графических методов для максимального получения информации от рассматриваемых переменных.

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

library(pander)
library(tidyverse)
library(highcharter)
df_sales <- readxl::read_xlsx("Sales.xlsx")
df_sales %>% head() %>% pander()

Сначала форматируется дата для корректного расчета, затем для анализа устанавливается исходная дата 01–01–2014.

# Convert to Date Format (yyyy-mm-dd)
df_sales$Date <-
    as.Date(df_sales$Date, "%Y-%m-%d")
# Reference Date
date_ref <- as.Date('2014-01-01')

df_sales$Duration <- as.numeric(
    difftime(
        time1 = date_ref,
        time2 = df_sales$Date,
        units = "days"
    )
)

# Data after transformation
df_sales %>% head() %>% pander()

library(sqldf)

На этом этапе будут созданы вычисляемые столбцы, содержащие определенные значения недавности, частоты и денег. Также будет добавлен столбец Date_Purchase, представляющий собой разницу между контрольной датой и датой совершения покупки покупателем. И чтобы иметь возможность добавлять столбцы, вы используете код SQL.

# Compute recency, frequency, and average purchase amount
cust_df = sqldf(
    "SELECT CustomerID,
            MIN(Duration) AS 'Recency',
            MAX (Duration) AS Date_Purchase,
            COUNT(*) AS 'Frequency',
            SUM(Total) AS 'Monetary'
        FROM df_sales
        GROUP BY 1"
)

cust_df %>% head() %>% pander() 

Показывая описательную статистику (суммирование) данных, имеем:

cust_df[,-1] %>% summary() %>% pander()

Для оценки распределения параметров RFM будет использоваться гистограмма.

hist(cust_df$Recency, 
     breaks = 50, 
     main = "Histograma de Recência", 
     xlab = "Recência", 
     ylab = "Frequência")

hist(cust_df$Frequency, 
     breaks = 50, 
     main = "Histograma de Frequência", 
     xlab = "Frequência", 
     ylab = "Frequência")

hist(cust_df$Monetary, 
     breaks = 50, 
     main = "Histograma de Valores Monetários", 
     xlab = "Monetário", 
     ylab = "Frequência")

Определение процентилей

Для определения параметров RFM используются квартили или процентили. В данном случае набор данных будет разделен на 05 равных частей, т.е. деление на 20% каждую часть. Идея состоит в том, чтобы найти 20% самых ценных клиентов.

quantile(cust_df$Recency, probs = seq(0, 1, 0.20)) %>% pander()

Для параметра «Недавность», который представляет собой анализ самой последней покупки, 20 лучших клиентов ранжируются по первым 20% процентиля. Таким образом, в приведенной выше таблице показано:

  • Топ-20 клиентов, совершивших покупки за последние 10 дней;
  • Следующие 20% клиентов, купивших в промежутке между 10 и 28 днями;
  • Последние 20% покупателей сделали свою последнюю покупку примерно 2,5 года назад.
quantile(cust_df$Frequency, probs = seq(0, 1, 0.20)) %>% pander()

Что касается того, как часто они делают покупки, можно отметить, что:

  • Топ-20 клиентов купили более 43 раз за 3 года рассматриваемого периода;
  • Следующие 20% клиентов покупали от 22 до 43 раз;
  • Последние 20% клиентов покупали только один раз за рассматриваемый период.
quantile(cust_df$Monetary, probs = seq(0, 1, 0.20)) %>% pander()

Что касается денежной стоимости, потраченной на покупки, можно отметить, что:

  • Топ-20 клиентов тратят в среднем более 219 327 млн. (денежная единица);
  • Следующие 20% тратят от 109 592 до 219 237 микронов, а последние 20 % клиентов тратят менее 556 микронов. на их средний расход.

Определение оценки RFM

На основе принципа Парето, согласно которому 80% вашего бизнеса приходится на 20% ваших клиентов. Оценка RFM помогает определить клиентов, которые с большей вероятностью откликнутся на рекламные акции, разделив их на различные категории.

20-й процентиль будет использоваться для определения оценки RFM, т. е. ряд данных будет разделен на 05 равных частей. Таким образом, топ-20 имеют максимальную оценку 05 баллов, а последние 20% имеют минимальную оценку 01 балл. Для анализа параметра R (новизна) порядок должен быть обратным, т. е. низкие значения получают максимальную оценку (05 баллов), а высокие значения — минимальную оценку (01 балл).

Таким образом, лучший клиент имеет максимальный балл 555 (балл RFM), а худший — минимальный балл 111 (балл RFM).

# Calculation of RFM scores
rfm_data <- cust_df

rfm_data <-
    rfm_data %>%
    mutate(
        R = ntile(desc(Recency), 5),
        F = ntile(Frequency, 5),
        M = ntile(Monetary, 5)
    )

rfm_data$RFM <- rfm_data$R * 100 + rfm_data$F * 10 + rfm_data$M

rfm_data %>% head(10) %>% pander()

Обратите внимание, что чем ниже параметр Recency, тем выше оценка R и оценка RFM. Таким образом, клиенты с наивысшей оценкой RFM из первых 10 наблюдений для рассматриваемого случая: CustomerID – 12347, 12370, 12377, 12395, а клиенты с самой низкой оценкой RFM — CustomerID – 12386 и 12427.

Определение сегментов

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

В RFM сегментация клиентов может быть выполнена в соответствии с таблицей ниже:

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

# Definition of customer segmentation by groups
rfm_data$Segment <- NA

rfm_data$Segment[which(rfm_data$RFM == 111)] <- 'Clientes Perdidos'
rfm_data$Segment[which(rfm_data$RFM > 111)] <- 'Hibernando'
rfm_data$Segment[which(rfm_data$RFM >= 222)] <- 'A dormir'
rfm_data$Segment[which(rfm_data$RFM >= 333)] <-'Fieis Potenciais'
rfm_data$Segment[which(rfm_data$RFM >= 444)] <- 'Campeoes'

# 2nd round

rfm_data$Segment[which(rfm_data$Segment == 'Fieis Potenciais' &
                    (rfm_data$F >= 4))] <- 'Clientes Fieis'

rfm_data$Segment[which(rfm_data$Segment == 'A dormir' &
                    (rfm_data$M >= 4))] <- 'Precisam de Atencao'

rfm_data$Segment[which(rfm_data$Segment == 'Hibernando' &
                    (rfm_data$F >= 4 & rfm_data$M >= 4))] <- 'Nao perder-los'

rfm_data[, -c(3, 6,7,8)] %>% 
    head(10) %>% pander()

Запомнить

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

rfm_data[is.na(rfm_data$Segment),]

Согласно приведенному выше результату ни один клиент не принадлежит к двум или более сегментам.

Количество клиентов по сегментам

На данном этапе показано распределение клиентов по сегментам.

# Re-order the segments according to the defined scenarios
rfm_data$Segment <-
    factor(
        x = rfm_data$Segment,
        levels = c(
            'Clientes Perdidos',
            'Hibernando',
            'Nao perder-los',
            'A dormir',
            'Precisam de Atencao',
            'Fieis Potenciais',
            'Clientes Fieis',
            'Campeoes'
        )
    )
# Frequency Table
freqTable <-
    rfm_data %>%
    count(Segment) %>%
    rename(Segmento = Segment, Contagem = n)

freqTable$Racio <- prop.table(table(rfm_data$Segment))*100
freqTable %>% pander()

Обратите внимание, что 31,49 % покупателей относятся к сегменту Чемпионы. Этот процент выше маркетинговой аксиомы, согласно которой 80 % вашего бизнеса приходится на 20 % ваших покупателей, что уже гарантирует магазину выгодные предложения. Особое внимание уделяется клиентам со статусом Требуется внимание, доля которых составляет 4,34 %, поскольку их оценка ниже среднего показателя за последнее время, частоты и денежной стоимости, этой группе потребуется стратегическая работа по их восстановлению. .

Диаграммы сегментации

Два графика (древовидная карта и столбчатая диаграмма) будут применяться для визуализации сегментов, определенных в исследуемых данных.

Древовидная карта (рекомендуется)

Древовидная карта показывает среднее денежное значение для различных категорий последних результатов и частоты.

hctreemap2(
    data = freqTable,
    group_vars = "Segmento",
    size_var = "Contagem",
    color_var = "Contagem"
    )

Более высокие оценки частоты и давности характеризуются более высокой средней денежной стоимостью, на что указывают более темные области на древовидной карте.

Гистограмма

Гистограмма показывает частоту в количестве клиентов, отсортированных по сегментам.

highchart() %>%
    hc_add_series(
        data = freqTable,
        type = 'column',
        hcaes(x = Segmento, y = Contagem),
        dataLabels = list(align = "center", enabled = TRUE,
                          style = list(
                                      fontWeight = "bold",
                                      color = "#4D4D4D",
                                      textOutline = NULL
                                      )
                          ),
        name = 'Segmentos'
    ) %>%
    hc_xAxis(categories = unique(freqTable$Segmento)) %>%
    hc_yAxis(title = list(text = "No de Clientes"))

Заключение

В данном случае RFM score Analysis применялся для классификации и сегментирования клиентов конкретной компании, представляющих различные бренды одежды и аксессуаров, с использованием языка программирования R.

В исследование был вовлечен 921 клиент с более чем 25 000 транзакций, поэтому была проведена сегментация с использованием этой методики: 31,49% клиентов, соответствующих 290, были классифицированы как Чемпионы, это клиенты, которые имеют показатель RFM. больше и равно 444 пунктам. Еще одна группа с самым высоким сегментированным процентом — About To Sleep, в которую входят 18,46% клиентов, однако этой линии потребуется тяжелая работа, чтобы вернуть их и предложить рекламную акцию.

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

Рекомендации

  1. Тьюки, Джон (1977). Исследовательский анализ данных. Издательская компания Аддисон-Уэсли;
  2. https://cran.r-project.org/web/packages/rfm/vignettes/rfm-customer-level-data.html;
  3. https://www.r-bloggers.com/customer-segmentation-using-rfm-analysis/;
  4. https://medium.com/docsapp-product-and-technology/rfm-segmentation-in-r-using-didroorfm-package-f8a03a223b6b.