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

Но есть и другие основные цели:

  1. Максимизируйте прибыль на пользователя (от процентной ставки по кредиту)
  2. Улучшение управления долгом
  3. Оценка мошенничества и истощения
  4. Повышение эффективности маркетинговой кампании

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

В 2020 году мировой кредитный рынок достиг 100 миллиардов долларов, и ожидается, что в 2021 году он вырастет на 3%. Следовательно, будет еще больше данных о клиентах, которые можно использовать для улучшения модели кредитного скоринга.

Логистическая регрессия - это статистический метод прогнозирования двоичных значений (Истина / Ложь, Доброкачественность / Злокачественность и т. Д.). Проще говоря, логистическая регрессия - это комбинация линейной регрессии и сигмовидной функции (формула представлена ​​на графике выше).

Давайте кратко определим, что означает каждый метод, прежде чем переходить к коду:

  1. Линейная регрессия

Yi: целевая переменная (зависимая переменная), здесь значение Y вычисляется на основе значения Xi (независимая переменная).

β0: константа (пересечение). Здесь линия пересекает ось Y, когда X = 0.

βi: наклон / коэффициент, крутизна линии на графике.

Xi: независимая переменная, значение переменной не зависит от других переменных.

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

2. Сигмовидная функция.

S (x): символ сигмовидной функции

e: число Эйлера

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

Тогда как приведенные выше формулы соотносятся друг с другом в логистической регрессии?

Предположим, что p - это вероятность, следовательно, p / (1-p) - это вероятность . И, допустим, предикторная переменная имеет линейную связь с логарифмическими коэффициентами (Logit).

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

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

Вышеупомянутое является лишь кратким объяснением логистической регрессии, я рекомендую дополнительно изучить модель в Википедии (https://en.wikipedia.org/wiki/Logistic_regression), если вы хотите больше узнать о модели.

Теперь перейдем к основной теме о методе создания модели кредитного скоринга в R.

  1. Импорт библиотеки и наборов данных
#import library and load dataset
library(dplyr)
library(tidyr)
library(ggplot2)
library(knitr)
library(mice)
library(lattice)
library(reshape2)
library(DataExplorer)
#Data Wrangling
df <- read.csv("UCI_Credit_Card.csv")
colnames(df)

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

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

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

#Check Missing Values
sapply(df, function(x){sum(is.na(x))})
#Check Unidentified Unique Values in categorical columns
count(df, vars=SEX)
count(df, vars=EDUCATION)
count(df, vars=MARRIAGE)
df[df$EDUCATION==0,4] <- 4
df[df$EDUCATION==5,4] <- 4
df[df$EDUCATION==6,4] <- 4
df$MARRIAGE[df$MARRIAGE==0] <- 3
df[,1:25] <- sapply(df[,1:25], as.numeric)
str(df)
summary(df)

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

В результате есть несколько уникальных значений в «ОБРАЗОВАНИИ» и «БРАК», которые необходимо изменить.

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

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

plot_correlation(df)

«ID», «AGE», «BILL_AMT1», «BILL_AMT2», «BILL_AMT3», «BILL_AMT4», «BILL_AMT5», «BILL_AMT6» имеют слабую корреляцию с целевой переменной, и эти столбцы будут исключены из нашего обучения. модель.

3. Разработка функций, предварительная обработка и разработка моделей

#Feature Engineering and Pre-processing
df_sc <- df %>%
  select(-one_of("ID",'AGE','BILL_AMT1','BILL_AMT2','BILL_AMT3','BILL_AMT4','BILL_AMT5','BILL_AMT6'))
colnames(df_sc)
df_sc[,1:17] <- scale(df_sc[,1:17])
head(df_sc)
#create training and test data
df2 <- sort(sample(nrow(df_sc),nrow(df_sc)*.7))
train <- df_sc[df2,]
test <- df_sc[-df2,]
dim(train)
dim(test)
#model development
log.model <- glm(default_payment ~., data = train, family=binomial(link = "logit"))
summary(log.model)

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

4. Прогнозирование и проверка точности

#Prediction
log.predictions <- predict(log.model,test, type="response")
head(log.predictions,10)

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

log.predictions.rd <- ifelse(log.predictions > 0.5, 1, 0)
head(log.predictions.rd, 10)

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

accuracy <- table(log.predictions.rd, test[,17])
sum(diag(accuracy))/sum(accuracy)

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

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

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