




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章
逻辑回归金融大数据学习学习目标理解逻辑回归的使用场景,以及如何通过模型输出来解决分类问题熟悉逻辑回归的函数形式,以及模型中参数(包括边际效应)意义熟悉梯度下降在逻辑回归训练中的应用掌握编写逻辑回归程序案例:贷款违约预测为个人或企业提供贷款是银行的重要功能。在审批过程中,需要预测贷款申请人的还款能力,从而控制贷款违约的风险。原则上,金融机构应尽量给有还款能力的申请人充分贷款。而对于违约可能性较高的申请者,银行则应该拒绝其贷款申请在金融科技迅速发展的今天,贷款者的数据是贷款审批的重要依据。本章我们将讨论如何用机器学习的方法来创建一个贷款违约预测系统。案例:贷款违约预测
可以从金融机构得到从已经审批通过的贷款表现的数据:贷款编号住房数量年收入负债收入比工作年限贷款违约307005400027.2921283806000024.7280133914600016.78100408201500005.86100708012500028.7330
我们将使用四个特征(即用于预测的变量)来对违约进行预测:申请者的年收入(年收入高的申请人不太可能出现因现金流短缺而无法还款的情况)负债收入比(负债相对收入越高,还款越困难)现有住房数量(如果申请人已经购房说明其经济状况良好,并且平时消费习惯也比较健康)以及工作年限(可以代表申请者的工作稳定性)逻辑回归方法
如何让模型输出概率预测
逻辑函数的特点逻辑函数例子
模型训练:代价函数在线性回归中,我们已经学习过用J(w)来表示的代价函数。代价函数描述的是模型预测与实际数据在整个训练数据集中的差异。如果我们需要描述一个数据点上模型预测的误差,我们则可以使用损失函数(一般用C来表示)。因此代价函数是训练数据集中每个数据点的损失函数值的平均数。模型训练:代价函数
模型训练:代价函数
模型训练:代价函数
模型训练:代价函数
模型训练:代价函数模型训练:梯度下降
模型应用:决策边界
当我们考虑更多的特征时,决策边界将具有更高的维度若模型中有三个特征,则决策边界是二维的平面。如果有更多特征,则决策边界由更高的线性组合表示。因此,只有在特征数量较少的时候才能用图像来很好的表示分类边界。模型应用:决策边界模型应用:系数的推断
多分类问题在贷款违约预测的问题中,我们将贷款的结果分为两类,即违约或不违约。在一些其他应用中,我们可能需要模型判断多于两种分类。例如,当保险公司需要预测医疗保险赔付概率时,可能需要对保险持有人罹患不同疾病的概率。因为一个病人可能同时患上多种疾病,因此这种多分类问题并不互相排斥。在这种情况下,我们需要做的是构建多个逻辑回归模型。每一个逻辑回归对一种疾病发生的概率进行预测。多分类问题:Softmax回归
多分类问题:Softmax回归
4.5如何编写逻辑回归程序——statsmodels导入库
使用pandas存储数据
导入statsmodels的api模块用于逻辑回归分析import
pandas
as
pdimport
statsmodels.api
as
sm数据读取及处理
读取名为'train_sample_small.csv’的CSV文件中的数据,并将其存储在train_sample变量中。定义特征列表’fea_cols’,包含四个特征名称:工作年限,住房所有量,年收入,以及负债收入比。
从train_sample中选取fea_cols列作为特征,存储到train_x中,选取’isDefault’列作为目标变量,存储到对象train_y中。
对train_x中的’dti’列和’employmentYear’列进行填充,使用每列数据的中位数填充缺失值。由于大部分算法无法处理含有缺失值的数据,数据填充经常是非常重要的一步。之后我们会对如何填充缺失值进行更详细的介绍。
为特征列添加常数项,结果存储到train_x_sm中。train_sample
=
pd.read_csv('train_sample_small.csv')
fea_cols
=['employmentYear','homeOwnership','annualIncome','dti']
train_x
=
train_sample[fea_cols]
train_y
=
train_sample['isDefault']
train_x['dti']
=
train_x['dti'].fillna(train_x['dti'].median())
train_x['employmentYear']
=
train_x['employmentYear'].fillna(train_x['employmentYear'].median())
train_x_sm
=
sm.add_constant(train_x)使用statsmodel来训练逻辑回归模型
创建一个逻辑回归模型对象est,其中因变量为train_x,自变量为train_y
使用fit方法训练样本对逻辑回归模型进行拟合,结果存储到对象est2中
打印est2摘要信息,包括各个参数的值和统计量等est=sm.Logit(train_y,
train_x_sm)
est2=est.fit()
print(est2.summary())
运行结果如图结果分析
在这四个特征中,employmentYear不具有统计显著性,另外三个特征都与贷款是否违约有正相关。其中,年收入与贷款违约负相关,其他两个变量与贷款违约为正相关。
使用get_margeff获取边际效应并打印其摘要信息est_me
=
est2.get_margeff()
print(est_me.summary())打印结果如下:用边际效应可以解读特征变化如何影响违约概率。例如,dti=0.0033,说明如果负债收入比增加1,那么违约概率预计会增加0.33%。如何编写逻辑回归程序——sklearn
接下来,我们使用sklearn模块进行逻辑回归,并与statsmodel的结果进行对比。值得注意的是,调用sklearn模块进行逻辑回归必须先对特征进行缩放。导入库
使用pandas存储数据
导入sklearn.linear_model中的逻辑回归函数,用于逻辑回归分析
导入statsmodels的api模块用于逻辑回归分析
导入sklearn库中的标准化处理模块,用于对数据进行标准化处理
导入sklearn中的metrics模块,用于对模型表现进行评估import
pandas
as
pd
from
sklearn.linear_model
import
LogisticRegression
import
statsmodels.api
as
sm
from
sklearn.preprocessing
import
StandardScaler
from
sklearn.metrics
import
log_loss
数据读取及处理
读取名为‘train_sample_small.csv’的CSV文件中的数据,并将其存储在train_sample变量中
定义一个特征列表fea_cols,包含特征名称‘employmentYear’,‘homeOwnership’,'annualIncome’,‘dti’
train_sample
=
pd.read_csv('train_sample_small.csv')
fea_cols
=
['employmentYear','homeOwnership','annualIncome','dti']
从train_sample中选取fea_cols列作为特征,存储到train_x中,选取’isDefault’列作为目标变量,存储到对象train_y中
对train_x中的’dti’列和’employmentYear’列进行填充,使用每列数据的中位数填充缺失值
创建一个StandardScaler对象,用于对数据进行标准化处理
使用scaler的fit方法计算数据集train_x的平均值和标准偏差train_x
=
train_sample[fea_cols]
train_y
=
train_sample['isDefault']
train_x['dti']
=
train_x['dti'].fillna(train_x['dti'].median())
train_x['employmentYear']
=
train_x['employmentYear'].fillna(train_x['employmentYear'].median())
scaler
=
StandardScaler()
scaler.fit(train_x)
使用transform方法对train_x中的特征数据进行标准化处理(处理后的特征平均值为0,标准方差为1)。
将标准化处理后的数据train_x_standardized转化为DataFrame格式,并将结果存储在train_x_standardized中,同时定义列名为特征列表fea_cols。
使用sklearn.linear_model中的LogisticRegression函数建立逻辑回归模型。创建一个逻辑回归模型对象Logit,设置最大迭代次数为10000,设置正则化参数为None。train_x_standardized
=
scaler.transform(train_x)
train_x_standardized
=
pd.DataFrame(train_x_standardized,
columns=train_x.columns)
Logit
=
LogisticRegression(max_iter=10000,penalty=None)
est_sk1
=
Logit.fit(X=train_x_standardized,
y=train_y)
print(est_ercept_[0])
print(est_sk1.coef_[0])
y_pred
=
est_sk1.predict_proba(train_x_standardized)
logloss
=
log_loss(train_y,
y_pred)
print(logloss)
对比statsmodel的api模块的结果(两种程序运行结果一致):
首先,添加截距项(statsmodel不会自动添加截距项),将结果存储到train_x_sm中。
创建一个逻辑回归模型对象est,使用sm.Logit函数,其中因变量为train_x_sm,自变量为train_y。
使用fit方法对模型进行拟合,并将结果存储在est2中。打印est2的摘要信息,包括各个参数的值和统计量等。train_x_sm
=
sm.add_constant(train_x_standardized)
est
=
sm.Logit(train_y,
train_x_sm)
est2
=
est.fit()
print(est2.summary())
4.6习题计算题-1.7502.818.681
程序操作,请使用贷款违约预测数据进行以下操作: 1.基于程序部分,输出模型对数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮合伙的合同范本
- 标准简单房租合同范本
- 娱乐选秀合同范本
- 中考古文整合复习主题五治国类
- 年度工作回顾报告
- (二诊)雅安市高2022级高三第二次诊断性考试英语试卷(含标准答案)
- 2025合同样本参考模板
- 2025杭州市租赁合同范本
- 2025版租赁合同范本2
- 狱内侦查学知到课后答案智慧树章节测试答案2025年春山东政法学院
- 中小学学校落实中央八项规定自查报告
- 宜宾市属国有企业人力资源中心宜宾临港投资建设集团有限公司下属子公司2025年第一批项目制员工公开招聘笔试参考题库附带答案详解
- 2025年山东鲁泰控股集团有限公司下属驻陕西煤矿企业招聘(150人)笔试参考题库附带答案详解
- 2025届上海市浦东新区高三二模英语试卷(含答案)
- 2024-2025学年高一政治统编版下学期期中考试测试卷B卷(含解析)
- 内蒙古自治区呼和浩特市2025届高三第一次模拟考试物理答案
- 仓库管理奖惩制度
- 中级银行管理-2025中级银行从业资格考试《银行管理》点睛提分卷1
- 乳腺癌诊治指南与规范(2024年版)解读
- 酒店前台培训知识
- (一模)石家庄市2025年高三年级教学质量检测(一)地理试卷(含答案)
评论
0/150
提交评论