Это часть 2 раздела "Прогнозирование одобрения ипотечного кредита". Здесь можно сделать ссылку на часть 1.

Описание модели машинного обучения в Azure Machine Learning Studio.

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

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

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

Обращение с переменным кредитором

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

Как только эти значения будут рассчитаны, мы сгруппируем кредиторов в диапазонах 0-20% коэффициента приемлемости, 21-40%, ... Таким образом, мы уменьшаем количество категорий переменной только до 5 или 6 значений. а также предоставить некоторую полезную информацию о возможности кредитора предоставить кредит.

Работа с переменными местоположения

Имеются в виду переменные state, county и msa md (столичный статистический район или агломерация), все они определяют местонахождение заявителя. Для всех этих функций количество значений очень велико. У нас также есть много записей, где одна или несколько из этих переменных принимают значение -1, что указывает на то, что ее фактическое значение неизвестно или не зарегистрировано, то есть они являются пропущенными значениями.

Мы также можем сказать, что:

  • Для поля состояния у нас есть значения от 0 до 52, но значение 51 отсутствует. Это может привести нас к мысли, что значение -1 в этой переменной на самом деле является значением 51.
  • Для поля msa_md происходит то же самое, у нас есть значения от 0 до 408, но нет записи со значением 338, опять же это может быть реальное значение записей, принимающих значение -1.
  • В случае округа у нас есть несколько значений, которые никогда не появляются 85, ... поэтому вы не можете сделать упрощение, подобное упомянутому в предыдущих полях.

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

Работа с выбросами, ошибками данных и отсутствующими значениями

Опять же, у нас есть нулевые значения в нескольких числовых переменных в данных, и это может снизить производительность модели, которую мы собираемся разработать. Есть около 70 000-80 000 записей с пропущенными значениями, а также они появляются одновременно в нескольких переменных одновременно. Чтобы подойти к этой проблеме, мы попробуем заполнить нулевые значения этих переменных, ища значение, которое может ему соответствовать, на основе других переменных того же реестра:

  • Доход заявителя: мы возьмем медианное значение записей, принадлежащих к тому же штату, округу, msa_md, расе, этнической принадлежности и полу, что и запись с нулевым значением. Если он не существует, мы будем искать это среднее значение на основе штата, округа, msa md, расы и этнической принадлежности и так далее. Наконец, если медианного значения не существует, мы возьмем среднее значение этой переменной для состояния записи.
  • Процент населения меньшинства: в этом случае, когда будет найдена запись с нулевым значением, мы будем искать медианное значение для записей того же штата, округа или msa_md. Если оно не существует, будет найдено медианное значение того же штата. и округ или, наконец, для записей того же штата.
  • Для остальных переменных будет использоваться подход, используемый в переменной % населения меньшинства.

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

  • Те записи, которые имеют значения выше перцептиля 98, будут удалены из тренировочного процесса.
  • Те записи со значениями выше IQR * 1,5 будут заменены предельным значением, определенным IQR * 1,5.

Построение нашей прогностической модели

Чтобы построить нашу модель, мы будем использовать облачный инструмент Azure Machine Learning Studio и некоторые сценарии Python для применения преобразований и манипуляций с данными. И мы будем делать это в группе этапов: Подготовка данных для обучения, прогнозный дизайн модели для обучения, подготовка тестовых данных и оценка модели на тестовых данных.

Подготовка данных

На этом этапе мы разрабатываем и экспериментируем с Azure ML, в котором каждый столбец данных преобразуется на основе ранее определенных преобразований:

  • преобразование переменной кредитора в уровень коэффициента приемлемости
  • заполнение пропущенных значений для числовых переменных

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

Построение нашей модели

Наш следующий эксперимент получит преобразованный набор данных для обучения и применит алгоритм классификации двух классов, чтобы получить модель для оценки тестовых данных. Наконец, мы попробовали основной алгоритм классификации: логистическую регрессию, деревья решений (и варианты) и нейронную сеть. Мы оценили каждый алгоритм с одинаковыми данными и кратными параметрами, и нашим лучшим вариантом был алгоритм Boosted Decision Tree.

Мы выполнили следующие шаги:

  • Отсечение значений выше некоторого порога или процентиля для обработки выбросов
  • Удалить некоторые записи с отсутствующими значениями
  • Нормализация Zscore для некоторых переменных (сумма_кредита, доход_заявителя, средний_доход_семьи и население)
  • Минмаксная нормализация для minority_population_pct и tract_to_msa_md_income_pct)
  • Создайте категориальные переменные для кредита_назначения, уровня, кандидата_расы и т. д.
  • Выбор столбцов для использования в процессе обучения
  • Разделение набора данных на обучающий набор и тестовый набор: 75%-25%
  • Обучите усиленное дерево решений
  • Ставьте баллы и оценивайте результаты

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

Результатами обучения стали:

Подготовка тестовых данных

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

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

Оценка модели на тестовом наборе данных

Наконец, мы можем применить нашу модель к тестовым данным и оценить каждую запись как принятую или непринятую. Этот эксперимент:

Выводы

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