Skip to content

Latest commit

 

History

History

client_churn_prediction

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Предсказание ухода клиента от оператора связи

Статус: Проект завершен.

Описание проекта

Заказчиком в данном проекте является оператор связи «ТелеФон», который предоставляет два основных типа услуг: стационарную телефонную связь и интернет. Для предотвращения оттока клиентов необходимо создать модель машинного обучения для предсказания ухода клиента.

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

Python, pandas, sklearn, seaborn, matplotlib, phik, Pipeline, One-Hot-Encoder, StandardScaler, GridSearchCV, LogisticRegression, CatBoostClassifier, SGDClassifier.

Вывод

В ходе данного проекта были изучены данные по клиентам оператора связи "ТелеФон".

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

  • После объединения датафреймов появились пропуски в 8 столбцах. Они были заполнены значением 'Not used'.
  • Обнаружены неявные пропуски в столбце total_charges. Их оказалось 0.16% от общего объема данных в этом столбце. Эти строки с пробелами были удалены.
  • Названия столбцов приведены к "змеиному" регистру.
  • Были обнаружены 4 строчки с явными дубликатами. Они были удалены.
  • Неявных дубликатов нет.
  • Были преобразованы типы данных в столбцах total_charges, begin_date и end_date.

На этапе исследовательского анализа данных:

  • созданы новые признаки: целевой quit, длительность контракта в днях duration, количество новых и ушедших пользователей num_new_clients и num_quit_clients
  • выявлен дисбаланс классов в целевом признаке: действующих абонентов (класс "0") в 5.4 раз больше, чем ушедших (класс "1")
  • изучено распределение и описательные статистики всех количественных признаков.
  • построены столбчатые диаграммы для всех категориальных признаков для понимания распределения различных классов данных в датасете
  • проанализировано изменение количества новых и ушедших пользователей со временем. В целом наблюдается положительный прирост: количество новых клиентов превышает количество ушедших в среднем на 200 человек.

В ходе корреляционного анализа данных были расчитана матрица корреляции коэффициентов Фи. Было выявлено, что мультиколлинеарность между признаками (от 94 до 97%), относящимися к интернет-услугам: internet_service, online_security, online_backup, device_protection, tech_support, streaming_tv, streaming_movies. Для моделирования оставили из них один признак streaming_movies, а остальные удалили. Также удалили признак gender, т.к. у него практически нулевая взаимосвязь со всеми признаками.

На этапе обучения модели было построено 3 модели: LogisticRegression, CatBoostClassifier, SGDClassifier. Для обучения использовались 8 входных признаков: 'type', 'paperless_billing', 'payment_method', 'senior_citizen', 'partner', 'dependents', 'streaming_movies', 'multiple_lines'. По результатам кросс-валидации лучшей оказалась модель CatBoostClassifier с параметрами {'depth': 4, 'learning_rate': 0.1, 'l2_leaf_reg': 3}. Ее метрика ROC-AUC на кросс-валидации равна 91%. Метрика ROC-AUC на тестовых данных оказалась чуть ниже, чем на кросс-валидации - 90.9%

Затем был сделан анализ важности признаков с помощью SHAP-значений. Топ-5 наиболее значимых признаков:

  • длительность контракта в днях duration,
  • общие расходы total_charges,
  • тип подключения type,
  • месячные расходы monthly_charges,
  • семейный статус partner.

Матрица ошибок показала хороший результат: верно были предсказаны 1617 (TP+TN), а неверно 140 (FP+FN). Для 120 случаев модель выдала ложноотрицательный результат, а для 20 - ложноположительный. Таким образом, существует больший риск не предложить спецусловия клиенту, который затем уйдет, чем предложить их тому, кто не собирался уходить.

Анализ кривой ROC-AUC также показал лучшее качество модели CatBoost по сравнению с другими.

Рекомендации:

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