当前位置: 首页 > news >正文

逻辑回归在银行贷款审批中的应用:参数选择与实践

目录

一、数据背景与预处理

1.数据前五行

2.数据预处理步骤

二、逻辑回归的正则化参数选择

1.交叉验证选择最优C

2.为什么选择召回率作为评估指标?

三、参数选择的核心结论

四、后续优化方向


在银行贷款审批场景中,准确判断贷款人是否符合贷款条件(允许贷款为 0,拒绝贷款为 1)是风险控制的核心环节。本文将以银行贷款数据为例,详解逻辑回归模型的参数选择过程,帮助提升贷款审批的准确性。

一、数据背景与预处理

本次使用的银行贷款数据包含以下关键字段:

  • Time:贷款人标识(同一人可能在不同银行有记录)
  • Amount:贷款人收入(单位:万元)
  • V1-V28:28 个匿名特征(可能包含信用评分、负债情况等)
  • Class:贷款审批结果(0 = 允许贷款,1 = 拒绝贷款)

1.数据前五行

"Time","V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12","V13","V14","V15","V16","V17","V18","V19","V20","V21","V22","V23","V24","V25","V26","V27","V28","Amount","Class"
0,-1.3598071336738,-0.0727811733098497,2.53634673796914,1.37815522427443,-0.338320769942518,0.462387777762292,0.239598554061257,0.0986979012610507,0.363786969611213,0.0907941719789316,-0.551599533260813,-0.617800855762348,-0.991389847235408,-0.311169353699879,1.46817697209427,-0.470400525259478,0.207971241929242,0.0257905801985591,0.403992960255733,0.251412098239705,-0.018306777944153,0.277837575558899,-0.110473910188767,0.0669280749146731,0.128539358273528,-0.189114843888824,0.133558376740387,-0.0210530534538215,149.62,"0"
0,1.19185711131486,0.26615071205963,0.16648011335321,0.448154078460911,0.0600176492822243,-0.0823608088155687,-0.0788029833323113,0.0851016549148104,-0.255425128109186,-0.166974414004614,1.61272666105479,1.06523531137287,0.48909501589608,-0.143772296441519,0.635558093258208,0.463917041022171,-0.114804663102346,-0.183361270123994,-0.145783041325259,-0.0690831352230203,-0.225775248033138,-0.638671952771851,0.101288021253234,-0.339846475529127,0.167170404418143,0.125894532368176,-0.00898309914322813,0.0147241691924927,2.69,"0"
1,-1.35835406159823,-1.34016307473609,1.77320934263119,0.379779593034328,-0.503198133318193,1.80049938079263,0.791460956450422,0.247675786588991,-1.51465432260583,0.207642865216696,0.624501459424895,0.066083685268831,0.717292731410831,-0.165945922763554,2.34586494901581,-2.89008319444231,1.10996937869599,-0.121359313195888,-2.26185709530414,0.524979725224404,0.247998153469754,0.771679401917229,0.909412262347719,-0.689280956490685,-0.327641833735251,-0.139096571514147,-0.0553527940384261,-0.0597518405929204,378.66,"0"
1,-0.966271711572087,-0.185226008082898,1.79299333957872,-0.863291275036453,-0.0103088796030823,1.24720316752486,0.23760893977178,0.377435874652262,-1.38702406270197,-0.0549519224713749,-0.226487263835401,0.178228225877303,0.507756869957169,-0.28792374549456,-0.631418117709045,-1.0596472454325,-0.684092786345479,1.96577500349538,-1.2326219700892,-0.208037781160366,-0.108300452035545,0.00527359678253453,-0.190320518742841,-1.17557533186321,0.647376034602038,-0.221928844458407,0.0627228487293033,0.0614576285006353,123.5,"0"

2.数据预处理步骤

首先对数据进行标准化和特征筛选(代码来自银行贷款(参数选择).py):

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler# 读取数据
data = pd.read_csv('creditcard.csv')# 标准化收入特征(消除量纲影响)
scaler = StandardScaler()
data['Amount'] = scaler.fit_transform(data[['Amount']])# 移除重复标识特征(Time为贷款人在不同银行的记录,对审批结果无直接影响)
data = data.drop(['Time'], axis=1)# 划分特征与标签
X = data.iloc[:, :-1]  # 所有特征(含V1-V28和标准化后的Amount)
y = data['Class']      # 审批结果(0/1)

预处理的核心目的是:

  1. 标准化连续特征(如收入),避免因数值范围差异影响模型权重
  2. 剔除无关特征(如 Time),减少噪声干扰

二、逻辑回归的正则化参数选择

逻辑回归中,正则化参数C是控制模型复杂度的关键。C值越小,正则化强度越高,可有效防止过拟合(过度拟合训练数据中的噪声)。

1.交叉验证选择最优C

通过 8 折交叉验证,在不同C值下评估模型的召回率(重点关注拒绝贷款的识别能力):

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_score# 划分训练集(70%)和测试集(30%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1000  # 固定随机种子,保证结果可复现
)# 候选参数范围
c_param_range = [0.01, 0.1, 1, 10, 100]
scores = []# 遍历参数并评估
for c in c_param_range:# 初始化模型(L2正则化, solver选择lbfgs)clf = LogisticRegression(C=c,               # 正则化参数penalty='l2',      # L2正则化(防止系数过大)solver='lbfgs',    # 优化算法max_iter=1000      # 增加迭代次数确保收敛)# 交叉验证计算召回率(关注拒绝贷款的识别能力)recall_scores = cross_val_score(clf, X_train, y_train, cv=8, scoring='recall')mean_recall = recall_scores.mean()  # 平均召回率scores.append(mean_recall)print(f"C={c}时,平均召回率:{mean_recall:.4f}")# 选择最优参数(召回率最高对应的C)
best_c = c_param_range[np.argmax(scores)]
print(f"\n最优惩罚因子为:{best_c}")

2.为什么选择召回率作为评估指标?

在贷款审批中:

  • 召回率(针对 Class=1)= 正确拒绝的贷款申请 / 实际应拒绝的贷款申请
  • 高召回率可减少 "误批" 风险(将本应拒绝的申请误判为允许),降低银行坏账率

三、参数选择的核心结论

  1. C值与模型的关系

    • 过小的C(如 0.01)会导致模型欠拟合(过度简化,识别能力不足)
    • 过大的C(如 100)可能导致过拟合(过度关注训练数据细节,泛化能力差)
  2. 业务导向的参数选择
    银行需在 "审批效率" 和 "风险控制" 间平衡:

    • 若侧重风险控制(减少坏账),应选择召回率更高的C
    • 若侧重用户体验(减少误拒),可适当降低对召回率的要求

四、后续优化方向

  1. 结合采样技术:对于不平衡数据(如拒绝贷款的样本占比低),可采用上采样(SMOTE)或下采样平衡数据分布(参考银行贷款2(下采样).py和银行贷款3(过采样).py)。

  2. 阈值调整:逻辑回归默认以 0.5 为分类阈值,可通过调整阈值进一步优化召回率(如降低阈值使模型更倾向于拒绝高风险申请)。

  3. 特征工程:深入分析 V1-V28 等匿名特征与贷款审批的关联性,筛选更具预测力的特征。

通过科学的参数选择和优化,逻辑回归模型可为银行贷款审批提供可靠的决策支持,在控制风险的同时提高审批效率。

http://www.dtcms.com/a/309320.html

相关文章:

  • grafana/lock-stack 日志 Pipeline 配置
  • 性能监控体系:InfluxDB Grafana Prometheus
  • 【东枫科技】DreamHAT+
  • 3D 建模核心术语扫盲:拓扑、UV 展开、烘焙与 AO 贴图解析
  • 关于“PromptPilot” 之5 -标签词与标签动作的语言模型九宫格
  • c#中switch case语句的用法
  • Go语言的gRPC教程-拦截器
  • 向华为学习——IPD流程体系之IPD术语
  • 译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例
  • k8s云原生rook-ceph pvc快照与恢复(上)
  • JavaScriptAJAX异步请求:XHR、Fetch与Axios对比
  • 学习笔记:封装和单继承
  • ls hgfs提示ls: cannot access ‘hgfs‘: Permission denied
  • Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 实战指南
  • OneCode3.0 DSM:领域驱动设计驱动下的自定义枚举领域划分实践
  • CMake Debug/Release配置生成器表达式解析
  • 加密与安全
  • ACM SIGCOMM 2024论文精选-01:5G【Prism5G】
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • Unity相机控制
  • C#线程同步(三)线程安全
  • LT3045EDD#TRPBF ADI亚德诺半导体 线性稳压器 电源管理应用设计
  • PCB 控深槽如何破解 5G 基站 120℃高热魔咒?
  • Webhook是什么
  • 【Nginx反向代理】通过Nginx反向代理将多个后端server统一到同一个端口上的方法
  • 开源爬虫管理工具
  • [ Leetcode ]---快乐数
  • 【Redis】key的设计格式
  • Django模型查询与性能调优:告别N+1问题
  • 第三篇:几何体入门:内置几何体全解析