Выявление и прогнозирование дефолтных платежей

Источник данных

Этот проект основан на наборе данных UCI https://www.kaggle.com/uciml/default-of-credit-card-clients-dataset, содержащем информацию о платежах по умолчанию, демографических факторах, кредитных данных, истории платежей и выписки по счетам клиентов кредитных карт на Тайване с апреля 2005 г. по сентябрь 2005 г.

Цель

Выявление и прогнозирование дефолтных платежей

Подход

  • Провести предварительный анализ данных для выявления закономерностей
  • Тестируйте готовые модели машинного обучения
  • Выберите лучшие модели и настройте их

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

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

Предоставленные метаданные вместе с набором данных следующие. Они смотрят на каждую функцию и описывают, что они представляют.

  • ID: ID каждого клиента
  • LIMIT_BAL: сумма кредита в тайваньских долларах (включая индивидуальный и семейный/дополнительный кредит).
  • ПОЛ: Пол (1=мужской, 2=женский)
  • ОБРАЗОВАНИЕ: (1=аспирантура, 2=университет, 3=средняя школа, 4=другое, 5=неизвестно, 6=неизвестно)
  • БРАК: Семейное положение (1=замужем, 2=холост, 3=другие)
  • ВОЗРАСТ: Возраст в годах
  • PAY_0: Статус погашения в сентябре 2005 г. (-1=оплата в установленном порядке, 1=задержка платежа на один месяц, 2=задержка платежа на два месяца, … 8=задержка платежа на восемь месяцев, 9=задержка платежа на девять месяцев и более)
  • PAY_2: статус погашения в августе 2005 г. (масштаб такой же, как указано выше).
  • PAY_3: Статус погашения в июле 2005 г. (масштаб тот же, что и выше)
  • PAY_4: Статус погашения в июне 2005 г. (масштаб такой же, как указано выше)
  • PAY_5: статус погашения в мае 2005 г. (масштаб такой же, как указано выше).
  • PAY_6: Статус погашения в апреле 2005 г. (масштаб такой же, как указано выше)
  • BILL_AMT1: Сумма выписки по счету в сентябре 2005 г. (NT-доллары).
  • BILL_AMT2: Сумма выписки по счету в августе 2005 г. (доллары NT).
  • BILL_AMT3: Сумма выписки по счету за июль 2005 г. (NT-доллары).
  • BILL_AMT4: Сумма выписки по счету за июнь 2005 г. (NT-доллары).
  • BILL_AMT5: Сумма выписки по счету в мае 2005 г. (NT-доллары).
  • BILL_AMT6: Сумма выписки по счету за апрель 2005 г. (NT-доллары).
  • PAY_AMT1: Сумма предыдущего платежа в сентябре 2005 г. (NT-доллары).
  • PAY_AMT2: Сумма предыдущего платежа в августе 2005 г. (NT-доллары).
  • PAY_AMT3: Сумма предыдущего платежа в июле 2005 г. (NT-доллары).
  • PAY_AMT4: Сумма предыдущего платежа в июне 2005 г. (NT-доллары).
  • PAY_AMT5: Сумма предыдущего платежа в мае 2005 г. (NT-доллары).
  • PAY_AMT6: Сумма предыдущего платежа в апреле 2005 г. (NT-доллары).
  • default.payment.next.month: Платеж по умолчанию (1=да, 0=нет)

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

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

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

  • Выберите список известных моделей классификации
  • Запустите базовую модель для каждой из наших предварительно выбранных моделей
  • Выберите лучшие модели на основе определенного балла (в нашем случае балл отзыва / балл f1)
  • Настройте гиперпараметры топ-моделей и наблюдайте за увеличением очков

Итак, ниже приведен список предварительно выбранных моделей классификации:

  • Логистическая регрессия
  • Древо решений
  • Случайный лес
  • АдаБуст
  • K Ближайшие соседи
  • XGBoost
  • SVC (классификация опорных векторов)

Чтобы сравнить их производительность, нам нужно определить, какие показатели оценки мы собираемся использовать. Поскольку мы пытаемся выяснить, есть ли статус платежа по кредиту (оплачен или не оплачен в следующем месяце), важно поймать как можно больше положительных (не оплачен => целевое значение = 1). Или, другими словами, мы постараемся свести к минимуму классификацию False Positive (оплаченный статус прогнозируется, когда фактический статус не оплачен). Это точное определение показателя отзыва. Кроме того, мы хотим сохранить высокую точность Истинно отрицательных + Истинно положительных наблюдений. См. ниже визуальное определение

Формулы отзыва, точности и оценки F1:

Отзыв = ТП / (ТП + FN)

Точность = TP / (TP + FP)

F1 = 2 * (Отзыв * Точность) (Отзыв + Точность)

Заключение

Как видно выше, наши наиболее эффективные модели для прогнозирования целевого значения (статус платежа по кредиту по умолчанию) — это модель логистической регрессии и модель AdaBoost. Мы также увидели, что обработка набора данных о дисбалансе (с использованием SMOTE) значительно улучшила производительность наших моделей.
Тем не менее, ни логистическая регрессия, ни AdaBoost не являются отличными предикторами моделей с оценочной оценкой отзыва около 0,6, чуть выше случайного предположения. Может помочь больше функций вокруг отдельных людей.
Другой вывод может заключаться в том, что непредсказуемость.

Репозиторий Github: https://github.com/fleralle/default-credit-card