Прогнозирование оттока клиентов

Введение

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

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

  1. Удержание. Прогнозируя, какие клиенты могут уйти, компания может принять упреждающие меры, чтобы предотвратить их уход. Это может включать в себя предложение стимулов, улучшение обслуживания клиентов или решение конкретных проблем.
  2. Снижение затрат. Привлечение новых клиентов может быть дорогостоящим, поэтому для компании зачастую более выгодно удерживать существующих клиентов. Прогнозирование оттока клиентов может помочь компании определить клиентов из группы риска и соответствующим образом распределить ресурсы.
  3. Конкурентное преимущество.Компании, способные прогнозировать и предотвращать отток клиентов, могут иметь конкурентное преимущество перед теми, кто этого не делает. Удерживая больше клиентов, компания может увеличить доход и долю рынка.
  4. Удовлетворенность клиентов. Прогнозирование и предотвращение оттока может повысить удовлетворенность клиентов. Решая проблемы клиентов и улучшая качество обслуживания клиентов, компания может укрепить отношения со своими клиентами.

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

Цели:

Мы стремились найти вероятность ухода клиента из организации и ключевые показатели оттока.

Методология:

Эта работа была выполнена на основе алгоритма CRISP-DM, и эта статья будет сосредоточена на объяснении этих шагов, которые включают следующее;

  • Деловое понимание.
  • Понимание данных.
  • Подготовка данных.
  • Моделирование.
  • Оценка.
  • Развертывание.

Эта работа была выполнена с использованием блокнота Jupyter в Google Collaboratory на языке программирования Python.

Чтобы увидеть записную книжку для этого анализа и полную статью, нажмите на ссылку ниже.



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

Понимание бизнеса:

Данные для анализа были предоставлены без справочной информации о наборе данных.

Понимание данных:

Данные для проекта были предоставлены в формате csv. Ниже описаны столбцы, присутствующие в данных.

Пол — является ли клиент мужчиной или женщиной.

Пожилой гражданин — является ли клиент пожилым гражданином или нет.

Партнер — есть ли у клиента партнер или нет (да, нет).

Иждивенцы — есть ли у клиента иждивенцы или нет (да, нет).

Tenure — количество месяцев, в течение которых клиент оставался в компании.

Телефонная служба – есть ли у клиента телефонная служба или нет (да, нет).

Несколько строк — есть ли у клиента несколько строк или нет.

Интернет-услуги — Интернет-провайдер клиента (DSL, оптоволокно, нет)

Безопасность в Интернете — есть ли у клиента онлайн-защита или нет (да, нет, нет Интернета).

Резервное копирование в онлайн-режиме — есть ли у клиента резервное копирование в онлайн-режиме или нет (да, нет, нет в Интернете).

Защита устройства — есть ли у клиента защита устройства или нет (да, нет, нет интернет-сервиса).

Техническая поддержка — есть ли у клиента техническая поддержка или нет (да, нет, нет Интернета).

Потоковое ТВ — есть ли у клиента потоковое телевидение или нет (да, нет, нет интернет-сервиса).

Потоковое воспроизведение фильмов – есть ли у клиента потоковое воспроизведение фильмов или нет (да, нет, нет интернет-сервиса).

Контракт — срок действия контракта с клиентом (ежемесячно, один год, два года).

Безбумажный биллинг — есть ли у клиента безбумажный биллинг или нет (да, нет).

Способ оплаты — способ оплаты клиента (электронный чек, чек по почте, банковский перевод (автоматически), кредитная карта (автоматически))

Ежемесячные платежи — сумма, взимаемая с клиента ежемесячно.

Общая сумма — общая сумма, выставленная клиенту.

Отток – отток клиентов или нет (да или нет).

Мы задали следующие вопросы и были готовы ответить на них:

Вопросы

  1. Имеют ли пожилые люди более высокий уровень оттока, чем другие?
  2. У клиентов с иждивенцами более высокие церковные ставки?
  3. Влияют ли возраст и пол на уровень оттока?
  4. Есть ли связь между стажем и текучестью кадров?
  5. Влияет ли срок контракта на скорость оттока?

Гипотеза

Нулевая гипотеза: срок контракта не влияет на увольнение

Альтернативная гипотеза: срок действия контракта влияет на увольнение.

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

Мы вызвали следующие методы:

  1. Метод головы — чтобы быстро взглянуть на то, что находится внутри набора данных.
  2. Метод формы — чтобы увидеть количество строк и столбцов в наборе данных.
  3. Информационный метод — чтобы увидеть количество ненулевых значений в каждом столбце и тип данных.
  4. Является нулевым методом — чтобы проверить, есть ли нулевые значения в наборе данных
  5. Дублированный метод — чтобы увидеть, есть ли в наборе данных повторяющиеся строки.
  6. Уникальный метод — для проверки количества уникальных значений в каждом столбце.
  7. Метод Drop NA — мы обнаружили, что в наборе данных было 11 нулевых значений, и это было небольшое количество, поэтому мы их отбросили.
  8. Мы убрали столбец ID, потому что он бесполезен в нашей работе.
  9. Метод описания — для получения быстрой статистики о числовых переменных, присутствующих в наборе данных.
  10. Мы обнаружили, что тип данных столбца Total Charges был объектным, поэтому мы изменили его на числовой тип данных.

Одномерный и двумерный анализ

Мы провели одномерный и двумерный анализ набора данных. Blow — это ссылка на репозиторий GitHub, где вы можете найти блокнот.



Проверка гипотезы

  • Нулевая гипотеза: срок контракта не влияет на увольнение
  • Альтернативная гипотеза: срок контракта влияет на убыль

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

Подготовка данных.

В наборе данных были столбцы, которые не были числовыми, поэтому мы выполнили кодирование признаков с использованием одного горячего кодировщика.
Это проект классификации, поэтому данные содержали как метки, так и независимые данные в одном наборе данных. Мы разделили набор данных на x и y, подмножество y, которое представляет собой метки, представляет собой фрагмент набора данных, содержащий только столбец оттока, а остальная часть подмножества — это остальная часть набора данных с удаленным столбцом оттока.
Мы масштабировали набор данных с помощью стандартного скейлера, а также передискретизировали.
Мы разделили набор данных на обучающий, тестовый и проверочный наборы, используя функцию разделения тестов обучения обучения в scikit.

Моделирование

Мы обучали следующие модели:

  1. Логистическая регрессия
  2. Случайный лесной классификатор
  3. Машина опорных векторов
  4. K- Ближайшие соседи
  5. Классификатор дополнительных деревьев
  6. Классификатор повышения градиента на основе гистограммы
  7. Классификатор повышения Ады
  8. Классификатор повышения градиента

Оценка

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

Что касается оценки точности, градиентное повышение было лучшим с результатом 83,91%, в то время как логистическая регрессия была худшим с результатом 72,07%.

Что касается оценки точности, Ada Boost показала лучшие результаты с результатом 83,69%, а K-Nearest Neighbours показала худшие результаты с результатом 69,46%.

Что касается показателя полноты памяти, лучшим показателем было повышение градиента с оценкой 85,90%, а машина опорных векторов была худшей с результатом 71,30%. Для оценки f1 Gradient Boosting показал лучшие результаты с результатом 84,31%, а логистическая регрессия показала худшие результаты с результатом 72,23%.

Поскольку наши данные были несбалансированными, для оценки производительности различных моделей использовались показатель F1 и площадь под кривой рабочих характеристик приемника (AUC-ROC). Таким образом, Gradient Boosting оказалась лучшей моделью среди рассмотренных моделей.

Важность функции

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

Настройка гиперпараметров

Из исследований, которые мы провели в отношении модели повышения градиента, мы начали настройку гиперпараметров со следующих параметров:

  • N оценок
  • Максимальная глубина
  • Скорость обучения

Мы передавали начальные аргументы этим параметрам и искали лучшие параметры, используя cv поиска по сетке. Были возвращены оптимальные значения:

  • N оценок –100
  • Максимальная глубина –5
  • Скорость обучения –0,1

На этот раз мы переобучили модель, используя оптимальные значения из настройки гиперпараметров и повторно оценив показатели производительности, мы получили следующие результаты:

  • Оценка точности: 85,97%
  • Оценка точности: 86,35%
  • Оценка отзыва: 85,89%
  • Оценка F1: 86,12%
  • Показатель ROC AUC: 93,68%

Приведенный выше результат показывает, что показатели производительности увеличились, поскольку начальное значение оценки F1 было 83,96, но после настройки гиперпараметра оно достигло 86,12. Кроме того, показатель ROC AUC составил 92,68%, но увеличился до 93,68% после настройки гиперпараметров.

Заключение

Мы обнаружили, что наиболее эффективной моделью для этого проекта был классификатор с повышением градиента, он работал лучше с оценкой N, равной 100, максимальной глубиной 5 и скоростью обучения 0,1. Мы также считаем, что лучшей производительности можно добиться, добавив больше значений в гиперпараметры. Есть свидетельства того, что клиенты покидают компанию из-за высоких цен. Сборы в основном поступают от интернет-услуг, и наиболее пострадавшими клиентами являются те, у кого есть партнеры и иждивенцы обоих полов включительно.