Прогнозирование оттока/удержание клиентов

Прогноз оттока DSN в телекоммуникациях

Прогнозирование того, откажется ли клиент от услуг телекоммуникационной компании

1. Бизнес-проблема
2. Источник данных
3. Существующие подходы
4. Отображение проблемы ML/DL
5. Улучшения в существующие решения
6. Понимание данных
7. Исследовательский анализ данных
7.1 Анализ одномерных числовых признаков
7.2 Анализ одномерных категориальных признаков
7.3 Двумерный анализ категориальных признаков
7.4 Двумерный анализ категориальных и числовых признаков
7.5 Двумерный анализ числовых признаков
7.6 Распределение числовых признаков
8. Разработка функций
8.1 Кодирование/масштабирование данных
9. Сравнение моделей
10. Результаты отправки Kaggle
11. Будущая работа:
12. Ссылки:

1. Бизнес-проблема:

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

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

Компания применила некоторые маркетинговые методы, однако отток клиентов продолжается, что показывает, что основная причина до сих пор неизвестна.

2. Источник данных:

Данные были взяты из kaggle, https://www.kaggle.com/c/dsn-telecom-customer-churn/'. На kaggle есть несколько вариантов этой проблемы. Разница заключается в количестве и типе функций и общем количестве записей.

3. Существующие подходы:

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

Все эти подходы содержат стандартный EDA для получения информации из данных. После EDA и очистки данных был применен простой метод кодирования.

Затем обработанные данные передаются в несколько моделей машинного обучения, включая логистическую регрессию, случайный лес, KNN, XG Boost и т. д. В некоторых подходах также используется простая нейронная сеть.

4. Сопоставление с проблемой ML/DL

Это проблема бинарной классификации, цель которой состоит в том, чтобы предсказать, останется ли клиент с компанией «1» или покинет «0». Позже мы увидим, что это несбалансированные данные, поэтому мы будем использовать макрос F1 для проверки производительности моделей.

Однако на странице конкурса на Kaggle не было указано, какая метрика будет использоваться для оценки.

5. Улучшения существующих решений

Одним из значительных улучшений, внесенных в существующие ресурсы, является использование нескольких методов кодирования для категориальных признаков. Была использована библиотека Python «category_encoders». Каждая модель ML получает данные, закодированные с помощью нескольких кодировщиков, производительность сравнивается и используется лучший из них.

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

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

Есть 4930 строк и 21 функция или столбец. Большинство признаков являются категориальными, и лишь немногие из них являются числовыми.

Одно замечание относительно функции «TotalCharges» заключается в том, что ее тип D — «объект», он должен был быть плавающим, поскольку это числовая функция.

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

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

Этот конкретный набор данных не требовал никакой дополнительной очистки.

7. Исследовательский анализ данных:

Мы начинаем наш EDA, чтобы найти информацию из данных.

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

Похоже, что это несбалансированный набор данных с коэффициентом распределения 73/26% между положительным и отрицательным классом.

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

7.1. Одномерный анализ числовых признаков:

Понятно, что отток больше, если ежемесячные начисления превышают 60. Так что это важная особенность. Кроме того, стаж работы, по-видимому, играет роль в оттоке клиентов. Большая часть оттока исходит от клиентов со стажем менее 30 лет.

Однако в случае с общей суммой платежей скорость оттока выше для клиентов с общей суммой платежей 2000 или ниже.

7.2 Одномерный анализ категорийных признаков:

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

На втором графике мы видим, что доля клиентов, которые ушли, немного выше, чем те, у кого нет партнера.

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

На втором графике показаны некоторые проблемы с оптоволоконным сервисом компании, так как большинство клиентов использовали этот сервис.

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

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

7.3 Анализ двумерных категориальных признаков:

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

7.4 Двухфакторный категориальный и числовой анализ признаков:

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

Отток немного высок, если партнер отсутствует, а ежемесячные платежи превышают 80.

7.5 Двумерный числовой анализ признаков:

Ежемесячные платежи больше влияют на скорость оттока.

Отток оказывается еще выше, если ежемесячные платежи превышают 80, а срок владения менее 20.

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

7.6 Распределение числовых признаков:

Как и ожидалось, функция «TotalCharges» искажена вправо, в то время как другие функции не следуют какому-либо распределению, а также отсутствуют выбросы.

  1. Подробный EDA выявил много важных моментов в представленных данных. Был проведен однофакторный и двухфакторный анализ. Категориальный — категориальный, числовой — числовой и категориальный — численный анализ выполняется для получения максимальной информации из данного набора данных.
  2. Числовые характеристики, такие как Срок пребывания в должности, Общая сумма платежей и Ежемесячные платежи, кажутся наиболее важными.
  3. В категориальных функциях Контракт, Техническая поддержка, Онлайн-безопасность и способ оплаты, кажется, играют важную роль в принятии решения о том, будет ли клиент уходить или нет.

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

Поскольку набор данных несбалансирован, мы будем использовать макрос F1, чтобы отдать приоритет менее доминирующему классу.

Ниже приведены выходные данные классификатора DT для важности функций.

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

8. Разработка функций:

Мы пишем небольшую функцию для создания новой функции из «TotalCharges». Идея состоит в том, чтобы посмотреть, сможем ли мы создать новую функцию, распределив общие расходы по более мелким ячейкам.

Вот как распределяются значения в новой функции. Мы видим, что максимальное распределение находится в диапазоне от 0 до 500, а наименьшее — в диапазоне от 3500 до 5000.

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

8.1 Кодирование/масштабирование данных

Поскольку этот набор данных в основном состоит из категориальных функций, мы собираемся использовать пакет «category_encoders» для кодирования и передавать каждый из них в модель ML. Будет выбрана лучшая модель.

Category_encoders состоит из следующего.

BackwardDifferenceEncoder», «BaseNEncoder», «BinaryEncoder», «CatBoostEncoder», «HelmertEncoder», «JamesSteinEncoder», «OneHotEncoder», «LeaveOneOutEncoder», «MEstimateEncoder», «OrdinalEncoder», «PolynomialEncoder», «SumEncoder», 'TargetEncoder', 'WOEEncoder

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

Данные кодируются с использованием каждого из этих кодировщиков, а затем передаются в несколько моделей ML. Затем каждая модель подвергается гипернастройке с использованием поиска по сетке на основе кодировщика. Рассчитывается балл CV на основе Macro F1.

9. Сравнение моделей

Ниже приведено сравнение того, как различные кодировщики влияют на оценку CV для каждой модели.

Резюме дается следующим образом.

Понятно, что разные кодировщики отображают разные оценки CV для каждой модели. Однако наилучший результат дает модель логистической регрессии с использованием кодировщика LOOE. Это используется для предоставленных тестовых данных Kaggle, и выполняется окончательная отправка.

Поскольку это поздняя подача, результат не отображается в таблице лидеров.

10. Результаты отправки Kaggle

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

Результат получается 0,8199, что выше, чем 0,81358.

Представленная таблица лидеров

Таблица лидеров соревнований Kaggle.

11. Будущая работа:

Одна из вещей, которую стоит попробовать, — это использовать Optuna для настройки гиперпараметров для улучшения результатов. Это очень быстро, и самое приятное то, что можно визуализировать настроенные параметры. Более подробную информацию можно найти на optuna.org

12. Ссылки:

www.appliedaicourse.com





Профиль LinkedIn



Репозиторий Github

https://github.com/adeebshahzad/Churnprediction