Сравнение различных моделей машинного обучения для прогнозирования подписки на срочный банковский вклад.

ВВЕДЕНИЕ

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

ПАКЕТЫ

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

ИССЛЕДОВАТЕЛЬСКИЙ АНАЛИЗ ДАННЫХ

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

«Нет никаких рутинных статистических вопросов, только сомнительные статистические процедуры». Сэр Дэвид Кокс

Из вышеприведенного вывода можно извлечь некоторые шаблоны данных. Группировка данных на основе того, подписался ли потенциальный клиент на срочный депозит или нет, указывает на то, что большинство клиентов не подписывались на срочный депозит, 88,7% снизились, в то время как 11,3% приняли предложение о подписке. Эта значительная разница в пропорции класса, которую мы пытаемся предсказать, приводит к несбалансированности данных.

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

ПОДГОТОВКА ДАННЫХ

ИСПОЛЬЗОВАНИЕ PyOD ДЛЯ ОЧИСТКИ ОКРУЖАЮЩЕЙ СРЕДЫ

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

«Выбросы - не обязательно плохо. Это просто наблюдения, которые не следуют той же схеме, что и другие. Но может случиться так, что выброс очень интересен. Например, если в биологическом эксперименте крыса не мертва, а все остальные мертвы, то было бы очень интересно понять, почему. Это может привести к новым научным открытиям. Итак, важно обнаруживать выбросы ». Пьер Лафай де Мишо, писатель и статистик.

Распространенной практикой обнаружения выбросов является использование прямоугольных диаграмм, гистограмм и диаграмм рассеяния. Эта методология может быть неэффективной для больших наборов данных. PyOD, библиотека Python, имеет различные алгоритмы, которые можно использовать для обнаружения и удаления выбросов. В этом случае мы используем детекторы k-ближайших соседей.

ГОРЯЧЕЕ КОДИРОВАНИЕ

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

  • Кодировка метки
  • Одно горячее кодирование

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

ОБРАБОТКА НЕБАЛАНСИРОВАННЫХ ДАННЫХ

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

УМЕНЬШЕНИЕ РАЗМЕРНОСТИ С ПОМОЩЬЮ PCA

Снижение размерности - это метод, который уменьшает количество входных переменных или функций в наборе данных. Большее количество входных функций часто усложняет задачу прогнозного моделирования для модели, что называется проклятием размерности. Существуют различные методы уменьшения размерности, такие как AutoEncoder и t-SNE, который является вероятностным методом. В нашем случае мы используем анализ главных компонентов (PCA) для уменьшения размерности. PCA выполняет линейное отображение данных в пространство более низкой размерности таким образом, что дисперсия данных в представлении низкой размерности максимизируется.
Мы выполнили PCA только на объектах, без включения меток.

МОДЕЛИРОВАНИЕ

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

  1. Тип модели. В этом случае я использовал классификатор XGBoost, многоуровневый классификатор перцептрона , логистическую регрессию и машину опорных векторов.
  2. Метод перекрестной проверки, который является k-кратным или стратифицированным k-кратным
  3. X, который является функциями набора данных
  4. y, который является меткой

Инициализация различных моделей

РЕЗУЛЬТАТЫ И ВЫВОДЫ.

Во всех выбранных моделях даже с настройкой гиперпараметров классификатор XGBoost имел более высокие показатели точности. На рисунке ниже показаны различные метрические оценки используемой модели XGBoost. При использовании стратифицированной k-кратной и k-кратной перекрестной проверки наблюдалась незначительная разница в оценках. Стратифицированный k-кратный результат имел более высокие баллы по сравнению с k-кратным.

Accuracy scores of the model: 0.88

 Classification report of the model
--------------------------------------
              precision    recall  f1-score   support

           0       0.89      0.87      0.88      3442
           1       0.88      0.90      0.89      3537

    accuracy                           0.88      6979
   macro avg       0.89      0.88      0.88      6979
weighted avg       0.89      0.88      0.88      6979


 Confusion Matrix of the model
--------------------------------------
[[2993  449]
 [ 354 3183]]

Наша модель имела точность 0,88 с метриками точности и отзыва выше 0,87.

График ROC при использовании перекрестной проверки в k раз показывает результат 0,88.

при использовании стратифицированного k-кратного увеличения оценка на 0,01

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

Уважение и благодарность всем моим однокурсникам и сотрудникам 10Academy за их поддержку в создании этого проекта.

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА