Найти тему
Николай Лазарев

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

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

Из банка стали уходить клиенты. Каждый месяц. Немного, но заметно. Банковские маркетологи посчитали: сохранять текущих клиентов дешевле, чем привлекать новых.

Цель проекта:

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

Построим модель с предельно большим значением F1-меры (целевой уровень метрики не ниже 0.59). Проверим F1-меру на тестовой выборке.

Дополнительно измерим AUC-ROC, сравним её значение с F1-мерой.

Источник данных: https://www.kaggle.com/barelydedicated/bank-customer-churn-modeling

Оглавление

  • 1 Подготовка данных
  • 1.1 Загрузим необходимые библиотеки
  • 1.2 Загрузим данные
  • 1.3 Наименования полей
  • 1.4 Выбросы
  • 1.5 Обработка пропусков
  • 1.6 Дубликаты
  • 2 Проведение исследования задачи
  • 2.1 Преобразование полей (прямое программирование)
  • 2.2 Разбивка features target
  • 2.3 Разбивка train_test_split
  • 3 Борьба с дисбалансом
  • 3.1 Масштабируем численные признаки для работы с линейными моделями
  • 3.2 Модель логистической регрессии без учёта дисбаланса
  • 3.3 Модель дерева решений без учёта дисбаланса
  • 3.4 Модель логистической регрессии c учётом дисбаланса
  • 3.4.1 Для учёта дисбаланса применим upsampling
  • 3.4.2 Для учёта дисбаланса применим балансировку весов классов
  • 3.5 Выбор модели
  • 3.6 Подбор оптимальных гиперпараметров для модели случайного леса
  • 4 Тестирование модели
  • 5 Общий вывод

Описание данных

Признаки

• RowNumber — индекс строки в данных
• CustomerId — уникальный идентификатор клиента
• Surname — фамилия
• CreditScore — кредитный рейтинг
• Geography — страна проживания
• Gender — пол
• Age — возраст
• Tenure — сколько лет человек является клиентом банка
• Balance — баланс на счёте
• NumOfProducts — количество продуктов банка, используемых клиентом
• HasCrCard — наличие кредитной карты
• IsActiveMember — активность клиента
• EstimatedSalary — предполагаемая зарплата

Целевой признак

• Exited — факт ухода клиента

Реализация проекта

Проведено прогнозирование оттока клиентов банка на основе исторических данных поведения клиентов.

Построена модель с предельно большим значением F1-меры

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

Категориальные признаки переведены в дамми переменные.

Для борьбы с дисбалансом использована техника upsampling, что позволило поднять показатель f1 в 4.5 раза. Поэтому для дальнейшего прогноза были использованы данные features_upsampled, target_upsampled полученные с помощью техники upsampling.

Учёт дисбаланса. Метод upsampling.
Учёт дисбаланса. Метод upsampling.
Опробован альтернативный вариант балансировки классов.
Опробован альтернативный вариант балансировки классов.

Проведен выбор лучшей модели для дальнейшего прогнозирования. Проанализированы модели LogisticRegression, DecisionTreeClassifier, RandomForestClassifier

Выбор лучшей модели.
Выбор лучшей модели.

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

-5
-6

Наилучший показатель модель случайного леса на тестовой модели f1 = 0.61 при гиперпараметрах Глубина = 11 Количество деревьев = 100

Проведена проверка модели на адекватность, путём сравнения со случайной моделью.

Тестирование и проверка на адекватность
Тестирование и проверка на адекватность

Доля правильных ответов accuracy в полученной модели 0.822 Доля правильных ответов accuracy в случайной модели 0.7885

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

Дополнительно построена ROC - кривая, и измерена AUC-ROC = 0.8557

-8

Ссылка на код в моём github