НАВИГАЦИЯ
КОНТАКТЫ
  • LinkedIn - White Circle
  • Facebook - White Circle
  • Twitter - White Circle

info@DDM.center

Телефон: +380 67 341 7101

© 2017 DDM.center

Уйдет или не уйдет?

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

 

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

 

Формально мы имеем задачу бинарной классификации. Т.е. есть набор исторических данных о клиентах с отметкой ушел клиент или нет. Нашей системе на основании построенной и обученной нейронной сети необходимо будет предсказывать класс (уйдет или не уйдет) и вероятность принадлежности к одному из классов.

 

В качестве исходных данных имеем учебную выборку из 10000 записей клиентских данных одного банка, в которой содержится информация:

  • стаж

  • возраст

  • пол

  • количестве лет сотрудничества

  • кредитный рейтинг

  • количество продуктов

  • наличие кредитной карты

  • страна

  • баланс карты

  • оценка заработной платы клиента

 

Для построения нейронной сети будем использовать R и библиотеку Keras, котороя работает с TensorFlow.

 

Загрузим и подготовим данные для нашего анализа.

 

Разделим наш набор данных в пропорции примерно 80:20 на выборку для обучения нейронной сети и для ее дальнейшего тестирования. Получим следующие 8001 записей для тренировки сети и 1999

 

для тестирования точности полученной модели.

 

Построим нейронную сеть из трех слоев и проведем ее тренировку.

 

model_keras <- keras_model_sequential()

model_keras %>% 
  
  # First hidden layer
  layer_dense (
    units              = 6, 
    kernel_initializer = "uniform", 
    activation         = "relu", 
    input_shape        = ncol(x_train_tbl)) %>%  
  
  # Dropout to prevent overfitting
  layer_dropout(rate = 0.1) %>%
  
  # Second hidden layer
  layer_dense(
    units              = 6, 
    kernel_initializer = "uniform", 
    activation         = "relu") %>% 
  
  # Dropout to prevent overfitting
layer_dropout(rate = 0.1) %>%
  
  # Output layer
  layer_dense(
    units              = 1, 
    kernel_initializer = "uniform", 
    activation         = "hard_sigmoid") %>% 
  
  # Compile ANN
  compile(
    optimizer = 'adam',
    loss      = 'binary_crossentropy',
    metrics   = c('accuracy')
  )

model_keras


# =================Fit the keras model to the training data
history <- fit(
  object           = model_keras, 
  x                = as.matrix(x_train_tbl), 
  y                = y_train_vec,
  batch_size       = 10, 
  epochs           = 100,
  validation_split = 0.30
)
 

 

После тренировки посмотрим на результаты

 


Построим матрицу неточностей (confusion matrix).

Точность предсказаний, что клиент останется почти 85%. что уйдет - 78%. Єто лучше, чем гадание на кофейной гуще :-)

 

Применив модель к нашей выборке мы можем получить значение класса "уйдет/не уйдет" для каждого клиента

> yhat_keras_class_vec
    [1] 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 1
  [42] 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1
  [83] 1 1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 .....

 

И для каждого клиента можем получить значение веротности отнесения к классу

> yhat_keras_prob_vec
    [1] 1.712128e-01 3.985728e-01 6.554409e-02 9.631069e-01 3.229744e-01 7.103831e-01
   [7] 9.220580e-01 9.544231e-01 7.316394e-02 6.785110e-03 9.694014e-01 9.868666e-01
  [13] 1.328593e-01 9.491253e-01 5.160003e-01 7.374983e-01 9.448473e-01 5.408564e-01

 

Объединив два эти вектора с исходными данными получим сводную таблицу по клиентам с прогнозными классами и вероятностями.

 

 

 

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

 

Чтобы лучше понимать, что именно влияет на уход клиента необходимо посмотреть на данные внутри нейронной сети более детально. Это мы сможем сделать с помощью пакета LIME - Local Interpretable Model-Agnostic Explanations.

 

 По каждому клиенту мы можем видеть какие факторы и в какой степени влияли на вероятность и отнесение клиента к одному из классов. Например, в первом случае наличие у клиента 3-х продуктов будет сдерживать его отухода, а возраст около 50 лет, способствовать оттоку.

 

Также можем визуализировать эти данные в виде тепловой карты.

 

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

 

И в завершение построим таблицу корреляции, чтобы видеть значимость факторов.

 

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

 

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

 

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

 

 

Также для Ваших сотрудников, готовящих презентации будет полезна памятка о правильном применении 24-х различных диаграмм. Ее они могут загрузить по ссылке здесь 

 

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

 

 

Share on Facebook
Share on Twitter
Please reload

Избранные посты

Уйдет или не уйдет?

March 23, 2018

1/4
Please reload

Недавние посты