Эта статья — часть моего последнего проекта Наностепень Data Scientist в Udacity!

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

Я думал несколько дней о том, какой проект я хотел бы сделать. Затем я взял лучшие потрясающие сверхсовременные технологии для организации работы. Бумага! \о/

Я выбрал набор данных от Kaggle, предоставленный Home Credit для конкурса.

Хоум Кредит

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

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

Хотя Home Credit в настоящее время использует различные статистические методы и методы машинного обучения, чтобы делать эти прогнозы, они бросают вызов Kagglers, чтобы помочь им раскрыть весь потенциал своих данных. Это гарантирует, что клиенты, способные погасить кредит, не будут отклонены, а кредиты будут предоставлены с основной суммой, сроком погашения и календарем погашения, которые позволят их клиентам добиться успеха.

Описание взято отсюда.

Стратегия

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

Вы можете увидеть описание каждого файла в моей Kaggle Notebook.

Набор данных содержит 122 характеристики по 307511 кредитам. Давайте посмотрим на несколько графиков основных характеристик этого набора данных.

Способность погасить или не погасить кредит — это то, что мы пытаемся предсказать. Обратите внимание, что у нас есть 92 % набора данных с TARGET:0 и только 8 % с TARGET:1.

Это проблема несбалансированного класса, и нам нужно решить ее при построении моделей.

Чтобы решить эту проблему, я разбил проект на 5 шагов.

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

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

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

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

Для оценки наших моделей мы будем использовать F1-Score и Kaggle’s Score. Эти оценки могут лучше работать с нашей проблемой несбалансированных классов.

Оценка Kaggle предоставляется, когда мы отправляем наши прогнозы для конкурса.

Понимание данных

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

Мне очень нравится использовать pandas-profiling для быстрого анализа наборов данных. Этот набор данных слишком велик, чтобы Kaggle Notebook мог запустить его за 83 часа.

Я запустил ProfileReport на AWS SageMaker с типом экземпляра: ml.m5.24xlarge, vCPU: 96, Mem (GiB): 384 ГБ.

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

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

СПС

Анализ основных компонентов (АПК) — это метод, используемый для выделения вариаций и выявления сильных закономерностей в наборе данных.

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

Соответствующие функции

Используя корреляцию Пирсона, мы можем проверить, какие функции важнее для понимания TARGET.

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

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

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

Я пробовал некоторые алгоритмы, которые могут работать с несбалансированными классами, потому что у нас есть 92% набора данных для TARGET:0 и только 8% набора данных для TARGET:1.

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

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

Мы видим, что наши результаты недостаточно хороши, используя LogisticRegression.

Мы получили 68,98% точности и 52,68% F1-Score (макро). :(

Случайный лес

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

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

Random Forest работает немногим лучше, чем LogisticRegression с базовыми параметрами.

LGBMКлассификатор

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

LGBMClassifier получил результаты, аналогичные Random Forest с базовыми параметрами.

Керас

Keras — это отличная библиотека для моделей глубокого обучения. Я использую последовательную модель от Keras для создания модели многослойного персептрона (MLP).

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

Мы получили 72,54% точности и 23,80% F1-Score (макро).

Уточнение

Мы получили лучшие результаты, используя Random Forest и LGBMClassifier, чем логистическую регрессию и Keras, затем я решил применить GridSearchCV, чтобы найти лучшие параметры для каждой из этих моделей.

Случайный лес

parameters = {
    "n_estimators": [10, 30, 50, 100],
    "criterion": ["gini", "entropy"],
    "max_depth": [10, 20, 30],
    "min_samples_leaf": [50, 100, 200]    
}

Мы получили 78,92% (улучшение 6,94%) точности и 57,65% (улучшение 3,46%) F1-Score (макро) с лучшим оценщиком.

LGBMКлассификатор

parameters = {
    "n_estimators": [100, 300, 500, 1000],
    "boosting_type": ["gbdt", "dart", "goss"],
    "max_depth": [10, 20, 30] 
}

Мы получили 81,14% (улучшение 9,66%) точности и 58,28% (улучшение 4,05%) F1-Score (макро).

Результаты

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

Оценка Kaggle для этого соревнования использует оценку ROC AUC.

Мы видим, что Random Forest работает лучше, чем LGBMClassifier в реальном мире. Это мой первый опыт работы с LGBMClassifier, но я всегда работаю с Random Forest для решения подобных задач. Я думаю, что мы можем попробовать больше параметров и лучшую подготовку данных, чтобы получить больше результатов с этим алгоритмом.

Улучшения

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

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

Вывод

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

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

Я рад создать это исследование, потому что я узнал больше о кредитном риске и навыках обработки данных, таких как TensorFlow и Keras. Я работал с новым алгоритмом, с которым раньше никогда не работал (LGBMClassifier).

Репозиторий на GitHub

Каггловская записная книжка

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