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

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

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

Аналитический конвейер проекта можно разбить на пять этапов, о которых мы поговорим подробнее:

  1. Получить данные
  2. Очистить данные
  3. Исследовательский анализ данных
  4. Моделирование
  5. Интерпретация

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

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

Получение данных:

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

У меня есть опыт работы с когнитивными науками, и меня особенно интересует человеческое поведение. Это привело меня к выбору набора данных от Kaggle об оттоке банковских клиентов. Я использую это, чтобы выяснить, почему клиенты уходят из банка и можем ли мы предсказать, уйдут ли клиенты. Ниже приведен снимок набора данных. Каждая строка относится к отдельному клиенту банка, и наша предикторная переменная в этом случае — Вышел, которая указывает, покинул ли клиент банк (1) или все еще является клиентом (0).

Очистка данных:

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

Один из способов быстро проверить выбросы — использовать метод pd.describe() для вашего фрейма данных. Это обеспечивает сводку данных для каждого столбца, включая минимальные и максимальные значения этого индикатора; см. снимок ниже для подробного вывода для .describe(). Минимальное и максимальное поля каждого столбца позволят вам проверить наличие несоответствий в данных. Как упоминалось выше и как видно на снимке ниже, в этом наборе данных нет никаких выбросов.

Однако набор данных нуждается в некоторой очистке: столбцы «География» и «Пол» требуют преобразования признаков. Столбец «География» содержит категориальные значения «Франция», «Германия» и «Испания», которые преобразуются в числовые значения «0», «1» и «2» соответственно. Точно так же столбец «Пол» содержит «мужской» и «женский», которые преобразуются в «0» и «1» соответственно. Этот шаг важен для дальнейшего моделирования, так как некоторые действия нельзя выполнять над категориальными значениями. Ниже мы можем увидеть, как выглядят два столбца после конвертации.

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

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

Сгенерированные графики предоставляют много информации о наборе данных. Как видно ниже, графики обеспечивают эффективное визуальное обобщение данных. Это особенно полезно для больших наборов данных. На рис. 4А показано, что в два раза больше клиентов банка из Франции, чем из Испании или Германии; и больше всего клиентов ушли из Германии, за ней следуют Франция и Испания.

Примечание. Географическое положение:0 = Франция, 1 = Германия, 2 = Испания | Пол: 0 = мужчина, 1 = женщина.

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

На рис. 5Б видно, что во Франции больше всего клиентов женского и мужского пола.

Примечание. Выход:0 = "Нет", 1 = "Да".

На рисунке 6А показано, что клиенты, у которых была кредитная карта, выходили чаще, чем клиенты, у которых не было кредитной карты, а на рисунке 6Б показано, что клиенты, которые выходили, имели примерно более низкий средний кредитный рейтинг. сильный>

На рис. 7A, B показано распределение кредитного рейтинга клиентов-женщин и мужчин. Распределение кредитных баллов обоих полов не сильно отличается.

На приведенных ниже графиках распределения (рис. 8B и 8C) распределение по возрасту ушедших клиентов выглядит близким к нормальному распределению, в то время как распределение ушедших клиентов по возрасту имеет положительную асимметрию.

Диаграмма рассеяния кредитного рейтинга в зависимости от возраста (рис. 8A) с цветовой кодировкой баллов в зависимости от того, уходили клиенты или нет, показывает, что большинству ушедших клиентов было от 40 до 60 лет.

Статистический обзор

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

Напомним, что в наборе данных 10 000 записей, и 79,6% клиентов остались в банке, а 20,4% клиентов вышли из банка.

Мы используем тепловую карту для изучения переменных в наборе данных и проверки наличия значимой корреляции между ними. Значение корреляции, близкое к -1, указывает на сильную отрицательную корреляцию, значения, близкие к 0, указывают на отсутствие или очень слабую корреляцию, а значения, близкие к 1, указывают на сильную положительную корреляцию между переменными. Переменные «Вышел» и «Возраст» имели самое высокое значение корреляции 0,29, что не предполагает сильной корреляции между парами, поскольку значение близко к 0. Все остальные переменные имели очень слабые значения корреляции, как показано на рисунке 9.

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

Проверка гипотез: существует ли существенная разница между средним кредитным рейтингом клиентов, которые вышли, и всей популяцией клиентов банка?

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

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

Значение p, равное 0,0199, означает, что мы ожидаем увидеть такие же экстремальные данные, как и наша выборка, из-за вероятности менее 5% времени, если нулевая гипотеза верна. В этом случае p-значение ниже нашего уровня значимости α (равного 1-conf.level или 0,05), поэтому мы должны отклонить нулевую гипотезу. Если бы мы построили 95% доверительный интервал для выборки, он не отразил бы средний кредитный рейтинг клиента банка, равный 650,5288:

Резюме одного образца Т-теста

Основываясь на статистическом анализе одного выборочного t-критерия, кажется, что существует значительная разница между средним кредитным рейтингом вышедших клиентов банка и всей совокупности клиентов банка. Низкое значение P, равное 0,019946347165310532, при доверительном интервале 5% является хорошим показателем для отклонения нулевой гипотезы.

Моделирование

Моделирование с использованием машинного обучения дает нам возможность прогнозировать, потеряет ли банк клиента или нет. Прежде чем мы будем обучать наши классификаторы, данные необходимо стандартизировать и разделить на обучающие и тестовые наборы. В нашем случае мы использовали метод Robust Scaler, который также хорошо справляется с выбросами в наборе данных. Мы сделали тренировочный и тестовый сплит 80–20; 80% данных использовались для обучения модели, а 20% данных использовались для оценки модели.

В качестве эталонной модели был выбран Классификатор логистической регрессии. Эталонная модель используется для сравнения того, как другие модели работают с ней. Другими моделями, которые использовались, были Дерево решений, Случайный лес, AdaBoost и Машины опорных векторов.

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

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

Ложные срабатывания (ошибка типа I): вы прогнозируете, что клиенты уйдут, но это не так.

Ложноотрицательные результаты (ошибка типа II): вы прогнозируете, что клиент не уйдет, но он уйдет.

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

Кривая AUC — ROC представляет собой измерение производительности для задачи классификации при различных пороговых значениях. ROC представляет собой кривую вероятности, а AUC представляет собой степень или меру разделимости. Он говорит, насколько модель способна различать классы. Чем выше AUC, тем лучше модель предсказывает 0 как 0 и 1 как 1. По аналогии, чем выше AUC, тем лучше модель различает клиентов, которые уйдут, и тех, кто не уйдет. Ниже приведен график используемых классификаторов и их соответствующих оценок AUC-ROC.

Модели на основе дерева (Дерево решений, Случайный лес, AdaBoost) показали наилучшие результаты в наборе данных, и я бы рекомендовал использовать модель дерева решений, так как она требует меньше вычислительных ресурсов. Кроме того, деревья решений позволяют вам оценить, какие функции в вашем наборе данных были наиболее важными, и мы можем визуализировать вклад каждой функции, как это видно ниже в записной книжке. Для нашего набора данных тремя основными функциями были «Возраст», «Количество продуктов» и «Баланс».

Интерпретация результатов

Анализ:

Описательная аналитика — что происходит? :Как правило, клиенты банка в возрасте 40–60 лет, с более низким кредитным рейтингом и кредитной картой чаще покидают банк.

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

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

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

Возможные решения:

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

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

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

Решение 1.

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

Решение 2. Проведите обучение сотрудников банка, чтобы улучшить обслуживание клиентов. Отслеживайте и измеряйте их производительность с помощью аналитики. Некоторые способы улучшения обслуживания клиентов включают в себя:

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

Куда мы отправимся отсюда?

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

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

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

  • Какие функции больше всего способствуют тому, чтобы клиенты сохраняли свои услуги в банке?
  • Какие функции заставляют клиентов не уходить?
  • Что клиенты больше всего ценят в банке?

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