Постановка задачи
Допустим мы хотим сформировать 8 профилей клиентов по их покупкам
при помощи пакета arules
на датасете Groceries
:
library(arules)
library("cluster")
data("Groceries")
Кластеризация
Т.к. датасет достаточно большой, проведем кластеризацию в 2 этапа:
- Сначала определим центроиды на выборке
- Затем предскажем лэйблы для всего датасета
Этап 1: Кластеризация на выборке
set.seed(1234)
s <- sample(Groceries, 2000)
d <- dissimilarity(s, method = "Jaccard")
clustering <- pam(d, k = 8)
Этап 2: Определение лэйблов для всего датасета:
allLabels <- predict(s[clustering$medoids], Groceries, method = "Jaccard")
table(allLabels)
## allLabels ## 1 2 3 4 5 6 7 8 ## 984 1283 2262 904 672 1068 1890 772
Визуализация кластеров
Для начала, поделим весь датасет на 8 кластеров, согласно определенным лейблам:
cluster <- split(Groceries, allLabels)
Теперь мы можем приступить к визуализции отдельных кластеров:
Кластер 3
itemFrequencyPlot(cluster[[3]], population = s, support = 0.05)
Кластер 8
itemFrequencyPlot(cluster[[8]], population = s, support = 0.05)
Вертикальные бары – обозначают относительную частоту покупок в данном кластере,
непрерывные линии – частота покупок по всему датасету. Таким образом, анализируя
разницу между профилями клиентов в 3-ем и 8-ом кластере, мы можем сказать:
- 3-ий кластер: широкий спектр покупок, более прибыльный клиент
- 8-ой кластер: покупатель заходит за баночным пивом, кроме которого
покупает сумку для покупок и газеты, примерно с частотой, присущей всем остальным покупателям.
Write a comment: