Реальный проект, ориентированный на клиента, с реальными данными о кредитах

· 1. Введение
· 2. Очистка данных и исследовательский анализ
· 3. Моделирование
3.1 Предварительная обработка
3.2 Выбор модели
3.3 Оптимизация модели
· 4. Выводы
· Ссылки
· Обо мне

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

1. Введение

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

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

2. Очистка данных и исследовательский анализ

Набор данных, предоставленный клиентом, состоит из 2981 записи о ссуде с 33 столбцами, включая сумму ссуды, процентную ставку, срок, дату рождения, пол, информацию о кредитной карте, кредитный рейтинг, цель ссуды, семейное положение, информацию о семье, доход, информацию о работе, и так далее. Столбец статуса показывает текущее состояние каждой записи ссуды, и есть 3 различных значения: Выполняется, Выплачено и Просрочено. График подсчета показан ниже на Рисунке 1, где в настоящее время обрабатываются 1210 ссуд, и на основании этих записей нельзя сделать никаких выводов, поэтому они удаляются из набора данных. С другой стороны, существует 1 124 погашенных кредита и 647 просроченных или непогашенных кредитов.

Набор данных представлен в виде файла Excel и красиво отформатирован в табличных формах. Однако в наборе данных действительно существует множество проблем, поэтому все равно потребуется тщательная очистка данных перед тем, как можно будет провести какой-либо анализ. Ниже приведены примеры различных методов очистки:

(1) Возможности перетаскивания: некоторые столбцы дублируются (например, «идентификатор статуса» и «статус»). Некоторые столбцы могут вызвать утечку информации (например, «сумма к оплате» с 0 или отрицательным числом означает, что ссуда погашена). В обоих случаях функции необходимо удалить.

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

(3) Устранение перекрытий: описательные столбцы содержат перекрывающиеся значения. Например, доходы «50 000–99 999» и «50 000–100 000» по существу одинаковы, поэтому их необходимо объединить для единообразия.

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

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

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

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

На тепловой карте легко найти сильно коррелированные признаки с помощью цветового кодирования: положительно коррелированные отношения показаны красным, а отрицательные - красным. Переменная состояния закодирована в метке (0 = рассчитано, 1 = просрочено), поэтому ее можно рассматривать как числовую. Легко обнаружить, что есть один невыполненный коэффициент со статусом (первая строка или первый столбец): -0,31 с «уровнем». Уровень - это переменная в наборе данных, которая определяет уровень знания своего клиента (KYC). Более высокое число означает больше знаний о клиенте, что означает, что клиент более надежен. Следовательно, логично, что с более высоким уровнем вероятность невыполнения клиентом ссуды будет ниже. Такой же вывод можно сделать из графика подсчета, показанного на Рисунке 3, где количество клиентов с уровнем 2 или 3 значительно ниже в «Просроченных», чем в «Расчетных».

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

Категориальные переменные не так удобно исследовать, как числовые характеристики, потому что не все категориальные переменные являются порядковыми: уровень (рисунок 3) является порядковым, а проверка самоидентификации (рисунок 4) - нет. Итак, для каждой категориальной переменной строится пара графиков подсчета, чтобы изучить их взаимосвязь со статусом ссуды. Некоторые отношения очень очевидны: клиенты с уровнем 2 или 3, или у которых успешно проверили селфи и удостоверение личности, с большей вероятностью выплатят ссуды. Однако есть много других категориальных особенностей, которые не столь очевидны, поэтому это была бы прекрасная возможность использовать модели машинного обучения, чтобы выявить внутренние закономерности и помочь нам делать прогнозы.

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

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

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

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

После масштабирования и кодирования функций общее количество функций увеличивается до 165, и остается 1735 записей, которые включают как погашенные, так и просроченные ссуды. Затем набор данных делится на обучающий (70%) и тестовый (30%) наборы. Из-за своего дисбаланса адаптивная синтетическая выборка (ADASYN) применяется для избыточной выборки класса меньшинства (просроченного) в учебном классе, чтобы достичь того же числа, что и класс большинства (установленный), чтобы устранить смещение во время обучения.

3.2 Выбор модели

В качестве кандидата в модель выбрано 6 алгоритмов классификации. K-ближайших соседей (KNN) - это непараметрический алгоритм, который делает прогнозы на основе меток ближайших обучающих экземпляров. Наивный байесовский классификатор - это вероятностный классификатор, который применяет теорему Байеса с строгими предположениями о независимости между функциями. И логистическая регрессия, и машина линейных опорных векторов (SVM) являются параметрическими алгоритмами, где первый моделирует вероятность попадания в любой из двоичных классов, а второй находит границу между классами. И Random Forest, и XGBoost представляют собой ансамблевые алгоритмы на основе деревьев, где первый применяет агрегирование начальной загрузки (пакетирование) как для записей, так и для переменных для построения нескольких деревьев решений, которые голосуют за прогнозы, а второй использует ускорение для непрерывного усиления, исправляя ошибки с помощью эффективных , распараллеленные алгоритмы.

Все 6 алгоритмов обычно используются в любой задаче классификации и являются хорошими представителями для охвата множества семейств классификаторов. Затем обучающий набор вводится в каждую из моделей с помощью 5-кратной перекрестной проверки, метода, который оценивает производительность модели беспристрастным образом с ограниченным размером выборки. Средняя точность каждой модели показана ниже в таблице 1:

Ясно, что все 6 моделей эффективны для прогнозирования невыполненных кредитов: все они превышают 0,5, базовый уровень, установленный на основе случайного предположения. Среди них Random Forest и XGBoost имеют самые выдающиеся показатели точности. Этот результат вполне ожидаем, учитывая тот факт, что Random Forest и XGBoost какое-то время были самыми популярными и мощными алгоритмами машинного обучения в сообществе специалистов по науке о данных. Следовательно, остальные 4 кандидата отбрасываются, и затем выполняется точная настройка только Random Forest и XGBoost с использованием метода поиска по сетке для поиска наиболее эффективных гиперпараметров. После тонкой настройки обе модели проходят испытания с тестовым комплектом. Точности составляют 0,7486 и 0,7313 соответственно. Значения немного ниже, потому что модели никогда раньше не видели тестовый набор, а тот факт, что точность близка к той, которая дается перекрестной проверкой, означает, что обе модели хорошо подходят.

3.3 Оптимизация модели

Несмотря на то, что найдены модели с наилучшей точностью, еще предстоит проделать дополнительную работу, чтобы оптимизировать модель для нашего приложения. Цель модели - помочь принять решения о выдаче ссуд для максимизации прибыли, так как же прибыль связана с производительностью модели? Чтобы ответить на этот вопрос, на Рисунке 5 ниже построены две матрицы неточностей.

Матрица неточностей - это инструмент, который визуализирует результаты классификации. В задачах двоичной классификации это матрица 2 на 2, в которой столбцы представляют предсказанные метки, заданные моделью, а строки представляют истинные метки. Например, на рисунке 5 (слева) модель случайного леса правильно предсказывает 268 погашенных кредитов и 122 невыплаченных кредита. Имеется 71 пропущенный дефолт (ошибка типа I) и пропущено 60 хороших ссуд (ошибка типа II). В нашем приложении количество пропущенных значений по умолчанию (внизу слева) должно быть минимизировано, чтобы избежать убытков, а количество правильно спрогнозированных погашенных ссуд (вверху слева) необходимо максимизировать, чтобы максимизировать заработанные проценты.

Некоторые модели машинного обучения, такие как Random Forest и XGBoost, классифицируют экземпляры на основе вычисленных вероятностей попадания в классы. В задачах двоичной классификации, если вероятность выше определенного порога (по умолчанию 0,5), то на экземпляр будет помещена метка класса. Порог регулируется, и он представляет собой уровень строгости при прогнозировании. Чем выше установлен порог, тем более консервативна модель для классификации экземпляров. Как видно на рисунке 6, когда порог увеличивается с 0,5 до 0,6, общее количество просроченных платежей, прогнозируемых моделью, увеличивается с 182 до 293, поэтому модель позволяет выдавать меньше кредитов. Это эффективно для снижения риска и экономии затрат, поскольку значительно уменьшило количество пропущенных дефолтов с 71 до 27, но, с другой стороны, оно также исключает более хорошие ссуды с 60 до 127, поэтому мы теряем возможность зарабатывать проценты.

Чтобы уравновесить компромисс между снижением дохода и снижением затрат, проблема оптимизации должна быть решена путем корректировки порогового значения и поиска оптимума. Если «Расчетный» определяется как положительный, а «Просроченный» - как отрицательный, то при использовании компоновки матрицы неточностей, представленной на рисунке 6, четыре области делятся на истинное положительное (TN), ложное положительное (FP), Ложноотрицательный (FN) и истинно отрицательный (TN). В соответствии с матрицами путаницы, приведенными на Рисунке 5, TP - это удачные ссуды, а FP - пропущенные дефолты. Нас больше интересуют эти два региона. Для нормализации значений определены два обычно используемых математических термина: истинно положительная скорость (TPR) и ложноположительная скорость (FPR). Их уравнения показаны ниже:

В этом приложении TPR - это процент успешных ссуд, и он представляет возможность зарабатывать деньги на процентах по ссуде; FPR - это отсутствующий показатель дефолта, и он представляет собой вероятность потери денег. Кривая эксплуатационных характеристик приемника (ROC) - это наиболее часто используемый график для визуализации характеристик модели классификации при всех пороговых значениях. На рисунке 7 слева нанесена ROC-кривая модели случайного леса. Этот график по существу показывает взаимосвязь между TPR и FPR, где один всегда идет в том же направлении, что и другой, от 0 до 1. В хорошей модели классификации всегда будет кривая ROC выше красной базовой линии, расположенная рядом с «случайным классификатором». . Площадь под кривой (AUC) также является показателем для оценки модели классификации помимо точности. AUC модели случайного леса составляет 0,82 из 1, что неплохо.

Несмотря на то, что кривая ROC четко показывает взаимосвязь между TPR и FPR, порог является неявной переменной. Задача оптимизации не может быть выполнена только с помощью кривой ROC. Поэтому вводится еще одно измерение для включения пороговой переменной, как показано на рисунке 7 справа. Поскольку оранжевый TPR представляет возможность зарабатывать деньги, а FPR представляет вероятность проигрыша, интуиция состоит в том, чтобы найти порог, который максимально увеличивает разрыв между кривыми. В этом случае золотая середина составляет около 0,7.

У этого подхода есть ограничения: FPR и TPR - это отношения. Несмотря на то, что они хорошо визуализируют влияние порога классификации на прогноз, мы по-прежнему не можем вывести точные значения прибыли, к которой приводят разные пороги. С другой стороны, подход FPR, TPR vs Threshold предполагает, что ссуды равны (сумма ссуды, причитающиеся проценты и т. Д.), Но на самом деле это не так. Люди, которые не выплачивают ссуду, могут иметь более высокую сумму ссуды и проценты, которые необходимо вернуть, и это добавляет неопределенности к результатам моделирования.

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

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

Тогда выручка является скалярным произведением трех векторов: процентов к уплате, маски (прогнозируемый, расчетный) и маски (истинный, расчетный). Стоимость - это скалярное произведение трех векторов: сумма ссуды, маска (прогноз, погашение) и маска (истинная, просроченная). Математические формулы можно выразить ниже:

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

Когда порог равен 0, модель достигает наиболее агрессивной настройки, когда ожидается, что все ссуды будут погашены. По сути, бизнес клиента работает без модели: набор данных состоит только из выданных ссуд. Понятно, что прибыль ниже -1 200, а это означает, что бизнес теряет деньги более чем на 1200 долларов на ссуду.

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

Чтобы найти оптимизированный порог для модели, необходимо определить максимальную прибыль. В обеих моделях можно найти золотые точки: модель Random Forest достигает максимальной прибыли 154,86 при пороге 0,71, а модель XGBoost достигает максимальной прибыли 158,95 при пороге 0,95. Обе модели способны превратить убытки в прибыль с увеличением почти на 1400 долларов на человека. Несмотря на то, что модель XGBoost увеличивает прибыль примерно на 4 доллара больше, чем модель случайного леса, ее кривая прибыли на пике более крутая. В модели случайного леса порог может быть отрегулирован от 0,55 до 1 для обеспечения прибыли, но модель XGBoost имеет диапазон только от 0,8 до 1. Кроме того, сглаженная форма в модели случайного леса обеспечивает устойчивость к любым колебаниям data и продлит ожидаемый срок службы модели до того, как потребуется какое-либо обновление модели. Поэтому модель случайного леса предлагается развернуть при пороге 0,71, чтобы максимизировать прибыль при относительно стабильной производительности.

4. Выводы

Этот проект представляет собой типичную задачу двоичной классификации, которая использует ссуду и личную информацию, чтобы предсказать, не погаснет ли клиент ссуду. Цель состоит в том, чтобы использовать модель в качестве инструмента для принятия решений о выдаче ссуд. Два классификатора построены с использованием Random Forest и XGBoost. Обе модели способны превратить убыток в прибыль более чем на 1400 долларов за ссуду. Модель случайного леса предпочтительнее развертывать из-за ее стабильной производительности и устойчивости к ошибкам.

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

В качестве кандидатов используются 6 общих моделей классификации, включая KNN, Gaussian Naïve Bayes, логистическую регрессию, Linear SVM, Random Forest и XGBoost. Они охватывают широкий спектр семейств алгоритмов, от непараметрических до вероятностных, параметрических и древовидных методов ансамбля. Среди них модель Random Forest и модель XGBoost дают наилучшую производительность: первая имеет точность 0,7486 на тестовом наборе, а вторая - 0,7313 после точной настройки.

Самая важная часть проекта - оптимизировать обученные модели для получения максимальной прибыли. Пороги классификации настраиваются для изменения «строгости» результатов прогноза: с более низкими порогами модель становится более агрессивной, что позволяет выдавать больше кредитов; при более высоких порогах он становится более консервативным и не будет выдавать ссуды, если нет высокой вероятности того, что ссуды могут быть возвращены. Используя формулу прибыли в качестве функции потерь, была определена взаимосвязь между прибылью и пороговым уровнем. Для обеих моделей существуют зоны наилучшего восприятия, которые могут помочь бизнесу превратиться из убытков в прибыль. Без модели убыток составляет более 1200 долларов на ссуду, но после внедрения моделей классификации бизнес может приносить прибыль в размере 154,86 и 158,95 долларов на клиента с помощью моделей Random Forest и XGBoost соответственно. Несмотря на то, что при использовании модели XGBoost достигается более высокая прибыль, модель случайного леса по-прежнему рекомендуется использовать в производственной среде, поскольку кривая прибыли более плоская около пика, что обеспечивает устойчивость к ошибкам и устойчивость к колебаниям. По этой причине, если будет выбрана модель случайного леса, потребуется меньше обслуживания и обновлений.

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

использованная литература

[1]: Decoding the Confusion Matrix, Towards Data Science, 2019: https://towardsdatascience.com/decoding-the-confusion-matrix-bb4801decbb

Обо мне

Я специалист по данным в Chapeau AI. Я использую технологии и каждый день осваиваю новые навыки. Вы можете связаться со мной из Medium Blog, LinkedIn или GitHub.

Пожалуйста, смотрите мои другие статьи: