В этом пошаговом руководстве я объяснил лучшие практики моделей машинного обучения, которые предсказывают тип кредита (кредитоспособный или не кредитоспособный).

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

Какие решения необходимо принять?

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

Какие данные необходимы для обоснования этих решений?

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

Целевой переменной является заявка на кредит.

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

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

Я сделал много процессов для очистки и форматирования набора данных.

Как быть с отсутствующими данными?

Код здесь не приводится, но я постараюсь показать вам результат отсутствующих данных и то, как вы можете справиться с отсутствующими данными. Как вы можете видеть в следующей таблице, есть две переменные, у которых отсутствуют значения. В Duration-in-current-address отсутствуют 344 (68,8%) и в Age-years отсутствуют 12 (2,4%) из 500 записей. Длительность в текущем адресе пропустила почти 69% наших данных, и, вероятно, наша модель не претерпит существенных изменений, если мы ее отбросим. Поэтому я удалил эту переменную из обучающего набора данных, потому что она больше не нужна в нашем прогнозе. Но, как вы можете видеть, в переменной Возраст-годы отсутствуют очень небольшие данные, поэтому мы можем вычислить их, сравнив среднее и медианное значения этой переменной.

Среднее и медианное значения переменной Возраст-годы составляют 35,64 и 33 соответственно. Поэтому я присвоил переменной «Возраст-годы» медианное значение, потому что среднее значение будет иметь выброс.

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

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

Построение графика корреляции числовых переменных

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

После очистки набора данных, работы с пропущенными значениями и обнаружения выбросов я нашел 13 переменных (12 переменных-предикторов и целевую переменную).

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

Обучение моделей классификации

Я разделил набор данных на 70% обучающего набора и 30% тестового набора.

Я собираюсь использовать следующие модели классификации.

  1. Логистическая регрессия
  2. Случайный лесной классификатор
  3. Классификатор дерева решений
  4. Классификатор повышения градиента

Использование логистической регрессии

Особенности важности логистической регрессии

В соответствии с приведенной выше диаграммой важности признаков я выбрал следующие переменные-предикторы, которые являются наиболее значимыми, где они имеют более высокие значения (что означает, что значение p ‹ 0,05).

Матрица путаницы логистической регрессии

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

. Истинный положительный результат (TP)

. Истинный отрицательный (TN)

. Ложное срабатывание (FP)

. Ложноотрицательный (FN)

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

Общая точность логистической регрессии по отношению к обучающему набору составляет 77%.

Согласно матрице путаницы логистической регрессии, модель слегка смещена в сторону прогнозирования некредитоспособности, что означает, что 100–47 = 53% прогнозируются неправильно.

Использование классификатора дерева решений

Я прошел тот же шаг с другими параметрами настройки. Я обнаружил, что Account-BalanceSsome balance, Duration-of-Credit-Month и Credit-Amont — это наиболее важные переменные, которые используются для классификации кредитоспособных или некредитоспособных с использованием модели классификатора дерева решений.

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

Таким образом, модель смещена в сторону предсказания, и модель неправильно предсказывает 66% некредитоспособных. В наборе данных проверки модель достигла точности 71%.

Использование классификатора случайного леса

В классификаторе случайного леса есть 500 деревьев с переменными, и каждая переменная проверяется при каждом разделении. Были определены наиболее важные функции, а именно Credit-Amount и Duration-of-Credit-Month.

Матрица путаницы классификатора случайного леса

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

Таким образом, по матрице путаницы, рассчитанной выше, модель предсказывает, что 84 % будут заслуживающими доверия, а 55 % — как незаслуживающими доверия. Общая точность модели составляет 79%.

Использование усиленной модели/классификатора повышения градиента

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

Матрица путаницы классификатора повышения градиента

Согласно матрице путаницы и отчету о классификации, модель немного смещена в сторону предсказания кредитоспособности, и 49% предсказано неправильно. Точность кредитоспособности составляет 81%, тогда как некредитоспособности — 51%, а процент точности — 71%.

Заключение

Чтобы придумать лучшую модель классификации, я прошел следующие этапы:

  1. Очистка, форматирование и смешивание набора данных вместе
  2. Работа с отсутствующими данными
  3. Выявление переменных с низкой изменчивостью и их удаление
  4. Выявление лучших предикторов
  5. Разделение данных на обучающие и проверочные наборы на основе 70 % обучающих и 30 % тестовых/проверочных критериев.
  6. Обучите модели классификации с параметрами настройки, чтобы улучшить производительность модели.
  7. Оцените производительность модели, используя точность, полноту и показатель f1.

Сравнение моделей с использованием ROC CURVE GRAPH

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

Следовательно, из приведенного выше ГРАФИКА КРИВОЙ ROC и Сравнительной таблицы наиболее эффективной моделью является модель классификатора случайного леса. Модель случайного леса достигла 80% AUC и 79% общей точности по сравнению с тремя другими моделями.

Затем, на основе наиболее эффективной модели (с использованием классификатора случайного леса), 418 отдельных кредитов были классифицированы как кредитоспособные, а 82 отдельных кредита - как некредитоспособные на основе новых данных оценки клиентов.

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

Вы можете найти исходный код этого проекта на GitHub

Спасибо за прочтение!!!