Авторы

Робин Радж | Датский Усмани | Приянка Далмия | Пиюш Кашьяп

Важные ссылки

  1. Ссылка на репозиторий GitHub — https://github.com/apollo-robin/customer-churn
  2. Набор данных от Kaggle (Сакши Гоял, инженер-программист, Wipro) — ССЫЛКА
  3. Отчет о профиле данных с использованием инструмента профилирования Panda — ССЫЛКА
  4. Вот ссылка на размещенный сервис на Streamlit — https://share.streamlit.io/apollo-robin/algo_server/main/server.py

Объем проекта и постановка задачи

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

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

Обзор набора данных и отчет о профиле данных

Набор данных содержит 20 входных функций для более чем 10 000 клиентов, которые состоят из 14 числовых функций, 5 категориальных функций и 1 логической функции с целевой переменной. как флаг Истощения или Оттока, обозначающий Существующего или Исчезнувшего Клиента.

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

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

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

Предварительная обработка данных

С помощью результатов отчета о профиле данных мы реализовали три этапа обработки данных. Во-первых, чтобы избежать большого количества фиктивных переменных с использованием One Hot Encoding, мы внедрили Target Encoding для некоторых категориальных переменных «Уровень образования», «Категория дохода» и « Категория карты». Для категориальных переменных всего с двумя возможными значениями, такими как «Пол» и «Семейное положение», мы внедрили One Hot Encoding. Для некоторых числовых функций «Общий возобновляемый баланс», «Средняя открытая для покупки» и «Общая сумма транзакции» мы внедрили группировку функций, чтобы внести некоторую нелинейность в модель для повышения производительности.

Вменение K ближайших соседей (kNN) было реализовано для категориальных характеристик «Уровень образования», «Семейное положение» и «Категория дохода», поэтому нам не нужно удалять какие-либо из этих записей из набора данных.

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

Отслеживание экспериментов, выбор лучшей модели и функции

Мы реализовали различные модели и использовали веса и отклонения для отслеживания экспериментов. Пожалуйста, найдите сводку всех экспериментов. Разделение 80:20 использовалось для набора данных Train-Test.

Мы использовали поиск по сетке для настройки гиперпараметров с перекрестной проверкой 5. Модель XG Boost обеспечила наилучшие показатели точности, F1 Score, Precision, Recall и Final Classification Score, поэтому мы продолжили работу с XG Boost Model. Кроме того, она оказалась самой эффективной моделью по кривым ROC и Precision vs Recall для всех экспериментов в W&B.

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

Развертывание модели

Окончательная переобученная модель XG Boost с 10 функциями была затем развернута как веб-приложение. Для этого модель сначала была сохранена в виде файла pickle. Затем была использована стратегия Model-in-Service для развертывания модели таким образом, чтобы она была встроена в приложение. Для развертывания использовался хостинг Streamlit. Ниже приведены снимки разработанного пользовательского интерфейса для нескольких сценариев:

Мониторинг модели

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

Дрейф был обнаружен для 81,8% признаков, т. е. 9 из 11 признаков в рабочем наборе не соответствовали тому же распределению, что и в обучающем наборе. Мы также рассчитали отчет о производительности классификации, чтобы понять влияние дрейфа данных на производительность модели.

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

Мониторинг модели — анализ ошибок подсегмента по полу

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

Результаты смещения модели в категории «МУЖЧИНЫ»:

Результаты изменения модели в категории ЖЕНСКОЕ:

Описание модели

Глобальная интерпретация

Используя Сводку значений Shapley, мы можем интерпретировать, что общее количество транзакций является наиболее важным фактором, а пол — наименее важным фактором. Низкое значение Общее количество транзакций указывает на большее отсев. Высокая Общая сумма транзакции указывает на низкую убыль. Используя график частичной зависимости, мы можем интерпретировать, что по мере увеличения общего количества транзакций вероятность истощения уменьшается. Точно так же более высокое значение Relationship Count указывает на меньшую убыль.

Локальная интерпретация (сценарий 1)

Используя LIME, мы можем объяснить случай отсутствия истощения с вероятностью 0,62. Значение признаков, способствующих отсутствию убыли: низкий оборотный баланс, низкий средний коэффициент использования и т. д. Мы также рассмотрели случаи убыли с вероятностью 1,00. Используя SHAP, мы можем видеть, что значения характеристик, которые способствуют отсутствию истощения, следующие: изменение количества транзакций (Q4 по сравнению с Q1), общее количество отношений и т. д. Эти функции отодвигаются от базового значения.

Локальная интерпретация (сценарий 2)

Используя LIME, мы можем объяснить случай истощения с вероятностью 1,00. Значение характеристик, способствующее убыли: малое количество отношений, высокое значение неактивных месяцев за последние 12 месяцев и т. д. Используя SHAP, мы можем увидеть, что ценность характеристик, способствующая убыли, следующая: Низкая возобновляемость баланс, низкое общее количество транзакций и т. д.

График калибровки модели

Этот график используется для измерения надежности модели. Согласно графику, модель Final XG Boost не близка к идеальной калибровке, но ее можно рассматривать как надежную модель для прогнозирования оттока.

Отчетность модели — карточка модели

Ниже приведен снимок карты модели с кратким описанием модели машинного обучения. Сообщалось о разнице в производительности и точности модели для прогнозирования мужского и женского сегментов.

Файловая структура GitHub

Чтобы структурировать ресурсы нашего проекта, мы использовали GitHub в качестве системы контроля версий. Как видно из древовидной диаграммы каталогов проекта, у нас есть файл Readme для описания проекта, не ограничиваясь описанием проблемы. Кроме того, есть 5 каталогов для хранения различных типов ресурсов. Файлы данных состоят из всех необработанных и обработанных файлов данных, используемых при тестировании, обучении и проверке. Каталог Models хранит модель в формате файла pickle. Каталог папки Notebook состоит из всех файлов блокнота Python, используемых в проекте, таких как обработка данных, разработка модели, развертывание модели и мониторинг модели. Папка Python/Files содержит код, используемый для создания и размещения пользовательского интерфейса веб-приложения для демонстрационных целей проекта. Наконец, папка Отчеты состоит из всех HTML-отчетов, таких как карточки моделей, отчеты о профилях данных из панд, отчеты о мониторинге отклонения данных, отчеты о производительности классификации моделей, анализ точности подсегментов в гендерных отчетах и ​​другие. GitHub также сделал возможной совместную работу членов группы.

Проблемы и ключевые уроки

  1. Чтобы выбрать наиболее эффективную модель, мы рассматриваем различные показатели оценки, такие как точность, точность, полнота и оценка F1. Мы окончательно остановились на использовании оценки F1, поскольку и FN, и FP учитывали равную стоимость.
  2. Было сложно разместить несколько участников из группы для репозитория кода GitHub, что привело к многочисленным конфликтам на протяжении всего процесса разработки. Мы научились разрешать эти конфликты, создавать несколько веток разработки, периодически вытягивать запросы и объединять их в основную ветку.
  3. Мы включили Model-In-Service в качестве стратегии развертывания модели в наш проект для простоты на этапе обучения. Мы понимаем все проблемы, связанные с этой стратегией, такие как тесная связь между моделью и приложением, что затрудняет предотвращение простоев во время обновлений модели и т. д.
  4. Мы узнали о методологии и важности демонстрации наших проектов, создав хорошо подобранную статью на Medium со всем соответствующим контентом.
  5. Мы понимали важность изучения и сообщения о присущей модели предвзятости для таких сегментов, как мужской/женский пол, чтобы облегчить интерпретацию результатов.