Coder Social home page Coder Social logo

schatzederwelt / customer-churn-prediction Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 1.08 MB

Предиктивный анализ оттока клиентов

Jupyter Notebook 100.00%
pandas python downsampling dummy-classifier learning-curve upsampling validation-curve classification-report precision-recall-curve spearman-correlation

customer-churn-prediction's Introduction

Предиктивный анализ оттока клиентов

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

ЦЕЛЬ ПРОЕКТА:

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

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

KPI успеха проекта - F1-score >= 0.59

Это классический таргет для бизнес-задач. Будет отлично, если более детальный анализ позволит получить результаты с еще большей точностью.


ЛИЧНАЯ ЦЕЛЬ:

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

Наша логистическая регрессия показывала нулевой precision и recall для 1-го класса:

  • Теперь мы вооружены методами для борьбы с неравными классами и сможем протестировать их работу на практике.

  • Научимся правильно интерпретировать Recall, Precision, F1_score, ROC_AUC и PR-кривые. Посмотрим, действительно ли они могут искажать результаты на imbalanced классах, как об этом пишут.

Также испытаем новые инструменты:

  1. Попробуем "на лету" строить пайплайны из данных с помощью Pandas и использовать метод make_pipeline для трансформеров.

  2. Проведем эксперименты подбора базовых гиперпараметров c визуализацией learning_curve и validation_curve

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

Посмотреть проект

Новые навыки


✔️ Борьба с дисбалансом классов (custom функции для Оversampling & Undersampling)

✔️ Числовые и категориальные признаки ✔️ Корреляции Спирмена и Пирсона

✔️ Анализ относительных частот ✔️ Использование трэшхолдов в классификации

✔️ ROC AUC ✔️ F1-score ✔️ Precision ✔️ Recall

✔️ Пайплайны обработки данных

Этапы исследования

  1. Исследовали различные факторы ухода клиентов:

    • Проверили валидность всех данных, которые будут использоваться предсказательной моделью
    • Изучили влияние различных признаков, основываясь на корреляции и частотном анализе.
    • Увеличили корреляцию, создав категории для численных признаков c помощью Target Encoding
    • Выбрали те признаки, которые слабо влияют на уход клиентов
  2. Построили базовые модели-классификаторы на базе 3-х алгоритмов:

    • LogisticRegression
    • DecisionTree
    • RandomForest
  3. Провели эксперименты для борьбы с дисбалансом классов:

    • Параметр class_weight=balanced
    • Undersampling
    • Oversampling
  4. Выполнили поиск лучшего трэшхолда для максимизации f1-score

  5. Визуализировали качество предсказаний с помощью Precision-Recall и ROC-AUC кривых.

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

Результат проекта

Результат проекта - две модели на базе алгоритмов Решающего Дерева и Случайного Леса для предсказания Churn Customer.

====> RandomForest (Случайный Лес, 60 деревьев, max_depth=7)

Результаты на валидационной и тестовой выборках:

  • Порог = 0.50 | Точность = 0.512, Полнота = 0.718, F1_score = 0.598 | roc_auc = 0.770

  • Порог = 0.50 | Точность = 0.510, Полнота = 0.742, F1_score = 0.604 | roc_auc = 0.785

====> DecisionTree (Решающее Дерево, max_depth=8)

Результаты на валидационной и тестовой выборках:

  • Порог = 0.40 | Точность = 0.502, Полнота = 0.712, F1_score = 0.589 | roc_auc = 0.764

  • Порог = 0.40 | Точность = 0.508, Полнота = 0.705, F1_score = 0.591 | roc_auc = 0.771

Даже на несложных моделях мы построили решение, которое удовлетворяют целевому KPI.

Возможности для развития проекта - использовать CatBoost Classificator для повышения точности предскаазний.

Исходные данные

import pandas as pd

df = pd.read_csv("https://code.s3.yandex.net/datasets/Churn.csv")
display(df.iloc[:, :6].head(3))
df.iloc[:, 6:].head(3)
RowNumber CustomerId Surname CreditScore Geography Gender
0 1 15634602 Hargrave 619 France Female
1 2 15647311 Hill 608 Spain Female
2 3 15619304 Onio 502 France Female
Age Tenure Balance NumOfProducts HasCrCard IsActiveMember EstimatedSalary Exited
0 42 2.0 0.00 1 1 1 101348.88 1
1 41 1.0 83807.86 1 0 1 112542.58 0
2 42 8.0 159660.80 3 1 0 113931.57 1

customer-churn-prediction's People

Contributors

schatzederwelt avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.