www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Интегрированный подход RFM, кластеризация, CLTV и алгоритмы машинного обучения для прогнозирования

Дата публикации Oct 3, 2019

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

Хотя статистические методы могут быть очень мощными, но эти методы делают несколько строгих предположений о типах данных и их распределении, и, как правило, могут обрабатывать только ограниченное количество переменных. Методы, основанные на регрессии, обычно основаны на фиксированном уравнении и предполагают единственное наилучшее решение, что означает, что мы можем сравнить только несколько альтернативных решений вручную. Кроме того, когда модели применяются к реальным данным, ключевые допущения методов часто нарушаются. Здесь я покажуМашинное обучение(ML) методы путем интеграцииCLTVи переменные транзакции клиента сRFMпеременные для прогнозирования покупок.

Я буду использовать два подхода здесь -

1-й подходRFM (последние, частоты и денежные)Метод маркетингового анализа используется для сегментации клиентов и

2-й подход с использованиемПожизненная ценность для клиента (CLTV)будет тренироватьMLалгоритм дляпрогнозирование, Я буду использовать данные за 3 месяца для расчетаRFMи использовать его для прогнозирования следующих 6 месяцев.

RFMявляется попыткой модели скоринга прогнозировать поведение клиентов в будущем и косвенно связана сCLTV, Одно ключевое ограничениеRFMМодели состоят в том, что они оценивают модели и не предоставляют явно число в долларах для ценности клиента. Простое уравнение для выводаCLTVдля клиента

  • pt = цена, уплаченная потребителем в момент времени t,
  • ct = прямые затраты на обслуживание клиента в момент времени t,
  • я = ставка дисконтирования или стоимость капитала для фирмы,
  • rt = вероятность того, что клиент повторит покупку или будет «живым» в момент времени t,
  • AC = стоимость приобретения, и
  • T = временной горизонт для оценкиCLTV,

Сбор данных

Давайте загрузим и посмотрим данные.

У нас есть вся необходимая информация, которая нам нужна:

  • Пользовательский ИД
  • Цена за единицу товара
  • Количество
  • Дата счета

Со всеми этими функциями мы можем построить уравнение для денежной стоимости =Количество активных клиентов * Количество заказов * Средний доход на заказ

df[‘InvoiceDate’] = pd.to_datetime(df[‘InvoiceDate’]) #convert the type of Invoice Date Field from string to datetime.df[‘InvoiceYearMonth’] = df[‘InvoiceDate’].map(lambda date: 100*date.year + date.month) #create YearMonth fielddf[‘Monetary’] = df[‘UnitPrice’] * df[‘Quantity’] #calculate Monetary for each row and create a new data frame with YearMonth — Monetary columnsmonetary = df.groupby([‘InvoiceYearMonth’])[‘Monetary’].sum().reset_index()

Прежде чем мы погрузимся вRFMбалл, мы можем провести некоторый анализ, чтобы узнать больше о поведении клиентов, таких как ежемесячные активные клиенты / ежемесячный счет заказов / средний доход на заказ / новый коэффициент клиентов / ежемесячный коэффициент удержания клиентов и т. д. Заинтересованные могут посетитьВотзнать о таком анализе. Итак, начну с сегментации.

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

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

  • Низкая стоимость - клиенты, которые менее активны, чем другие, не очень часты покупатель / посетитель и получают очень низкий - нулевой - возможно, отрицательный доход.
  • Средняя стоимость - клиенты, которые довольно часты и приносят умеренный доход.
  • High Value - клиенты с высоким доходом, частотой и низкой активностью; бизнес всегда хочет сохранить этих клиентов.

Мы рассчитаемRFMОцените и примените неконтролируемую ML для определения различных кластеров для каждого, применяяK-среднихкластеризация, чтобы назначитьновизнаГол. Количество кластеров, как правило, определяется бизнесом, нам нужноK-среднихалгоритм. Тем не мение,Метод локтяизK-среднихпомогает нам узнать оптимальный номер кластера.

новизна

ВычислятьновизнаНам нужно узнать самую последнюю дату покупки каждого клиента и узнать, сколько дней они неактивны. После того, как нет. неактивных дней для каждого клиента, мы будем применятьK-среднихкластеризация, чтобы назначить клиентамновизнаГол.

Здесь, похоже, у нас есть 3 кластера. Исходя из бизнес-требований, мы можем использовать меньше или больше кластеров. Давайте выберем 4 для этого примера:

Точно так же мы можем сделатьчастотаа такжемонетарныйи, наконец, общий балл.

Мы делим эти кластеры на Высокие / Средние / Низкие - от 0 до 2 - Низкие / от 3 до 4 - Значения / 5 + - Высокие значения клиентов

Описательная статистика соответствующихRFMэто шоу ниже

Мы видим, что, несмотря на то, что среднее значение составляет 90 дней, медиана равна 49. Отрицательное значение в денежном выражении в мин. Указывает на возврат предметов. Значения тестовой статистики и графики распределения и QQ ниже подтверждают, что набор данных не соответствует нормальному распределению. Поэтому использование непараметрических
рамки для прогнозирования оправданы.

Данные статистических испытаний показывают, что данные характеризуются непараметрическим характером поведения. Это оправдывает развертывание продвинутого ML
и алгоритмы глубокого обучения для прогностического моделирования. Однако здесь я не использовал алгоритм глубокого обучения.

Мы можем начать предпринимать действия с этой сегментацией. Стратегии просты для всех трех классов:

  • Улучшение удержания клиентов High Value
  • Улучшение удержания и увеличение частоты клиентов среднего значения
  • Увеличьте частоту клиента низкой стоимости

Пожизненная ценность для клиента (CLTV)

CLTVздесь довольно просто. Сначала мы выберем временное окно на 3, 6, 12 или 24 месяца. Мы можем вычислитьCLTVдля каждого клиента в этом конкретном временном окне с уравнением:Общий валовой доход-общая стоимость, Это уравнение основано на исторических данных и дает нам историческую ценность. Если мы видим, что некоторые клиенты исторически имеют очень высокую отрицательную жизненную ценность, то, вероятно, мы опоздали, чтобы принять меры. Давайте использовать MLалгоритм прогнозирования.

Прогноз CLTV

Итак, давайте следовать шагам

  • Определите подходящий период времени дляCLTVрасчет
  • Определите функции, которые мы собираемся использовать, чтобы предсказать будущее и создать их
  • РассчитатьCLTVдля обучения модели ML
  • Построить и запустить модель ML
  • Проверьте, полезна ли модель

Мы уже получилиRFMбаллы за каждый идентификатор клиента. Чтобы реализовать это правильно, давайте разделим наш набор данных. Я возьму 3 месяца данных, рассчитатьRFMи использовать его для прогнозирования следующих 6 месяцев.

# создать 3-х и 6-ти метровые кадры
m3 = DF_uk [(DF_uk.InvoiceDate< date(2011,6,1)) & (DF_uk.InvoiceDate >= дата (2011,3,1))]. reset_index (drop = True)
m6 = DF_uk [(DF_uk.InvoiceDate> = date (2011,6,1)) & (DF_uk.InvoiceDate <date (2011,12,1))]. reset_index (drop = True)

Теперь аналогичный процесс кластеризации, вычисленияRFMи общая оценка каждого фрейма данных и, наконец, объединение фреймов данных за 3 и 6 месяцев, чтобы увидеть корреляцию междуCLTVи набор функций у нас есть.

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

Мы собираемся применить кластеризацию K-средних для определения сегментов и наблюдения за их характеристиками:

2 лучший со средним 8.2кCLTVв то время как 0 является худшим с 396. Есть еще несколько шагов до обучения модели ML:

  • Нужно сделать некоторые функции проектирования. Мы должны преобразовать категориальные столбцы в числовые столбцы.
  • Мы проверим соотношение функций с нашей меткой,CLTVкластеры.
  • Мы разделим наш набор функций и метку (CLTV) как X и y. Мы используем X, чтобы предсказать у.
  • Создает набор данных для обучения и тестирования. Учебный набор будет использоваться для построения модели ML.

Мы применим нашу модель к тестовому комплекту, чтобы увидеть его реальную производительность.

from sklearn.model_selection import KFold, cross_val_score, train_test_split
#convert categorical columns to numerical
DF_class = pd.get_dummies(DF_cluster)#calculate and show correlations
corr_matrix = DF_class.corr()
corr_matrix[‘LTVCluster’].sort_values(ascending=False)#create X and y, X will be feature set and y is the label — LTV
X = DF_class.drop([‘LTVCluster’,’m6_Monetary’],axis=1)
y = DF_class[‘LTVCluster’]#split training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.05, random_state=42)

Мы видим, что 3 месяца доход, частота иRFMбаллы будут полезны для наших моделей ML. С помощью учебных и тестовых наборов мы можем построить нашу модель.

Сравнение алгоритма машинного обучения

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

FP = confusion_matrix.sum (axis = 0) - np.diag (confusion_matrix)

FN = confusion_matrix.sum (axis = 1) - np.diag (confusion_matrix)

TP = np.diag (confusion_matrix)

TN = confusion_matrix.values.sum () - (FP + FN + TP)

TPR = TP / (TP + FN) # Чувствительность, частота попаданий, отзыв или истинный положительный показатель

TNR = TN / (TN + FP) # Специфичность или истинный отрицательный показатель

PPV = TP / (TP + FP) # Точность или положительное прогностическое значение

NPV = TN / (TN + FN) # Отрицательное прогностическое значение

FPR = FP / (FP + TN) # Падение или ложное срабатывание

FNR = FN / (TP + FN) # Ложный отрицательный показатель

FDR = FP / (TP + FP) # Неверный уровень обнаружения

ACC = (TP + TN) / (TP + FP + FN + TN) # Общая точность

Модель XGB

У нас есть мультиклассификационная модель с 3 группами (кластерами). Точность показывает 78% на тестовом наборе. Наши истинные позитивы находятся на диагональной оси и являются самыми большими числами здесь. Ложные отрицания являются суммой других значений в строках. Ложные положительные значения - это сумма других значений в столбцах. Точность и отзыв приемлемы для 0. Для кластера 0, который является низкимCLTV, если модель идентифицируетКлиент принадлежит к кластеру 0, вероятность 85%, что он будет правильным (точность). Классификатор успешно идентифицирует 90% фактических клиентов кластера 0 (напомним). Нам нужно улучшить модель для других кластеров. Классификатор едва обнаруживает 43% среднегоCLTVклиентов.

Давайте поэкспериментируем с изменением глубины и OneVsRestClassifier -

Некоторое улучшение можно увидеть здесь Тем не менее, есть еще возможности для улучшения, например,

  • Добавление большего количества функций и улучшение функциональности
  • Попробуйте ANN / DNN

ROCAUC

По умолчанию для визуализаций ROCAUC с несколькими классами строится кривая для каждого класса в дополнение к микро- и макро-средним кривым для каждого класса. Это позволяет пользователю проверить компромисс между чувствительностью и специфичностью для каждого класса.

Ошибка предсказания класса

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

Резюме

В моделях ML параметры настраиваются / оцениваются на основе данных, а параметры управляют тем, как алгоритмы учатся на основе данных (без каких-либо предположений о данных и ниже по потоку от генерации данных). XGB - это алгоритм на основе дерева, и, следовательно, его можно считать непараметрическим. Глубина дерева, используемая здесь, является параметром алгоритма, но она не является производной от данных, а является входным параметром.

Я могу быть достигнутВот,

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map