Применение логистической регрессии в кредитном скоринге
Заказать уникальную курсовую работу- 40 40 страниц
- 16 + 16 источников
- Добавлена 21.06.2023
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1.Кредитный скоринг и методы его оценки 4
1.1. Основные методы кредитного скоринга 4
1.2. Существующий опыт организаций, занимающихся кредитным скорингом 6
1.3. Логистическая регрессия 9
1.4. Информационные критерии качества моделей регрессии 12
2. Реализация моделей логистической регрессии 15
2.1. Описание датасета 15
2.2. Анализ датасета 16
2.3. Проработка гипотез 20
Заключение 24
Список литературы 25
Приложение
sum()# Label encoding...data.replace({'Loan_Status':{'N':0,'Y': 1}},inplace = True)data.head()data['Dependents'].value_counts()data.replace({'Dependents': {'3+':4}},inplace = True)data['Dependents'].value_counts()data.head()sns.countplot(data= data,x = 'Education',hue = 'Loan_Status')sns.countplot(data= data,x = 'Married',hue = 'Loan_Status')sns.countplot(data= data,x = 'Dependents',hue = 'Loan_Status')sns.countplot(data= data,x = 'Self_Employed',hue = 'Loan_Status')sns.countplot(data = data,x = 'Gender',hue = 'Loan_Status')sns.countplot(data= data,x = 'Property_Area',hue = 'Loan_Status')sns.countplot(data= data,x = 'Credit_History',hue = 'Loan_Status')data.replace({'Married':{'No':0,'Yes': 1}},inplace = True)data.head()data.replace({'Education':{'Not Graduate':0,'Graduate': 1}},inplace = True)data.replace({'Self_Employed':{'No':0,'Yes': 1}},inplace = True)data.replace({'Gender':{'Female':0,'Male': 1}},inplace = True)data.replace({'Property_Area':{'Rural':0,'Urban': 1,'Semiurban':2}},inplace = True)data.head()plt.figure(figsize=(15,6))sns.heatmap(data.corr(),annot = True)sns.countplot(data= data,x = 'Loan_Amount_Term',hue = 'Loan_Status')X = data.drop(columns = ['Loan_Status','Loan_ID'],axis =1)y = data['Loan_Status']from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)from sklearn.linear_model import LogisticRegressionlm = LogisticRegression()lm.fit(X_train,y_train)predictions = lm.predict(X_test)predictionsfrom sklearn.metrics import confusion_matrix,classification_report,accuracy_scoreprint(confusion_matrix(y_test,predictions))print(classification_report(y_test,predictions))accuracy_score(y_test,predictions)from sklearn.model_selection import train_test_splitX_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size = 0.20, random_state = 0)from sklearn.preprocessing import StandardScalersc = StandardScaler()X_train = sc.fit_transform(X_train)X_test = sc.transform(X_test)from sklearn.preprocessing import StandardScalersc = StandardScaler()X_train = sc.fit_transform(X_train)X_test = sc.transform(X_test)#Using Logistic Regression Algorithm to the Training Setfrom sklearn.linear_model import LogisticRegressionlog = LogisticRegression(random_state = 0)print(log.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', log.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, log.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, log.predict(X_test)))print(F'Precision:', precision_score(Y_test, log.predict(X_test)))print(F'Recall:', recall_score(Y_test, log.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, log.predict(X_test)))#Check Roc Auc Scoreprint( F'RocAuc Score:',roc_auc_score(Y_test, log.predict(X_test)) )print( F'Balanced Accuracy Score:',balanced_accuracy_score(Y_test, log.predict(X_test)) ) print( F'Confusion Matrix:',confusion_matrix(Y_test, log.predict(X_test)) )print()#Print a new line# ROC CURVE#plot_roc_curve(log, X_test, Y_test)#plt.title('ROC Curve')#plt.plot([0, 1], [0, 1], 'r--')#plt.show()#Using KNeighborsClassifier Method of neighbors class to use Nearest Neighbor algorithmfrom sklearn.neighbors import KNeighborsClassifierknn = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)print(knn.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', knn.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, knn.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, knn.predict(X_test)))print(F'Precision:', precision_score(Y_test, knn.predict(X_test)))print(F'Recall:', recall_score(Y_test, knn.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, knn.predict(X_test)))#Check Roc Auc Scoreprint( F'RocAuc Score:',roc_auc_score(Y_test, knn.predict(X_test)) )print( F'Balanced Accuracy Score:',balanced_accuracy_score(Y_test, knn.predict(X_test)) ) print( F'Confusion Matrix:',confusion_matrix(Y_test, knn.predict(X_test)) )print()#Print a new line#Using GaussianNB method of naïve_bayes class to use Naïve Bayes Algorithmfrom sklearn.naive_bayes import GaussianNBgauss = GaussianNB()print(gauss.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', gauss.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, gauss.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, gauss.predict(X_test)))print(F'Precision:', precision_score(Y_test, gauss.predict(X_test)))print(F'Recall:', recall_score(Y_test, gauss.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, gauss.predict(X_test)))#Check Roc Auc Scoreprint( F'RocAuc Score:',roc_auc_score(Y_test, gauss.predict(X_test)) )print( F'Balanced Accuracy Score:',balanced_accuracy_score(Y_test, gauss.predict(X_test)) ) print( F'Confusion Matrix:',confusion_matrix(Y_test, gauss.predict(X_test)) )print()#Print a new line#Using DecisionTreeClassifier of tree class to use Decision Tree Algorithmfrom sklearn.tree import DecisionTreeClassifiertree =DecisionTreeClassifier(criterion = 'entropy', random_state = 0)print(tree.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', tree.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, tree.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, tree.predict(X_test)))print(F'Precision:', precision_score(Y_test, tree.predict(X_test)))print(F'Recall:', recall_score(Y_test, tree.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, tree.predict(X_test)))#Check Roc Auc Scoreprint( F'RocAuc Score:',roc_auc_score(Y_test, tree.predict(X_test)) )print( F'Balanced Accuracy Score:',balanced_accuracy_score(Y_test, tree.predict(X_test)) ) print( F'Confusion Matrix:',confusion_matrix(Y_test, tree.predict(X_test)) )print()#Print a new line#Using RandomForestClassifier method of ensemble class to use Random Forest Classification algorithmfrom sklearn.ensemble import RandomForestClassifierforest = RandomForestClassifier(n_estimators = 10, criterion = 'entropy', random_state = 10)print(forest.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', forest.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, forest.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, forest.predict(X_test)))print(F'Precision:', precision_score(Y_test, forest.predict(X_test)))print(F'Recall:', recall_score(Y_test, forest.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, forest.predict(X_test)))#Using xgboostr method of ensemble class to use xgboostClassification algorithmimport xgboost as xgbx_gb= xgb.XGBClassifier(objective="binary:logistic", n_estimators=150, random_state=42, eval_metric=["auc", "error", "error@0.6"])print(x_gb.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', x_gb.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, x_gb.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, x_gb.predict(X_test)))print(F'Precision:', precision_score(Y_test, x_gb.predict(X_test)))print(F'Recall:', recall_score(Y_test, x_gb.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, x_gb.predict(X_test)))#Check Roc Auc Scoreprint( F'RocAuc Score:',roc_auc_score(Y_test, x_gb.predict(X_test)) )print( F'Balanced Accuracy Score:',balanced_accuracy_score(Y_test, x_gb.predict(X_test)) ) print( F'Confusion Matrix:',confusion_matrix(Y_test, x_gb.predict(X_test)) )print()#Print a new line!pip install catboost#Using CatBoostClassifier method of ensemble class to use CatBoostClassification algorithmfrom catboost import CatBoostClassifierCatBoost = CatBoostClassifier(iterations=500,random_state=42,learning_rate=0.1)print(CatBoost.fit(X_train, Y_train))print('[0]Logistic Regression Training Accuracy:', CatBoost.score(X_train, Y_train))#Check Accuracy precision, recall, f1-scoreprint( classification_report(Y_test, CatBoost.predict(X_test)) )#Another way to get the models accuracy on the test dataprint(F'Accuracy:',accuracy_score(Y_test, CatBoost.predict(X_test)))print(F'Precision:', precision_score(Y_test, CatBoost.predict(X_test)))print(F'Recall:', recall_score(Y_test, CatBoost.predict(X_test)))print(F'F1 Score:', f1_score(Y_test, CatBoost.predict(X_test)))#Check Roc Auc Scoreprint( F'RocAuc Score:',roc_auc_score(Y_test, CatBoost.predict(X_test)) )print( F'Balanced Accuracy Score:',balanced_accuracy_score(Y_test, CatBoost.predict(X_test)) ) print( F'Confusion Matrix:',confusion_matrix(Y_test, CatBoost.predict(X_test)) )print()#Print a new line#Accuracy Scoreacc_1 = 0.87 acc_2 = 0.93acc_3 = 0.86acc_4 = 0.95acc_5 = 0.96 acc_6 = 0.96acc_7 = 0.97results = pd.DataFrame([["Logistic Regression",acc_1],["K-Nearest Neighbor",acc_2],["GaussianNB",acc_3], ["DecisionTreeClassifier",acc_4],["RandomForestClassifie",acc_5], ["xgboost",acc_6],["CatBoostClassifiert",acc_7]], columns = ["Models","Accuracy Score"]).sort_values(by='Accuracy Score',ascending=False)results.style.background_gradient(cmap='Blues')data.columnsX = data.drop(columns = ['Loan_ID','Loan_Amount_Term', 'Loan_Status'],axis =1)y = data['Loan_Status']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)lm = LogisticRegression()lm.fit(X_train,y_train)predictions = lm.predict(X_test)accuracy_score(y_test,predictions)X = data.drop(columns = ['Loan_ID','Loan_Amount_Term', 'Loan_Status','Self_Employed'],axis =1)y = data['Loan_Status']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)lm = LogisticRegression()lm.fit(X_train,y_train)predictions = lm.predict(X_test)accuracy_score(y_test,predictions)X = data.drop(columns = ['Loan_ID','Loan_Amount_Term', 'Loan_Status','LoanAmount','Self_Employed', 'ApplicantIncome', 'CoapplicantIncome'],axis =1)y = data['Loan_Status']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)lm = LogisticRegression()lm.fit(X_train,y_train)predictions = lm.predict(X_test)accuracy_score(y_test,predictions)X = data.drop(columns = ['Loan_ID','Loan_Amount_Term', 'Loan_Status','LoanAmount','Self_Employed', 'ApplicantIncome', 'CoapplicantIncome', 'Gender'],axis =1)y = data['Loan_Status']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)lm = LogisticRegression()lm.fit(X_train,y_train)predictions = lm.predict(X_test)accuracy_score(y_test,predictions)
2. Алексеева, В. А, Калимуллина Р. И. Применение метода ближайших соседей при моделировании кредитных рисков / Вестник УлГТУ// ― 2014, ― URL: https://cyberleninka.ru/article/n/primenenie-metoda-blizhayshih-sosedey-pri-modelirovanii-kreditnyh-riskov (дата обращения: 09.04.2023).
3. Воронин, С. М, Совертека, З. К, Березин, А. Д, Ларин, А. И, Кредитный скоринг, реализованный с помощью машинного обучения / Столыпинский вестник// ― 2022, ― URL: https://cyberleninka.ru/article/n/kreditnyy-skoring-realizovannyy-s-pomoschyu-mashinnogo-obucheniya (дата обращения: 09.04.2023).
4. Гасанов, О. С., Таранов, Я. Р, Скоринг при управлении кредитными рисками / Вестник евразийской науки // ― 2016 ― URL: https://cyberlenikru/article/n/skoringpri-upravleniikreditnymiriskami (дата обращения: 09.04.2023).
5. Кадиев, А. Д, Чибисова, А. В Нейросетевые методы решения задачи кредитного скоринга / Математическое моделирование и численные методы // ― 2022, ― URL: https://cyberleninka.ru/article/n/neyrosetevye-metody-resheniya-zadachi-kreditnogo-skoringa (дата обращения: 09.04.2023).
6. Кочеткова В.В., Ефремова К.Д. Обзор методов кредитного скоринга / Juvenis scientia // ― 2017, ― URL: https://cyberleninka.ru/article/n/obzor-metodov-kreditnogo-skoringa (дата обращения: 09.04.2023).
7. Мельников А.А., Стельмаш Д.С., Ефимов С.Н. Разработка автоматизированной системы кредитного скоринга / Актуальные проблемы авиации и космонавтики// ― 2010, ― №6.
8. URL: https://cyberleninka.ru/article/n/razrabotka-avtomatizirovannoy-sistemy-kreditnogo-skoringa (дата обращения: 09.04.2023).
9. Туманов А, Л., Методы многомерного статистического анализа в кредитном скоринге / Baikal Research Journal // ― 2011, ― URL: https://cyberleninka.ru/article/n/metody-mnogomernogo-statisticheskogo-analiza-v-kreditnom-skoringe (дата обращения: 09.04.2023).
10. Ханжин С.В., Исследование кредитного скоринга на основе метода анализа иерархий / Фундаментальные и прикладные исследования: проблемы и результаты // ― 2016, ― URL: https://cyberleninka.ru/article/n/issledovanie-kreditnogo-skoringa-na-osnove-metoda-analiza-ierarhiy (дата обращения: 09.04.2023).
11. Experian: Check Your Free Credit Report & FICO // Официальный сайт компании. URL: https://www.experian.com/ (дата обращения: 19.05.2023).
12. TransUnion: Credit Scores, Credit Reports & Credit Check // Официальный сайт компании. URL: https://www.transunion.com (дата обращения: 19.05.2023).
13. Credit Karma: Get your free score and more // Официальный сайт компании. URL: https://www.creditkarma.com (дата обращения: 19.05.2023).
14. AI-Driven Credit Underwriting Software // Официальный сайт компании. URL: https://www.zest.ai (дата обращения: 19.05.2023).
15. Пилюгина А.В., Бойко А.А., Использование моделей arima для прогнозирования валютного курса / Прикаспийский журнал: управление и высокие технологии // ― 2015, ― URL: https://cyberleninka.ru/article/n/ispolzovanie-modeley-arima-dlya-prognozirovaniya-valyutnogo-kursa (дата обращения: 19.05.2023).
16. Информационные критерии качества моделей регрессии// Платформа Loginom. URL: https://loginom.ru/ (дата обращения: 19.05.2023).
Вопрос-ответ:
Что такое кредитный скоринг и как его оценивают?
Кредитный скоринг - это метод оценки кредитоспособности заемщика, основанный на анализе его финансовой и кредитной истории. Для оценки скоринга используются различные методы, включая логистическую регрессию, которая помогает построить математическую модель, предсказывающую вероятность невозврата кредита.
Какие методы используются при кредитном скоринге?
Основные методы кредитного скоринга включают анализ кредитной истории заемщика, оценку его финансового состояния, а также использование статистических моделей, включая логистическую регрессию. Все эти методы позволяют банкам и финансовым учреждениям оценить риски и принять взвешенное решение о выдаче кредита.
Какие организации занимаются кредитным скорингом?
Существует множество организаций, занимающихся кредитным скорингом, включая банки, кредитные бюро, финансовые компании и исследовательские организации. Эти организации разрабатывают свои собственные модели скоринга, основанные на собственных данных и анализе статистики.
Что такое логистическая регрессия и как она применяется в кредитном скоринге?
Логистическая регрессия - это статистический метод, используемый для предсказания бинарного результата на основе набора независимых переменных. В кредитном скоринге логистическая регрессия используется для построения математической модели, предсказывающей вероятность невозврата кредита и оценивающей кредитоспособность заемщика.
Какие информационные критерии качества моделей регрессии используются в кредитном скоринге?
В кредитном скоринге используются различные информационные критерии качества моделей регрессии, такие как Akaike Information Criterion (AIC), Bayesian Information Criterion (BIC) и deviance. Эти критерии помогают оценить точность модели и выбрать наиболее подходящую модель для предсказания кредитного скора заемщика.
Что такое кредитный скоринг и как он оценивается?
Кредитный скоринг - это процесс оценки кредитного риска потенциального заемщика с использованием статистических методов. Он основывается на анализе данных о заемщиках, таких как кредитная история, доходы, кредитные запросы и другие факторы. Методы оценки включают логистическую регрессию, деревья решений, искусственные нейронные сети и др.
Какие методы кредитного скоринга существуют?
Существуют различные методы кредитного скоринга, включая логистическую регрессию, деревья решений, искусственные нейронные сети и т. д. Каждый метод имеет свои преимущества и недостатки, и выбор метода зависит от требований исследования.
Какие организации занимаются кредитным скорингом и какой опыт у них есть?
Множество организаций занимаются кредитным скорингом, включая кредитные бюро, финансовые учреждения, страховые компании и другие. Они используют различные методы и модели для выявления кредитного риска у заемщиков. Опыт организаций варьируется, однако многие из них имеют значительный опыт и успешно применяют кредитный скоринг для принятия решений о выдаче кредитов.
Что такое логистическая регрессия и как она применяется в кредитном скоринге?
Логистическая регрессия - это статистический метод, используемый для предсказания вероятности наступления бинарного события. В кредитном скоринге она применяется для оценки вероятности невозврата кредита заемщиком. Путем анализа различных факторов, логистическая регрессия строит математическую модель, которая может быть использована для прогнозирования риска.
Какие информационные критерии качества моделей регрессии используются в кредитном скоринге?
В кредитном скоринге используются различные информационные критерии качества моделей регрессии, такие как AIC (критерий Акаике), BIC (критерий Шварца) и др. Эти критерии оценивают сложность модели и ее способность хорошо описывать данные. Чем меньше значение критерия, тем лучше модель.
Что такое кредитный скоринг и как оцениваются его методы?
Кредитный скоринг - это процесс оценки вероятности невозврата кредита заемщиком на основе его финансовой и кредитной истории. Основные методы оценки кредитного скоринга включают анализ различных факторов, таких как возраст, доход, семейное положение, кредитная история и т.д. Результаты анализа используются для создания моделей, которые помогают банкам и финансовым учреждениям принимать решения о выдаче кредита.
Какая информация доступна об опыте организаций, занимающихся кредитным скорингом?
Организации, занимающиеся кредитным скорингом, имеют доступ к большому объему данных о заемщиках и их кредитной истории. Они разрабатывают и применяют различные методы анализа этих данных для оценки кредитного скоринга. Кроме того, такие организации имеют опыт работы с различными моделями и методами кредитного скоринга, что позволяет им улучшать свои модели и прогнозы.