Финансовые учреждения, такие как банки, используют кредитный рейтинг, чтобы определить, могут ли их пользователи выплатить задолженность, которую они понесли.
Но есть и другие основные цели:
- Максимизируйте прибыль на пользователя (от процентной ставки по кредиту)
- Улучшение управления долгом
- Оценка мошенничества и истощения
- Повышение эффективности маркетинговой кампании
Основная цель этой статьи - показать аудитории, как наука о данных используется в финансовой индустрии для создания простой модели кредитного скоринга с использованием логистической регрессии.
В 2020 году мировой кредитный рынок достиг 100 миллиардов долларов, и ожидается, что в 2021 году он вырастет на 3%. Следовательно, будет еще больше данных о клиентах, которые можно использовать для улучшения модели кредитного скоринга.
Логистическая регрессия - это статистический метод прогнозирования двоичных значений (Истина / Ложь, Доброкачественность / Злокачественность и т. Д.). Проще говоря, логистическая регрессия - это комбинация линейной регрессии и сигмовидной функции (формула представлена на графике выше).
Давайте кратко определим, что означает каждый метод, прежде чем переходить к коду:
- Линейная регрессия
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.
- Импорт библиотеки и наборов данных
#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, и не стесняйтесь обращаться ко мне или оставлять комментарии ниже!
Использованная литература :