版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章基于Python的机器学习在财务中的应用Python在财务与会计中的应用主讲人:本章内容11.1数据导入、探索与预处理11.2信贷违约预测模型11.3客户流失预测与价值分群11.4基于LSTM的不良贷款率时序预测11.5模型应用价值评估与业务建议学习目标完成金融数据探索、特征工程与防泄漏处理训练四种分类模型,解释AUC、KS及混淆矩阵运用SHAP解释信用风险预测结果结合流失预测与K-Means形成客户管理策略比较ARIMA和LSTM,并说明业务估算的边界Q银行的三个建模任务预测结果服务于具体业务决策根据历史不良贷款率和宏观指标预测后续趋势。根据申请人特征预测违约风险,辅助贷款审批与贷后管理。预测客户流失,结合价值分群确定挽留优先级。客户经营资产质量信贷风控01数据导入探索与预处理11.1.1四类数据文件文件名与数据规模采用教材口径数据文件内容教材规模loan_credit.csv贷款信用与违约标签50,000行×27列customer_behavior.csv客户行为与流失标签30,000行×21列npl_timeseries.csv月度不良贷款率120个月macro_indicators.csv月度宏观经济指标按月份与NPL合并数据导入data目录为教材配套数据位置importpandasaspdimportnumpyasnploan_df=pd.read_csv('data/loan_credit.csv')cust_df=pd.read_csv('data/customer_behavior.csv')npl_df=pd.read_csv('data/npl_timeseries.csv',parse_dates=['date'])macro_df=pd.read_csv('data/macro_indicators.csv',parse_dates=['date'])基础检查与类别分布先检查数据质量,再解释建模结果约5,907个缺失值,重点检查收入、信用评分与逾期次数信用数据违约率约15%,少数类与多数类约为1∶5.7。违约标签约1,855个缺失值,核对行为记录与收益指标。客户数据流失率约18%,少数类与多数类约为1∶4.6。流失标签数据概览代码准确率不能单独评价不平衡分类print(loan_df.shape)print(loan_df.isna().sum().sort_values())print(loan_df['default_label'].value_counts(normalize=True))print(cust_df['churn_label'].value_counts(normalize=True))11.1.2探索性分析特征与结果的关系需要结合业务解释低于550分:违约率78.3%550~620分:违约率48.5%信用评分流失客户多持有1~2个产品留存客户多持有3~5个产品客户产品数DTI大于0.8:违约率约85%需关注偿债负担债务收入比2015—2024年总体下降期间存在阶段性反弹不良贷款率分箱与组内违约率示例提取信用评分与违约率的关系bins=[300,550,620,680,740,850]tmp=loan_df.dropna(subset=['credit_score']).copy()tmp['score_bin']=pd.cut(tmp['credit_score'],bins=bins,include_lowest=True)rate=tmp.groupby('score_bin',observed=True)['default_label'].mean()*100print(rate.round(1))11.1.3衍生特征把还款能力和历史行为转化为变量贷款金额÷年收入,衡量贷款相对收入规模。贷款收入比历史逾期次数÷在行月数,刻画逾期集中程度。逾期密度等额本息月供÷月收入,衡量月度还款压力。月供收入比结合逾期次数、近半年查询次数与高授信使用率综合风险信号训练、验证与测试的分工教材信用数据按60%/20%/20%划分在模型及阈值固定后评价效果,不参与任何拟合。拟合缺失值填补器、编码器、标准化器与预测模型。选择模型参数与判定阈值,保持原始类别分布。验证集测试集训练集分层划分数据保持各子集中违约标签的比例fromsklearn.model_selectionimporttrain_test_splitidx=loan_df.indextrain_idx,test_idx=train_test_split(idx,test_size=.2,random_state=42,stratify=loan_df['default_label'])train_idx,val_idx=train_test_split(train_idx,test_size=.25,random_state=42,stratify=loan_df.loc[train_idx,'default_label'])预处理的四项操作教材最终使用24项建模特征数值变量用训练集中位数填充,保留缺失的业务含义。缺失值填充训练集拟合StandardScaler,验证集和测试集只转换。标准化教材代码使用OrdinalEncoder,未知类别编码为−1。类别编码三份数据的列顺序、编码方式与尺度必须相同。一致性检查SMOTE过采样只对训练集生成合成样本在少数类样本及其近邻之间插值,缓解类别不平衡。x_new=x_i+λ(x_neighbor−x_i),λ∈[0,1]教材将训练集类别比例调整到约1∶1,约51,000条。普通SMOTE可能产生非整数类别编码,混合类型数据需另行处理。标准化与训练集过采样X_train、X_val、X_test为同列序的预处理特征fromsklearn.preprocessingimportStandardScalerfromimblearn.over_samplingimportSMOTEscaler=StandardScaler()X_train_s=scaler.fit_transform(X_train)X_val_s=scaler.transform(X_val)X_test_s=scaler.transform(X_test)X_res,y_res=SMOTE(random_state=42).fit_resample(X_train_s,y_train)02信贷违约预测模型11.2.1四种分类模型在相同数据划分上比较模型作为基准模型,系数便于解释,需控制正则化强度。逻辑回归多棵树集成,减少单棵树预测的不稳定性。随机森林生成分裂规则,通过树深和叶节点样本数控制复杂度。决策树逐步拟合残差,利用学习率与子采样控制拟合过程。XGBoost模型定义:逻辑回归与决策树对应教材参数fromsklearn.linear_modelimportLogisticRegressionfromsklearn.treeimportDecisionTreeClassifierlr=LogisticRegression(max_iter=1000,C=.5,random_state=42)dt=DecisionTreeClassifier(max_depth=8,min_samples_leaf=50,random_state=42)模型定义:随机森林与XGBoost教学实现采用已平衡的X_res、y_res,不再叠加类别权重fromsklearn.ensembleimportRandomForestClassifierfromxgboostimportXGBClassifierrf=RandomForestClassifier(n_estimators=200,max_depth=10,min_samples_leaf=20,random_state=42)xgb=XGBClassifier(n_estimators=300,max_depth=6,learning_rate=.05,subsample=.8,colsample_bytree=.8,scale_pos_weight=1,random_state=42,eval_metric='logloss')模型训练与概率预测修正教材片段中的样本长度及尺度不一致问题models={'逻辑回归':lr,'决策树':dt,'随机森林':rf,'XGBoost':xgb}val_probs,test_probs={},{}forname,modelinmodels.items():model.fit(X_res,y_res)val_probs[name]=model.predict_proba(X_val_s)[:,1]test_probs[name]=model.predict_proba(X_test_s)[:,1]验证集上的阈值选择阈值确定后,再用于独立测试集fromsklearn.metricsimportprecision_recall_curvep,r,thresholds=precision_recall_curve(y_val,val_probs['XGBoost'])f1=2*p[:-1]*r[:-1]/(p[:-1]+r[:-1]+1e-8)threshold=thresholds[np.argmax(f1)]y_pred=(test_probs['XGBoost']>=threshold).astype(int)11.2.2分类模型评价评价指标对应不同业务问题TP÷(TP+FP)预测违约客户中,实际违约的比例精确率精确率与召回率的调和平均,反映二者的综合表现。F1值TP÷(TP+FN)实际违约客户中,成功识别的比例召回率降低阈值通常提高召回率,也可能增加正常客户误拒。业务取舍ROC、AUC与KS区分能力与业务收益需要分别评价KS=max(TPR−FPR),度量两类累计分布的最大差异。横轴是假正率FPR,纵轴是真正率TPR,观察阈值变化。ROC曲线下面积,衡量风险排序的区分能力。AUCKSROC四种模型的教材结果教材报告值,修正后的代码需另行运行验证模型AUCKS逻辑回归0.94780.8092决策树0.97690.9316随机森林0.97730.9292XGBoost0.97940.9278XGBoost混淆矩阵教材测试集10,000人,实际违约1,500人实际类别预测正常预测违约正常8,147(TN)353(FP)违约82(FN)1,418(TP)混淆矩阵的业务解读以下比例由教材混淆矩阵计算1,418÷1,500≈94.5%漏报率约5.5%违约召回率1,418÷1,771≈80.1%预测高风险不等于必然违约违约精确率353÷8,500≈4.2%对应误拒或额外审核成本正常客户误报率综合比较稳定性、可解释性和误拒成本,不能只看AUC。模型选择11.2.3SHAP可解释性解释模型输出的贡献,不等于因果效应从基准输出逐项叠加贡献,解释单个客户的预测结果。平均绝对SHAP值越大,该特征对模型输出的平均影响越大。横轴表示贡献方向和大小,纵轴按重要性排序,颜色表示特征值。蜂群图瀑布图全局重要性SHAP分析代码输入特征必须与模型训练时保持相同尺度和列序importshapexplainer=shap.TreeExplainer(xgb)sample=X_test_s[:2000]sv=explainer(sample)shap.summary_plot(sv.values,sample,feature_names=model_features,max_display=12)教材SHAP结果与解释边界树模型默认输出尺度可能为对数几率平均绝对SHAP值约4.6,在教材结果中影响最大。信用评分平均绝对SHAP值约0.5,补充还款行为信息。逾期密度平均绝对SHAP值约1.5,较高逾期次数多推动风险上升。历史逾期SHAP值不是概率百分点,也不能据此认定特征导致违约。解释边界03客户流失预测与价值分群11.3.1客户流失特征工程目标变量为churn_label客户资产÷同客群资产中位数,描述横截面相对水平。产品持有数÷(在行年数+1),刻画客户关系深度。结合APP登录、线上交易和网点访问形成综合指标。数字活跃度客群相对资产产品密度客户数据的防泄漏处理教学提示:统计参数来自训练集先划分数据,再拟合中位数、分群统计量及标准化器。验证与测试数据复用训练集规则,不能单独重新计算。SMOTE前统一尺度,仅对训练集采样。“相对资产”不是资产变化率,变化趋势需要历史记录。客户流失模型Xc_res、yc_res为客户训练集完成预处理及采样后的数据fromsklearn.ensembleimportGradientBoostingClassifierchurn_model=GradientBoostingClassifier(n_estimators=200,max_depth=4,learning_rate=.08,subsample=.8,min_samples_leaf=20,random_state=42)churn_model.fit(Xc_res,yc_res)churn_prob=churn_model.predict_proba(Xc_test_s)[:,1]客户流失预测的教材结果总体AUC=0.9896,KS=0.9365客群平均流失概率中位流失概率大众0.2130.004普通贵宾0.1540.002贵宾0.1600.002私人银行0.1470.002客群均值与个体风险均值高于中位数反映明显的右偏分布少数高风险客户拉高客群平均流失概率。不能把同一客群内所有客户都视为相同风险。运营名单应结合个体预测、客户价值与干预成本。全量客户评分可用于运营,训练集内评分不能当作样本外效果。11.3.2K-Means价值分群六项价值特征共同描述客户总资产、年度收益贡献。资产与收益数字活跃度、月度手续费收入。活跃与费用产品总数、在行月数。关系深度反复分配最近中心并更新中心,使簇内平方距离总和下降。聚类原理归一化与肘部法则归一化前完成缺失值处理fromsklearn.preprocessingimportMinMaxScalerfromsklearn.clusterimportKMeansV=MinMaxScaler().fit_transform(X_value)inertia=[]forkinrange(2,11):km=KMeans(n_clusters=k,random_state=42,n_init=10).fit(V)inertia.append(km.inertia_)K值选择与结果稳定性教材结合肘部图与业务需要取K=4MinMax和StandardScaler均可用于聚类,应结合分布和离群值判断。观察增加簇数后,簇内惯性的下降是否明显趋缓。用多次初始化检查分群稳定性,避免把一次结果当成定论。稳定性尺度选择肘部转折四类客户的业务命名簇编号本身不代表价值高低km=KMeans(n_clusters=4,random_state=42,n_init=20)cust_fe['cluster']=km.fit_predict(V)stats=cust_fe.groupby('cluster')[['total_assets','annual_revenue_contribution','total_products']].mean()order=stats.rank().sum(axis=1).sort_values().indexname_map=dict(zip(order,['潜力','成长','价值','核心']))cust_fe['cluster_name']=cust_fe['cluster'].map(name_map)四个客群的教材画像名称由本案例综合排序产生平均资产约43.19万元,平均流失概率约25%。价值客群年均贡献收益约0.57万元,产品约3.73个。核心客群平均资产约41.69万元,产品约3.63个,流失概率约17%。成长客群平均资产约39.79万元,产品约6.27个,流失概率约11%。潜力客群客户价值与流失风险矩阵高价值取核心/价值客群,高风险阈值为0.30优先人工回访与定向挽留,评估优惠成本和增量收益。高价值、高风险采用低成本触达,控制单客干预成本。低价值、高风险维护服务体验,减少不必要的打扰。高价值、低风险常态化服务,观察价值成长机会。低价值、低风险重点挽留客群教材识别约4,159名高价值高风险客户占全量30,000名客户的约13.9%。客群平均流失率与个体0.30的划分阈值含义不同。客户名单用于制定行动,不证明挽留措施一定有效。应通过对照实验评估实际增量留存和收益。04不良贷款率时序预测11.4.1时序整合与特征月度NPL与宏观数据按日期对齐构造1、2、3、6、12个月的滞后特征。历史NPLGDP、CPI、房地产指数、失业率、PMI和M2增速。宏观因素历史3个月、6个月均值及3个月标准差。滚动统计按实际发布日期对齐宏观变量,避免使用预测时未知的信息。可用时间时序特征代码先排序,再计算滞后与滚动指标ts_df=npl_df.merge(macro_df,on=['date','year','month'],how='left')ts_df=ts_df.sort_values('date').reset_index(drop=True)forlagin[1,2,3,6,12]:ts_df[f'npl_lag{lag}']=ts_df['npl_rate'].shift(lag)ts_df['npl_roll3_mean']=(ts_df['npl_rate'].shift(1).rolling(3).mean())ts_clean=ts_df.dropna().reset_index(drop=True)时序特征的教材结果120个月经滞后处理后保留108行NPL与滞后1期的相关系数约为0.979。与历史3期均值约为0.963,与滞后2期约为0.953。强相关提示历史惯性,但不能据此认定因果关系。日期、年份等趋势变量的相关性需要谨慎解释。11.4.2ARIMA基准模型ARIMA(p,d,q)的参数含义使用历史误差项描述序列动态。教材以AIC选择参数。使用历史观测值描述当前序列。通过差分处理趋势或非平稳性,阶数需结合诊断确定。d:差分q:移动平均p:自回归ARIMA候选阶数比较train_npl只包含测试期之前的数据fromstatsmodels.tsa.arima.modelimportARIMAfromitertoolsimportproductfits=[]fororderinproduct(range(4),[0,1],range(4)):try:fits.append(ARIMA(train_npl,order=order).fit())except(ValueError,np.linalg.LinAlgError):continueARIMA预测与误差教材选得ARIMA(1,0,0),AIC=−292.24fromsklearn.metricsimportmean_squared_errorfromsklearn.metricsimportmean_absolute_errorbest=min(fits,key=lambdafit:fit.aic)arima_pred=best.forecast(steps=len(test_npl))rmse=np.sqrt(mean_squared_error(test_npl,arima_pred))mae=mean_absolute_error(test_npl,arima_pred)print(rmse,mae)11.4.3LSTM网络利用门控机制学习序列依赖关系控制历史记忆中保留或删除的信息。遗忘门根据记忆状态生成当前隐藏状态。输出门决定当前输入向记忆状态写入多少信息。输入门两层LSTM含64和32个单元中间使用Dropout教材结构滑动窗口与输入维度用前12个月的7项特征预测下一个月NPL输入:NPL、GDP增速、CPI同比、房地产指数、失业率、PMI和M2增速。单个样本维度为12×7,标签是下一个月的NPL。整体输入维度为“样本数×时间步×特征数”。滑动窗口构造data为按时间排序且完成归一化的二维数组defcreate_sequences(data,window=12):X,y=[],[]foriinrange(window,len(data)):X.append(data[i-window:i])y.append(data[i,0])returnnp.asarray(X),np.asarray(y)X_seq,y_seq=create_sequences(lstm_scaled)时间划分与归一化边界教学提示:统一预测任务与测试日期ARIMA与LSTM使用相同测试日期,并统一一步滚动或多步预测口径。训练、验证、测试按时间先后划分,不随机打乱边界。MinMaxScaler仅在训练区间拟合,其他区间只调用transform。再拟合尺度统一比较先定日期LSTM模型定义保留教材64/32单元结构fromtensorflow.kerasimportSequential,Inputfromtensorflow.keras.layersimportLSTM,Dense,Dropoutlstm_model=Sequential([Input(shape=(12,7)),LSTM(64,return_sequences=True),Dropout(.2),LSTM(32),Dropout(.2),Dense(16,activation='relu'),Dense(1)])lstm_pile(optimizer='adam',loss='mse',metrics=['mae'])训练控制X_tr_s与X_val_s_seq为按时间独立划分的序列fromtensorflow.keras.callbacksimportEarlyStoppingfromtensorflow.keras.callbacksimportReduceLROnPlateaucallbacks=[EarlyStopping(patience=20,restore_best_weights=True),ReduceLROnPlateau(patience=10,factor=.5,min_lr=1e-5)]history=lstm_model.fit(X_tr_s,y_tr_s,epochs=200,batch_size=16,validation_data=(X_val_s_seq,y_val_s),callbacks=callbacks,shuffle=False,verbose=0)预测值反归一化NPL位于特征第0列definverse_npl(values,scaler,n_features=7):dummy=np.zeros((len(values),n_features))dummy[:,0]=np.asarray(values).ravel()returnscaler.in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年10月18日 白山市浑江区测评中心 斯巴鲁 汽车技术支持 9人
- 宁夏青铜峡市青铜峡市第一中学2025-2026学年度第一学期期末高一化学试题(含答案)
- 湖北省孝感市应城市2025-2026学年七年级上学期期中道德与法治试卷(含答案)
- 福建省福州市某校2026-2027学年高一上学期尖子生暑期自学质量检测数学试卷(含解析)
- 2025-2026学年第二学期陕西宝鸡高新四小三年级数学下册期末试卷 (含答案)
- 普外科护理中的多学科协作
- 2026初三年级青年班主任经验交流课件:做一名有温度的班主任
- 2026新学期中学生环境保护与生态文明教育主题班会课件
- 烧伤面积计算教学课件
- 公路桥梁伸缩装置设计指南解读(2024年)
- 《智能生产线数字化集成与仿真》课件 虚拟生产线认知
- 现代通信系统新技术 (第三版) 课件 第8章 大数据和云计算技术简介
- 政府机关公务车采购投标书
- 影视制作公司影视制作合同
- 夜间飞行的秘密课件
- 宗教民俗+讲解
- 2024年中国人寿:养老险总公司招聘笔试参考题库含答案解析
- 99版-干部履历表-A4打印
- 山东传媒职业学院教师招聘考试题库真题2023
- 青岛胶东国际机场
- 全国优质课人教版小学数学《数与代数》2022新课标(解读)课件
评论
0/150
提交评论