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

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

Набор данных, который я буду использовать, доступен в Kaggle. Ссылка: https://www.kaggle.com/datasets/rikdifos/credit-card-approval-prediction

Каждая строка этого набора данных представляет клиента, содержащего запись приложения и кредитную запись.

Давайте посмотрим на наши данные! Этот набор данных содержит:

  1. CODE_GENDER: Пол
  2. FLAG_OWN_CAR: Есть машина?
  3. FLAG_OWN_REALTY: Есть недвижимость
  4. CNT_CHILDREN: количество детей
  5. AMT_INCOME_TOTAL: Годовой доход
  6. NAME_INCOME_TYPE: категория дохода
  7. NAME_EDUCATION_TYPE: уровень образования
  8. NAME_FAMILY_STATUS: семейное положение
  9. NAME_HOUSING_TYPE: образ жизни
  10. DAYS_BIRTH День рождения: обратный отсчет от текущего дня (0), -1 означает вчерашний день
  11. DAYS_EMPLOYED: Дата начала трудоустройства Отсчитывать в обратном порядке от текущего дня (0). Если положительный, это означает, что человек в настоящее время безработный.
  12. FLAG_MOBIL: Есть ли мобильный телефон?
  13. FLAG_WORK_PHONE: есть рабочий телефон
  14. FLAG_PHONE: есть ли телефон?
  15. FLAG_EMAIL: есть электронное письмо?
  16. OCCUPATION_TYPE: Род занятий
  17. CNT_FAM_MEMBERS: Размер семьи
  18. MONTHS_BALANCE: Месяц записи. Месяц извлеченных данных является отправной точкой, в обратном порядке, 0 — текущий месяц, -1 — предыдущий месяц и т. д.
  19. СТАТУС: статус кредитной истории
  • 0: 1–29 дней просрочки
  • 1: 30–59 дней просрочки
  • 2: просрочка 60–89 дней
  • 3: просрочка 90–119 дней
  • 4: просрочка 120–149 дней
  • 5: Просроченные или безнадежные долги, списания более 150 дней
  • C: окупился в этом месяце
  • X: Нет кредита на месяц

Выше, очевидно, обычные вещи, которые мы даем банкам перед подачей заявки на кредит/кредит. Если вас когда-нибудь смущал термин «СТАТУС», то он объясняет качество клиента при погашении кредита. 0 — лучший, а худший — 5. В этой статье 0, C и X будут сгруппированы в одну категорию, которая равна 0, поскольку они попадают в одну и ту же категорию, верно? Таким образом, 0 означает, что прошло от 1 до 29 дней с тех пор, как они оплатили свои счета. Посмотрите на 5, «просроченные или безнадежные долги, списание более 150 дней» Да, это означает, что клиент не оплатил свой кредитный счет через 150 дней.. и это плохо, не так ли?

Чтобы больше взглянуть на набор данных:

  1. Запись приложения: содержит 438 557 строк и 18 столбцов.
  2. Кредитная история: содержит 1.048.575 и 3 столбца.

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

Также обнаружено, что у нас есть столбцы DAYS_BIRTH и DAYS_EMPLOYED. Но почему минус? Оказывается, это то, сколько дней у них осталось с момента обмена данными. В следующем мы превратим эти два года в правильные годы, просто переверните их минус и разделите их на 365, чтобы превратить их в год! Следовательно, у нас есть новые столбцы: возраст и количество лет работы. Поскольку нам больше не нужны DAYS_BIRTH и DAYS_EMPLOYED, лучше их отбросить.

На следующем этапе мы проведем некоторый анализ данных. Отсутствует значение? Оказывается, их много: 11 323 строк по роду занятий, около 31 % от общего числа данных. Мой выбор здесь таков: мы просто опускаем эти строки.

Далее проверяет дублирующиеся строки, результат 0.

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

Небольшое понимание: подсчет членов семьи и подсчет детей тесно связан! Но поскольку у нас есть порог 0,8, и всякий раз, когда корреляция достигает порога и выше, мы должны рассмотреть возможность исключения одного из них. Мы можем видеть точку корреляции между коррелированными столбцами и нашим целевым столбцом (СТАТУС), так как оба показывают одну и ту же точку, которую мы можем выбрать. В этой статье я отказываюсь от Count Children.

Далее идет статистическая сводка.

Некоторые идеи, которые у нас есть:

  1. Самый доходный тип принадлежит к рабочему классу.
  2. Те, кто подал заявку на получение кредитной карты, закончили в основном среднее или среднее специальное образование.
  3. Многие из тех, кто подал заявку, уже женаты, а также уже владеют домом/квартирой.
  4. Самый популярный тип занятий — разнорабочие.

Для столбцов с числовыми значениями (числовыми признаками) мы будем использовать блочную диаграмму для проверки распределения и выбросов.

Выяснилось, что у нас есть 4 столбца с большим количеством выбросов: AMT_INCOME_TOTAL, CNT_FAM_MEMBERS, years_emploted, CNT_CHILDREN. Для каждого из этих столбцов мы проверим их максимальные значения и, возможно, выясним, действительно ли они являются выбросами (или нет).

Я лично думаю, что эти цифры все еще в порядке. 43 года работы? Хм может быть. Но вот что меня заинтересовало. В эту эпоху есть хоть один человек, у которого 19 детей? Конечно в прошлом. Но.. кто знает? Их может быть много, поэтому я решил оставить это, так как мы все равно не будем работать со столбцом CNT_CHILDREN.

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

Мы также сделали дополнительные выводы о данных, которые вам могут быть интересны:

  1. Большинство клиентов живут в Доме/квартире (владелец) в возрасте › 50 лет.
  2. Пол, подавший заявку на получение кредитной карты: Женщина -› Мужчина
  3. Те, кто подал заявку на получение кредитной карты, возглавляют те, кто работает, за ними следует коммерческий партнер.
  4. Тип работы: Разнорабочие, за которыми следуют Основной персонал и Продавцы.

Теперь давайте перейдем к нашему последнему шагу — моделированию машинного обучения. Какие шаги?

  1. Преобразование данных (включая кодирование, обработку несбалансированных данных)
  2. Выбор функции (числовой или закодированный категориальный)
  3. Обучение модели
  4. Оценка
  5. Прогноз с этим набором данных

Итак, мы уже сделали преобразование данных с кодированием (заменой значений), мы также обнаружили, что данные могут быть несбалансированными.

После проверки подсчета значений верно, что данные сбалансированы, особенно в целевых столбцах (СТАТУС).

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

Далее мы разделим наш поезд и тестовые данные с помощью библиотеки train_test_split.

В этой статье мы будем использовать Random Forest и K-Nearest Neighbor для модели и оценим, какой из них дает лучший результат.

Результат?

KNN работает лучше с точностью 64%, чем Random Forest с точностью 54%.

Вывод из этой модели:

  1. Всего действительно хороших клиентов, которые будут одобрены для кредитной карты, составляет 13.
  2. Всего предположительно плохих клиентов, но оказавшихся хорошими клиентами (для одобрения кредитной карты) 7
  3. Всего предположительно хороших клиентов, но оказавшихся плохими клиентами (кредитная карта не будет одобрена) 7
  4. Всего клиентов, которые на самом деле не будут одобрены для кредитной карты, составляет 10.

Это всего 74 строки (после недостаточной выборки)

Заключение и рекомендация

Из того, что мы сделали до сих пор, у меня есть некоторые выводы и рекомендации:

  1. Больше внимания уделяйте клиентам из рабочего класса и женщинам, так как у них больше шансов на одобрение.
  2. Поскольку будет использоваться автоматизация, предлагается добавить дополнительные функции (такие как рабочая электронная почта или рейтинг рабочего места) для предотвращения мошенничества.
  3. Плохие клиенты! = Кредитная карта не одобрена. Предоставить данные кредитному аналитику для ручного анализа того, должен ли клиент быть обработан для следующего шага или нет

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

Спасибо! // Спасибо!