Чтобы помочь банкам в санкционировании или отклонении кредитов на основе данных клиентов

Абстрактный

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

Введение

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

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

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

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

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

Набор данных

Набор данных для этой задачи доступен на Kaggle. Набор данных включает 307511 записей со 122 функциями, которые являются как числовыми, так и категориальными. Наличие категориальных данных еще больше увеличило бы количество признаков. Во время предварительной обработки данных и отображения инженерных этапов мы будем обрабатывать недостающие значения, используя такие методы, как вменение среднего значения и т. Д. Кроме того, на основе целевой переменной мы можем сказать, что данные сильно несбалансированы, поэтому методы выборки могут быть полезны для сделать баланс данных.

Объяснение некоторых особенностей -

1) ЦЕЛЬ: эта функция является целевой переменной/зависимой переменной, которую нам нужно предсказать для будущих невидимых данных.

Цель = 1 указывает, что ссуда отклонена

Цель = 0 указывает, что кредит одобрен

2) CODE_GENDER: эта функция указывает пол заявителя. Если заявители мужчины, то значение равно M или F.

3) NAME_CONTRACT_TYPE: эта функция предоставляет информацию о типе кредита: кредит наличными или возобновляемый кредит.

4) FLAG_OWN_CAR — эта функция указывает, есть ли у заявителя автомобиль или нет. Если заявитель владеет автомобилем, то значение равно Y, иначе N.

5) FLAG_OWN_REALTY — этот признак указывает, владеет ли заявитель каким-либо имуществом или нет. Если заявитель владеет недвижимостью, то значение равно Y, иначе N.

6) CNT_CHILDREN — эта функция содержит значение количества детей, которые есть у заявителя.

7) AMT_INCOME_TOTAL — эта характеристика имеет значение дохода, полученного заявителем.

8) AMT_CREDIT — эта функция имеет значение существующего кредита, который есть у заявителя.

9) AMT_ANNUITY — Эта функция имеет значение аннуитета заявителя.

10) NAME_INCOME_TYPE — эта функция предоставляет информацию о типе работы, которую выполняет заявитель.

11) NAME_EDUCATION_TYPE — эта функция предоставляет информацию о типе образования, которое получил заявитель.

12) NAME_FAMILY_STATUS — Эта функция дает информацию о семейном положении заявителя.

13) NAME_HOUSING_TYPE — Эта функция дает информацию о том, проживает ли заявитель вместе с родителями или нет.

14) DAYS_BIRTH — эта функция содержит информацию о количестве дней, прошедших с момента рождения заявителя до дня подачи заявления.

15) DAYS_EMPLOYED — эта функция содержит информацию о количестве дней, в течение которых пользователь работал в день подачи заявки.

16) OCCUPATION_TYPE — эта функция предоставляет информацию о роде занятий заявителя.

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

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

Подход

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

В целом, ниже приведены шаги, которые необходимо выполнить для решения проблемы.

1) Очистка данных и предварительная обработка

2) Разработка и выбор функций

3) Обучение моделей машинного обучения

4) Протестируйте модели ML, используя определенную метрику KPI.

5) Получите наиболее эффективную модель и разверните ее для использования в производственной среде.

Ключевая метрика (KPI)

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

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

Представление матрицы путаницы:

Точность = 𝑇𝑃/(𝑇𝑃+𝐹𝑃)

Точность определяется как процент точек, которые на самом деле являются положительными, от общего количества точек, которые модель предсказала как положительные.

Напомним = 𝑇𝑃/(𝑇𝑃+𝐹N)

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

Оценка F1 = 2∗𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛∗𝑅𝑒𝑐𝑎𝑙𝑙/(𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒 𝑐𝑎𝑙𝑙) = 2∗𝑇𝑃/(2∗𝑇𝑃+(𝐹𝑁+𝐹𝑃))

F1-Score — это среднее гармоническое от Precision and Recall.

Если бы нам пришлось выбирать любую другую метрику, кроме оценки F1, это было бы среднее геометрическое.

Среднее геометрическое = √(𝑅𝑒𝑐𝑎𝑙𝑙∗𝑆𝑝𝑒𝑐𝑖𝑓𝑖𝑐𝑖𝑡𝑦), где специфичность = 𝑇𝑁/𝑇𝑁+𝐹𝑃

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

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

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

Код для расчета f1-счета:

Приведенный выше код написан для вычисления f1_score вручную и последующего сравнения его с f1_score, полученным из предопределенной функции.

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

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

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

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

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

· Удаление всего столбца, если количество записей с отсутствующими значениями превышает определенный порог (используется 30% для этого проекта)

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

· Методы на основе вменения

1. Вменение на основе среднего значения

2. Вменение на основе медианного значения

3. Вменение на основе значения режима

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

Другими методами, которые можно использовать в целом, являются

1. Удаление точки данных, даже если отсутствует только одно значение функции

2. Обработка пропущенного значения как одной из категорий в случае категориальных признаков

3. Получение новой функции, которая содержит двоичное значение в зависимости от наличия или отсутствия данных.

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

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

Для нашей задачи данные, которые имеют 307511 строк с 122 функциями, теперь уменьшаются до 252137 строк с 42 функциями после выполнения вышеупомянутых шагов.

Выбор функции

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

В целом, ниже приведены различные типы методов выбора функций.

· Методы обертки

1. Выбор функции вперед

2. Устранение обратных функций

3. Пошаговый выбор функций

· Методы фильтрации

1. Дисперсионный анализ (ANOVA)

2. Корреляция Пирсона

3. Пороговое значение дисперсии

· Встроенные методы

1. Лассо и регрессия хребта

2. Дерево решений

Коррелированные функции –

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

1. Положительная корреляция. Говорят, что два или более признаков имеют положительную корреляцию, если значение признака увеличивается или уменьшается с увеличением или уменьшением значения другого признака соответственно.

2. Отрицательная корреляция. Говорят, что два или более признака имеют отрицательную корреляцию, если значение признака увеличивается или уменьшается с уменьшением или увеличением значения другого признака соответственно.

3. Отсутствие корреляции: если мы не можем определить какую-либо взаимосвязь между функциями, то корреляции между функциями не существует.

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

Для этой задачи я выбрал предел порога корреляции как 75% и удалил одну из коррелированных функций на основе каждой группы из набора данных, поэтому теперь форма набора данных сводится к 252137 строк с 36 функциями.

Теперь, как часть выбора функций, я выбрал метод фильтрации, который представляет собой дисперсионный анализ (ANOVA), чтобы выбрать лучшие k функций. ANOVA работает с числовыми признаками, из 36 признаков только 23 были непрерывными, поэтому я решил выбрать лучшие 90% из 23 признаков. После запуска выборки на основе ANOVA эти 23 функции были уменьшены до 20, и поэтому у нас есть 252137 строк с 33 функциями.

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

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

· Однофакторный анализ:

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

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

· Двумерный анализ:

Название «Би» означает «два», а «вариант» означает «переменная», поэтому в двумерном анализе мы изучаем взаимосвязь между двумя функциями. Как правило, для двумерного анализа мы используем парные графики и т. д.

Типы двумерного анализа:

1. Численный против числового — анализируемые признаки являются числовыми по типу.

2. Числовой или категориальный — один из анализируемых признаков является числовым, а другой — категориальным.

3. Категориальный против категорического — анализируемые признаки относятся к категориальному типу.

Наблюдения, сделанные из EDA:

1. Набор данных содержит 307 511 строк и 122 столбца. Из них зависимой переменной является ЦЕЛЬ, а остальные 121 столбец составляют независимые переменные или признаки.

2. Данная задача представляет собой проблему двоичной классификации, где переменная Target принимает одно из двух значений 0 или 1, где 0 означает, что заявка на получение ссуды одобрена, тогда как 1 означает, что заявка на получение ссуды отклонена.

3. Данный набор данных сильно несбалансирован: 282 686 строк были одобрены, а остальные отклонены.

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

5. Выбрав порог 30%, я удалил функции, у которых отсутствует более 30% значений.

6. Теперь я проверил значения, присутствующие в функциях, и очистил данные в случае неопределенных значений.

7. Для числовых признаков нулевые значения вменяются путем вычисления соответствующего медианного значения.

8. Для категориальных признаков нулевые значения вменяются путем вычисления соответствующего значения режима.

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

10. «DEF_60_CNT_SOCIAL_CIRCLE», «AMT_GOODS_PRICE», «AMT_ANNUITY», «LIVE_CITY_NOT_WORK_CITY», «OBS_60_CNT_SOCIAL_CIRCLE», «LIVE_REGION_NOT_WORK_REGION» — это функции, которые были удалены после обнаружения корреляции между функциями.

11. Теперь к функциям применяется метод фильтрации с использованием ANOVA, и сохраняется только 90% функций.

12. После выполнения вышеупомянутых шагов наш набор данных теперь уменьшен до 252137 строк с 33 функциями.

13. Процент кредитов наличными, на которые не были наложены санкции, немного превышает процент кредитов наличными, на которые были наложены санкции. Однако процент возобновляемых кредитов, на которые не были наложены санкции, меньше, чем процент кредитов наличными, на которые были наложены санкции.

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

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

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

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

18. Всем заявителям, находящимся в декретном отпуске, отказано в выдаче кредита, и все кандидаты, которые являются студентами, получили кредит.

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

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

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

22. Заявки, которые были отклонены и одобрены, были поданы в основном во вторник и меньше всего в воскресенье.

23. Заявители с типом организации «Тип хозяйственной деятельности 3» больше всего подвергались санкциям, а также были отклонены. Кроме того, нельзя сделать вывод, анализируя только эту функцию, поскольку оба распределения схожи в разных категориях.

24. При анализе распределения количества детей как для случаев, когда кредиты были одобрены, так и отклонены, Q1, Q2, Q3 и IQR почти одинаковы, но количество выбросов велико в случае заявителей, чьи кредиты предоставлены затем те, которые были отвергнуты.

25. Заявители с более низким доходом имеют более высокую вероятность отказа в выдаче кредита, и аналогичным образом заявители с более высоким доходом имеют более высокую вероятность одобрения кредита.

26. На основе AMT_CREDIT_RANGE нельзя сделать никаких выводов, так как проценты более или менее одинаковы в различных диапазонах его значений.

27. Значение REGION_POPULATION_RELATIVE в случае одобрения и отклонения кредитов имеет пик около 0,02. Ближе к концу распределения количество одобренных кредитов резко упало, в то время как в случае отклоненных кредитов оно сократилось.

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

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

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

31. Заявители, у которых в файлах указан неверный город проживания или работы, были отклонены в заявках на получение кредита.

32. Кредиты наличными с высокими значениями AMT_INCOME_TOTAL и AMT_CREDIT имеют более высокие шансы на одобрение, чем возобновляемые кредиты, а также возобновляемые кредиты с высокими значениями AMT_INCOME_TOTAL и AMT_CREDIT имеют меньшие шансы на отказ, чем кредиты наличными.

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

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

35. Кандидаты с учеными степенями всегда получали одобрение на получение кредита, несмотря на то, что в их заявлении был указан неверный регион проживания.

36. Кандидаты, которые принадлежат к «Группе людей» и «Другому B» под NAME_TYPE_SUITE, были одобрены, несмотря на то, что в их заявке указан неверный регион проживания.

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

Кодирование категориальных переменных

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

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

Например, если у нас есть ЦВЕТ как функция, которая имеет три уникальных значения в данных, то мы не должны просто присваивать числовое значение каждому из цветов, что создает ранг среди цветов, и, следовательно, существует смещение/веса между цветами, которые у нас нет его в реальных данных.

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

Стандартизация числовых признаков

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

Переменная в диапазоне от 0 до 1000, например, будет доминировать над переменной в диапазоне от 0 до 1. Когда эти переменные используются без стандартизации, переменная с наибольшим диапазоном 1000 будет перевешивать другие переменные, но когда изменение видно в процентах изменение может быть сопоставимым, и, следовательно, нам необходимо нормализовать данные, поскольку признаки могут варьироваться в одном и том же диапазоне значений, и скорость изменения, таким образом, сопоставима друг с другом. Типичные процессы нормализации данных уравновешивают диапазон и / или изменчивость данных, а нормализация приводит к тому, что все функции находятся в диапазоне от -1 до 1. Формула для получения стандартизированных значений функций приведена ниже.

Здесь среднее (x) и стандартное отклонение (x) — это среднее значение и стандартное отклонение определенного признака. И x представляет значение признака для конкретной точки данных, а x-stand — это значение стандартного отклонения, полученное для этой точки данных.

Примечание:

1) Стандартизация числовых признаков не зависит от одного признака по отношению к другому, и ее следует проводить специально для признака при расчете среднего значения и стандартного отклонения.

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

Выборка

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

На высоком уровне существует два типа методов выборки, которые перечислены ниже.

1) Под выборкой

2) Избыточная выборка

1) При выборке:

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

2) Избыточная выборка:

В этом типе выборки мы синтетически добавляем точки данных к наименее доминирующему классу точек, чтобы соответствовать количеству точек данных доминирующего класса, чтобы оба класса имели одинаковое количество точек данных. Например, если наша проблема представляет собой задачу бинарной классификации с двумя классами A и B. Если A является тем, который доминирует над B, то с помощью метода избыточной выборки мы синтетически добавляем точки данных в класс B, чтобы соответствовать количеству баллы класса А.

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

Ниже приведены некоторые из методов передискретизации, которые использовались в этом проекте.

1) Случайная избыточная выборка

2) АДАСИН (адаптивный синтетический)

3) Метод передискретизации синтетического меньшинства (SMOTE)

1) Случайная избыточная выборка:

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

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

2) ADAYSN (адаптивный синтетический алгоритм):

ADASYN (Adaptive Synthetic) — это алгоритм, который генерирует синтетические данные для классов меньшинств, используя данные самих данных класса меньшинств. Самым большим преимуществом является отсутствие копирования одних и тех же данных меньшинства и создание большего количества данных, что затрудняет обучение модели машинного обучения. Этот алгоритм использует точки соседства для генерации синтетических данных.

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

3) SMOTE (Техника передискретизации синтетического меньшинства):

SMOTE начинает со случайного выбора экземпляра класса меньшинства, а затем определяет местонахождение его k ближайших соседей класса меньшинства. Затем синтетический экземпляр строится путем случайного выбора одного из k ближайших соседей b и соединения a и b в пространстве признаков для формирования линейного сегмента. Синтетические экземпляры создаются путем выпуклого объединения двух выбранных примеров a и b. Этот подход можно использовать для создания такого количества синтетических примеров, которое необходимо для класса меньшинства. В целом, эта стратегия концентрируется на пространстве функций для создания новых примеров путем интерполяции между близко расположенными экземплярами.

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

Модели машинного обучения

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

1) Классификатор ближайших соседей K

2) Логистическая регрессия

3) Классификатор дерева решений

4) Классификатор AdaBoost

1) Классификатор K ближайших соседей:

K-ближайшие соседи (KNN) — это метод обучения с учителем, который можно использовать для регрессии и классификации. Вычисляя расстояние между тестовыми данными и всеми точками обучения, KNN пытается предсказать правильный класс для тестовых данных. Алгоритм KNN выбирает количество K точек, наиболее близких к тестовым данным, и большинством голосов определяет метку класса для данных тестовых данных для задачи классификации. Когда дело доходит до регрессии, алгоритм вычисляет среднее или среднее значение K ближайших точек тестовых данных, полученных из данных поезда.

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

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

2) Логистическая регрессия:

Когда переменная ответа является категориальной, используется алгоритм классификации. Цель логистической регрессии — обнаружить связь между характеристиками и вероятностью определенного результата. Другими словами, модель логистической регрессии предсказывает P(Y=1) как функцию X.

Предположения логистической регрессии

· Бинарная логистическая регрессия требует, чтобы зависимая переменная была бинарной.

· Для бинарной регрессии уровень фактора 1 зависимой переменной должен представлять желаемый результат.

· Независимые переменные должны быть независимы друг от друга. То есть модель должна иметь небольшую мультиколлинеарность или вообще не иметь ее.

· Независимые переменные линейно связаны с логарифмическими шансами.

· Логистическая регрессия требует довольно больших размеров выборки.

3) Классификатор дерева решений:

Алгоритм контролируемого машинного обучения под названием «Дерево решений» использует набор принципов для вынесения суждений, очень похожих на то, как это делают люди. Деревья решений иногда называют алгоритмами CART: деревьями классификации и регрессии, поскольку они способны решать задачи как классификации, так и регрессии. Эта фраза служит всеобъемлющим описанием любых древовидных алгоритмов, а не просто деревьев решений.

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

С помощью этого метода вы структурируете данные в виде древовидной структуры.

Когда вы задаете вопрос, вы добавляете узел в дерево. Первый узел известен как корневой узел.

Ответ на запрос разделяет набор данных и создает новые узлы на основе значения характеристики.

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

Когда вы отвечаете на вопрос, вы также строите ответвления и сегментируете пространство признаков на прерывистые участки.

Одна ветвь дерева содержит все точки данных, которые соответствуют ответу «Да» на запрос, предложенный правилом в предыдущем узле. Остальные точки данных представлены узлом на другой ветви.

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

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

Затем для каждого конечного узла назначьте класс каждой точке данных.

Наконец, алгоритм может назначить только один класс точкам данных каждого листового узла.

Об этом уже позаботились с чистыми листовыми узлами, потому что все точки данных в этом узле имеют один и тот же класс.

Однако этот метод назначает наиболее часто встречающийся класс среди всех точек данных в смешанном листовом узле.

Несмотря на то, что это базовый метод, деревья решений имеют ряд преимуществ:

Интерпретируемость. Дерево решений можно визуализировать.

Предварительная обработка не требуется; вам не нужно подготавливать данные перед созданием модели.

Надежность данных. Этот метод хорошо работает со всеми видами данных.

4) Классификатор AdaBoost:

AdaBoost — это ансамблевый подход к обучению (иногда известный как «метаобучение»), разработанный для повышения производительности бинарных классификаторов. AdaBoost использует итеративную стратегию для улучшения плохих классификаторов, учась на их ошибках.

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

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

1) Уменьшить дисперсию (бэггинг)

2) Уменьшить предвзятость (повышение)

3) Улучшить прогнозы (накопление)

Ансамблевые методы также подразделяются на два типа:

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

Параллельные учащиеся строят базовые модели параллельно. Это требует использования независимости модели за счет усреднения ошибок (например, случайный лес).

AdaBoost (Adaptive Boosting) — это хорошо известный подход к повышению, который объединяет множество слабых классификаторов для создания одного сильного классификатора. Один классификатор может быть не в состоянии надежно предсказать класс объекта, но, сгруппировав множество слабых классификаторов, каждый из которых постепенно учится на неправильно классифицированных элементах других, мы можем разработать одну такую ​​сильную модель. Указанный здесь классификатор может быть любым из ваших основных классификаторов, начиная от деревьев решений (которые часто используются по умолчанию) и заканчивая логистической регрессией и т. д.

Примечание. Слабый классификатор превосходит случайное угадывание, но, тем не менее, неэффективен при назначении классов объектам.

Результаты, полученные от моделей машинного обучения

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

1) Классификатор Ada Boost на сбалансированных данных, полученных с использованием методов ADASYN и SMOTE, дал оценку f1, равную 0,85.

2) Точность 0,89 была получена с помощью классификатора Ada Boost Classifier для данных случайной избыточной выборки, а также с помощью логистической регрессии для ADASYN и SMOTE.

3) Отзыв 0,85 был получен при использовании классификатора дерева решений при случайной избыточной выборке, а значение 0,84 при использовании AdaBoost при использовании ADASYN и SMOTE.

Для лучшей системы TPR и TNR должны быть высокими, а FNR и FPR — низкими. С точки зрения точности и полноты оба значения должны быть высокими для лучшей системы классификации.

Как упоминалось в отчете ранее, случайная выборка приводит к переоснащению модели, поэтому с точки зрения точности и полноты следует отдавать предпочтение данным ADASYN и SMOTE. Логистическая регрессия дала лучшую точность, а AdaBoost — лучший отзыв.

Стекированные модели машинного обучения

Как показано выше, нам нужно объединить прогностическую силу логистической регрессии и AdaBoost, чтобы получить лучший результат f1.

Перед этим нам нужно настроить гиперпараметры этих моделей.

Настройка гиперпараметров:

Для модели логистической регрессии следующие параметры настраиваются для получения наилучшей производительности на данных поезда — C и штраф.

1. Значения, полученные после настройки гиперпараметра для логистической регрессии на данных ADASYN, составляют {‘C’: 0,01, ‘штраф’: ‘l2’}

2. Значения, полученные после настройки гиперпараметра для логистической регрессии на данных SMOTE, составляют {‘C’: 0,001, ‘штраф’: ‘l2’}

Для модели Ada-Boost следующий параметр настраивается для получения наилучшей производительности на данных поезда — n_estimators.

1. Значения, полученные после настройки гиперпараметра для Ada-Boost на данных ADASYN, составляют {‘n_estimators’:50}

2. Значения, полученные после настройки гиперпараметра для Ada-Boost на данных SMOTE,

{'n_оценщиков':50}

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

Как видно выше, для данных ADASYN и SMOTE модель логистической регрессии дала лучшее значение точности.

тогда как модель AdaBoost дала лучшее значение отзыва.

Как видно выше, для данных ADASYN и SMOTE модель логистической регрессии дала лучшее значение точности.

тогда как модель Ada Boost дала лучшее значение отзыва.

Теперь давайте воспользуемся Stacking, чтобы объединить преимущества Precision и Recall.

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

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

На приведенной выше блок-схеме показано, что выходные данные классификатора логистической регрессии и классификатора AdaBoost

которые обучены на синтезированном наборе данных SMOTE, подаются в качестве входных данных для различных классификаторов стека, а именно

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

классификаторы сравниваются друг с другом.

Модель логистической регрессии как классификатор стекирования как в наборах данных ADASYN, так и в SMOTE дала

лучшие значения Precision и Recall по сравнению с другими классификаторами стекирования.

Теперь давайте создадим простую модель многослойного персептрона, обучим ее по отдельности на ADASYN и SMOTE.

данные и сравнить производительность с производительностью, полученной после суммирования.

Многослойный персептрон

Область искусственных нейронных сетей часто называют просто нейронными сетями или многоуровневыми сетями.

персептроны после самого производительного вида нейронной сети. Персептрон — это модель одного нейрона,

послужили основой для более крупных нейронных сетей.

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

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

цель состоит не в том, чтобы создать точные модели мозга, а в том, чтобы установить надежные алгоритмы и структуры данных, которые

может использоваться для моделирования сложных проблем.

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

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

это чувство. Они математически способны изучать любую картографическую функцию, и было продемонстрировано, что они

быть универсальным приближенным методом.

Иерархическая или многоуровневая структура нейронных сетей способствует их прогностическому потенциалу.

Структура данных может распознавать (научаться представлять) характеристики различных размеров и разрешений.

комбинируйте их, чтобы сформировать объекты более высокого порядка, такие как линии, наборы линий и формы.

MLP на данных ADASYN:

Скорость обучения = 0,001

Импульс = 0,9

Активация = тан

Решатель = sgd (Стохастический градиентный спуск)

1) Полученная оценка F1 равна 0,81

2) Полученная точность 0,87

3) Полученный отзыв равен 0,76

MLP на данных SMOTE:

Скорость обучения = 0,001

Импульс = 0,9

Активация = тан

Решатель = sgd (Стохастический градиентный спуск)

1) Полученный балл F1 равен 0,79

2) Полученная точность 0,88

3) Полученный отзыв равен 0,74

Результаты, полученные с помощью Stacking и MLP

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

Для лучшей системы TPR и TNR должны быть высокими, а FNR и FPR — низкими. С точки зрения точности и полноты оба значения должны быть высокими для лучшей системы классификации.

Следовательно, из результатов, которые мы получили с помощью расширенного моделирования на этом этапе, модель классификатора логистической регрессии, которая была сложена на моделях логистической регрессии и AdaBoost и обучена на данных ADASYN и SMOTE, имеет лучшие значения точности и полноты, 0,87 и 0,84. соответственно, что дает оценку f1 0,85, что лучше, чем у любой другой модели.

Однако при сравнении количества ошибок, допущенных классификатором суммирования в данных ADASYN и SMOTE, количество ошибок в случае ADASYN больше, чем в случае SMOTE.

Следовательно, из двух моделей классификатор стека, обученный на SMOTE, будет развернут для производства.

Развертывание и производство

Стабильный классификатор, обученный на данных SMOTE

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

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

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

Streamlit для веб-приложений

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

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

На изображении ниже показано то, что я обсуждал в предыдущем абзаце, есть переключатель, который можно использовать для переключения между загрузкой файла и ручным вводом данных. По умолчанию опция «Все сразу (загрузка файлов)» включена. Когда выбран этот конкретный параметр, пользователь может просматривать и загружать либо файлы csv, либо файлы excel для прогнозирования. Если пользователь загружает любой другой файл, кроме файла csv и excel, то пользователь будет уведомлен об этом.

На приведенном выше изображении показано то, что я обсуждал в предыдущем абзаце, есть переключатель, который можно использовать для переключения между загрузкой файла и ручным вводом данных. По умолчанию опция «Все сразу (загрузка файла)» включена. Когда выбран этот конкретный параметр, пользователь может просматривать и загружать либо файлы csv, либо файлы excel для прогнозирования. Если пользователь загружает любой другой файл, кроме файлов csv и excel, то пользователь будет уведомлен об этом, показывая, что только csv, xls и xlsx являются приемлемыми форматами для загрузки файлов.

Теперь, если пользователь загружает файл в правильном формате, пользователь сначала будет уведомлен о данных, присутствующих в загруженном файле, путем предоставления информации о количестве имеющихся записей, а также о количестве столбцов, которыми обладает каждая запись. Чтобы протестировать свое приложение, я решил загрузить CSV-файл, названный в честь «app_data.csv».

Как только файл загружается, раздел Информация о загруженных данных заполняется вместе с разделом Результаты готовы к загрузке. Теперь, чтобы увидеть прогнозируемые результаты, пользователь должен нажать «Загрузить результаты».

Файл csv будет загружен, и файл будет назван после Predictions_timestamp, когда файл будет загружен.

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

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

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

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

Columns_list — это список функций, которые необходимо передать нашей модели, чтобы сделать прогноз.

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

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

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

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

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

Шаги, необходимые для создания вывода после чтения ввода из формы, обсуждаются ниже.

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

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

Весь код написан на Python с использованием PyCharm IDE.

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

https://github.com/vineeth-balusani/bank-loan-application

Heroku для развертывания

Разработанное веб-приложение может быть доступно пользователям либо локально через систему, в которой размещено приложение, либо через другие системы, которые совместно используют ту же сеть, что и система, в которой размещено приложение. Но в реальном мире пользователь должен иметь возможность удаленного доступа к приложению, даже если он не подключен к одной сети. Для этой цели нам потребуется развернуть и разместить веб-приложение в облаке, и пользователь должен иметь доступ к нему, используя IP-адрес и порт, на котором работает веб-приложение. Хотя существует несколько облачных провайдеров, таких как AWS, Azure, GCP и т. д., я предпочел использовать облако Heroku в качестве PaaS для размещения потокового приложения, поскольку мне не требовалось предоставлять какую-либо информацию о кредитной карте.

После того, как мы вошли на веб-сайт Heroku, на панели инструментов нам нужно нажать «Создать новое приложение».

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

Теперь, чтобы впервые инициализировать развертывание, нам нужно щелкнуть «Развернуть ветку» в разделе «Развертывание вручную», выбрав ветку, которую мы хотим развернуть, в раскрывающемся списке.

Если развертывание прошло успешно, мы сможем увидеть кнопку «Открыть приложение» в правом верхнем углу экрана.

Как только мы нажмем кнопку «Открыть приложение», мы сможем увидеть веб-приложение, которое было развернуто в облаке Heroku и которое доступно всем, у кого есть доступная ссылка.

Ссылка на веб-приложение —

https://bank-loan-application-predict.herokuapp.com/

Чтобы облегчить это развертывание, нам нужно иметь два дополнительных файла, которые

  1. Procfile — состоит из команд, которые необходимо выполнить после создания Dynos в облаке Heroku. Содержимое procfile появится на вкладке «Ресурсы», как показано ниже.

2. требования.txt

Этот файл состоит из всех зависимостей, необходимых для успешного запуска Python.

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

Терминал — «заморозка пипсов ›требования.txt»

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

чтобы предоставить данные моей кредитной карты, я использовал Heroku для развертывания приложения.

Блок-схема

Блок-схема всего процесса доступна ниже.

Будущая сфера

Сейчас у нас нет новых обучающих данных, поэтому нам не нужно создавать какие-то пайплайны для переобучения моделей. Однако в будущем, если потребуется собрать новые данные, мы можем добиться этого, создав конвейеры для сбора данных, очистки данных, предварительной обработки данных и переобучения модели на этих предварительно обработанных данных с помощью Airflow. Мы также можем создать API-интерфейсы Flask, в которых будет написан код для этих действий, который будет выполняться при обращении к API с определенным запросом. Эти же API могут периодически запускаться группами DAG Airflow, как указано в планировщике DAG.

Ссылки

1) Наик, К., 2022. Прогнозирование кредитного риска для необеспеченного кредитования: подход машинного обучения. [онлайн] arXiv.org. Доступно по адресу: ‹ https://arxiv.org/abs/2110.02206 › [По состоянию на 21 июня 2022 г.].

2) Гупта, Аншика и др. Система прогнозирования банковских кредитов с использованием машинного обучения. 2020 г. 9-я Международная конференция Системное моделирование и развитие исследовательских тенденций (SMART), 2020 г., стр. 423–26. IEEE Xplore, https://doi.org/10.1109/SMART50582.2020.9336801.

3) Данные заявки на банковский кредит. https://www.kaggle.com/bhargavrk/bank-loan-application-data, по состоянию на 21 июня 2022 г.

4) Фенджиро, Юссеф. Машинное обучение для банковского дела: пример использования одобрения кредита. Medium, 7 сентября 2018 г., https://medium.com/@fenjiro/data-mining-for-banking-loan-approval-use-case-e7c2bc3ece3

5) Исследовательский анализ данных. https://www.stat.cmu.edu/~hseltman/309/Book/chapter4.pdf, по состоянию на 12 июля 2022 г.

6) МакКомб, Мэдлин. Введение в методы выбора функций для науки о данных. Medium, 7 июня 2019 г., https://towardsdatascience.com/intro-to-feature-selection-methods-for-data-science-4cae2178a00a.

7) Работа с пропущенными значениями в Python. Analytics Vidhya, 19 мая 2021 г., https://www.analyticsvidhya.com/blog/2021/05/dealing-with-missing-values-in-python-a-complete-guide/.

8) Применение методов фильтрации в Python для выбора функций. https://stackabuse.com/applying-filter-methods-in-python-for-feature-selection/

9) Типы корреляции. https://study.com/academy/lesson/correlation-definition-analysis-examples.html

10) Полное руководство по кодированию категориальных данных. https://analyticsindiamag.com/a-complete-guide-to-categorical-data-encoding/#:~:text=Encoding%20categorical%20data%20is%20a, при условии%20to%20%20различных%20моделей.&text =В%20%20поле%20%20данных подготовка%20является%20%20обязательным%20задачей. По состоянию на 30 июля 2022 г.

11) Как, когда и почему вы должны нормализовать/стандартизировать/масштабировать свои данные? https://towardsai.net/p/data-science/how-when-and-why-should-you-normalize-standardize-rescale-your-data-3f083def38ff#:~:text=Normalization%3A,когда% 20функций%20имеют%20различные%20диапазоны. По состоянию на 30 июля 2022 г.

12) Преобразование данных: стандартизация и нормализация https://www.kdnuggets.com/2020/04/data-transformation-standardization-normalization.html. По состоянию на 30 июля 2022 г.

13) Передискретизация и недостаточная выборка https://towardsdatascience.com/oversampling-and-undersampling-5e2bbaf56dcf. По состоянию на 30 июля 2022 г.

14) Исправление несбалансированных наборов данных: введение в ADASYN https://medium.com/@ruinian/an-introduction-to-adasyn-with-code-1383a5ece7aa#:~:text=ADASYN%20(Adaptive%20Synthetic)% 20is%20an,%E2%80%9Charder%20to%20learn%E2%80%9D%20examples. По состоянию на 30 июля 2022 г.

15) SMOTE для имбалансной классификации с Python https://machinelearningmastery.com/smote-oversampling-for-imbalanced-classification/, по состоянию на 30 июля 2022 г.

16) K-ближайший сосед https://medium.com/swlh/k-nearest-neighbor-ca2593d7a3c4, по состоянию на 30 июля 2022 г.

17) Проклятие размерности: проклятие, с которым должны иметь дело все инженеры МО -deal-with-5d459d39dc8a#:~:text=In%20High%20Dimensions%2C%20Euclidean%20Distance, is%20Overfitting%20of%20data%20points.» По состоянию на 30 июля 2022 г.

18) Упрощенная логистическая регрессия https://medium.com/data-science-group-iitr/logistic-regression-simplified-9b4efe801389. По состоянию на 31 июля 2022 г. По состоянию на 31 июля 2022 г.

19) Построение логистической регрессии в Python, шаг за шагом https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8, по состоянию на 31 июля 2022 г.

20) Классификатор дерева решений объясняется в реальной жизни https://towardsdatascience.com/decision-tree-classifier-explained-in-real-life-picking-a-vacation-destination-6226b2b60575. По состоянию на 31 июля 2022 г.

21) A Guide to AdaBoost: Boosting to Save the Day https://blog.paperspace.com/adaboost-optimizer/, по состоянию на 31 июля 2022 г.

22) Матрица путаницы (TPR,FPR,FNR,TNR), точность, отзыв, F1-Score https://medium.datadriveninvestor.com/confusion-matric-tpr-fpr-fnr-tnr-precision-recall-f1- счет-73efa162a25f. По состоянию на 31 июля 2022 г.

23) Stacking Classifiers for High Predictive Performance https://towardsdatascience.com/stacking-classifiers-for-higher-predictive-performance-566f963e4840, по состоянию на 14 августа 2022 г.

24) Браунли, Джейсон. Ускоренный курс по многоуровневым нейронным сетям персептрона. Мастерство машинного обучения, 16 мая 2016 г., https://machinelearningmastery.com/neural-networks-crash-course/

25) Бенто, Каролина. Многослойный персептрон, объясненный на примере из реальной жизни и кода Python: анализ настроений. Medium, 30 сентября 2021 г., https://towardsdatascience.com/multilayer-perceptron-explained-with-a-real-life-example-and-python-code-sentiment-analysis-cb408ee93141

26) 1.17. Модели нейронных сетей (под наблюдением). Scikit-Learn, https://scikit-learn/stable/modules/neural_networks_supervised.html. По состоянию на 14 августа 2022 г.

Приложение

1) URL-адрес репозитория GitHub — https://github.com/vineeth-balusani/bank-loan-application

2) Веб-приложение на основе Streamlit, развернутое в облаке Heroku —

https://bank-loan-application-predict.herokuapp.com/