基于融360数据的模型构建及用户贷款审批结果预测

基于融360数据的模型构建及用户贷款审批结果预测
基于融360数据的模型构建及用户贷款审批结果预测

数据挖掘课程论文

—基于融360数据的模型构建及用户贷款审批结果预测

XXXX

摘要

本文的主要工作是运用数据挖掘的相关技术对申请贷款的客户的大量数据进行数据挖掘,发现隐藏在大量数据中的隐含模式,最终得到风险评估模型。本文的内容主要分为数据获取与探查、数据预处理、模型建立和结果分析与应用四个部分。在模型建立的过程中使用了SAS企业数据挖掘模块,基于决策树、回归和神经网络的方法, 充分利用已有数据建立模型, 对申请贷款客户进行科学归类, 从而帮助金融机构提高对贷款信用风险的控制能力。

关键词:SAS 分类技术数据挖掘预测贷款风险评估

目录:

1.绪论 (3)

1.1项目背景 (3)

1.2文献综述 (3)

2.数据获取与探查 (5)

2.1数据获取 (5)

2.2数据简介 (5)

2.3字段说明 (6)

2.4数据探查 (9)

3.数据处理与建模 (10)

3.1数据预处理 (10)

3.2数据建模过程——决策树 (16)

3.3数据建模过程——神经网络 (18)

3.4数据建模过程——回归 (20)

3.5最佳模型选择 (21)

4.结果分析与应用 (22)

5.项目评估与收获 (27)

5.1项目改进 (27)

5.2收获 (28)

参考文献 (29)

1.绪论

1.1项目背景

金融是现代经济的核心,各类金融机构则是现代金融的支柱。各类金融机构在社会经济发展过程中, 发挥着筹集融通资金、引导资产流向、提高资金运用效率和调节社会总需求的作用。中国加入WTO后, 中外金融机构的竞争日益激烈, 中国商业银行必须加快改革步伐, 尽快打造自己的核心竞争力。但是中国金融机构的信贷资产质量较差, 不良贷款的规模大、比例高, 严重阻碍中国金融业的发展。有效控制不良贷款信用风险已经成为中国金融机构面对的主要课题。

1.2文献综述

目前国际银行业对不良贷款信用风险评估的方法主要采用的是古典分析法和多元统计法[ 1-2] 。古典分析法是指银行经营者依赖一批训练有素的专家的主观判断对贷款人进行信用分析。多元统计分析的基本思想是根据历史累积样本建立数学模型, 并对新样本发生某种事件的可能性进行预测的方法,具体包括线性概率模型、LOGIT法、PROBIT法以及判别分析法(MDA)[ 1] 。巴塞尔委员会于2001 年1月公布了《新巴塞尔资本协议》草案, 新协议给出了两种计量信用风险的方法, 即标准法和内部评级法(IRB), IRB法对标准法中的风险加权系数进行了修正。新协议允许银行使用内部评级方法, 使新协议的监管规则有一定的灵活性。但目前, 金融界使用最多的两个信用风险评估模型是信用度量制(Credit Metrics)模型和KMV模型。Credit Metrics是J.P. Morgan于1997年开发的一种基于VAR方法的信贷风险管理模型[3] 。所谓VAR就是衡量一项资产或者负债在一定时间内、在一定的置信水平下其价值的最大损益额。Credit

Metrics是一种盯市(MTM)模型, 认为如果信用资产的信用等级发生了变化, 就产生了信用损失的可能性, 这种损失是多状态的, 不只是违约和不违约两种状态。KMV模型是KMV公司利用期权定价原理, 提出了以预期违约频率为核心的信用风险管理模型。KMV模型将资产的状态分为违约和不违约两种, 信用损失只发生在违约的时候。而且KMV模型有一个核心的假设, 就是当公司的资产价值下降到一定程度之后, 公司就会对其债务违约。由于受样本数量限制, 国内已有学者对信用风险评估方法进行研究, 着重研究某一具体方法在信用风险评估中的应用。王春峰等[ 4-7] 运用线性判别法、LOGIT法、遗传规划模型、神经网络模型, 以及距离判别法与神经网络方法相结合的组合预测法对信用风险评估方法作了研究。施锡铨等[ 8] 运用线性多元判别方法对上市企业的信用风险评估进行了研究, 得出评价上市企业信用风险水平的线性判别模型。

以上所述方法虽然被广泛应用, 但是它们只是针对某一方面如财务, 进行分析建模, 不能够充分利用有关客户和信贷产品的大量且全面的信息。在信贷风险评估中, 对信用风险的评价, 不仅要考虑贷款者的财务能力, 还要考虑贷款者所需求产品的信息等各方面因素, 仅靠单一指标的评价体系不足以对信用风险予以充分揭示。因此, 研究如何从贷款样本数据中挖掘更丰富的信用信息, 建立更完备的信用风险评估模型将成为一种必然。本文使用了SAS企业数据挖掘模块,基于决策树、回归和神经网络的方法, 充分利用已有数据建立模型, 对申请贷款客户进行科学归类, 从而帮助金融机构提高对贷款信用风险的控制能力。

2.数据获取与探查

2.1数据获取

本文的实验数据获取于数据堂,来源于融360。融360是中国最大的网络贷款平台,平台的一端是数亿的有借款需求的小微企业和个人消费者,另一端是数万的有贷款资金的金融机构(银行、小贷、担保、典当等)和数百万的金融产品,平台通过搜索和推荐服务来撮合借款用户和贷款。通常,用户进入平台后,会通过搜索和推荐服务找到合适的贷款产品,填写自己的个人基本资料,最终提交贷款订单。金融机构通过平台收到订单后,对用户资质进行风控审核,最终决定是否通过用户的订单。

2.2数据简介

数据包含了user, product, quality和order四张表,下面结合业务流程解释一下四个数据的产生过程。

第一步:用户访问融360网站搜索合适的贷款产品,这就产生了user数据,它包含了用户在网站的点击、搜索和下单记录,这里面的date字段记录了是哪一天;

第二步:用户在提供的贷款产品中搜索符合自己需求的,在些产品保存在product数据中,包含了产品的申请金额、期限、申请所需的材料等信息;

第三步:找到合适产品的用户会在线填写申请,这部分数据保存在quality 数据中,包含了用户的年龄、性别、职业、收入等信息;

第四步:把用户订单提交给相应的金融机构,金融机构在进行风控审核后会决定是否通过用户的订单,这部分数据保存在order数据中,其中包含用户与其

申请的产品编号、订单的申请金额和期限等基本信息以及订单是否审核通过。

具体每表的说明如下:

order_train.txt:用于训练的订单数据

product_final.txt:产品相关数据,包含训练集和测试集出现的所有产品quality_final.txt:用户申请信息相关数据,包含训练集和测试集出现的所有用户

user_final.txt:用户访问信息相关数据,包含训练集和测试集出现的所有用户

order_test_no_label:用于测试的订单数据,与训练数据相比缺少最终结果标签。

2.3字段说明

user表

变量说明

user_id 用户id

pv 总pv

pv_inde x_loan:贷款首页PV

pv_apply_total 申请次数

pv_ask 问答页Pv

pv_calculator 计算器页

PVorder_count_loan 贷款下单量

pv_daikuan 贷款总PV

pv_credit 信用卡总PV

pv_search_daikuan 搜索页

pv_detail_daikuan 贷款详情页PV

date 不同日期

product表

变量说明

product_id 产品id

city_id 城市id

bank_id 产品所属机构id product_type 产品类型

guarantee_type 产品担保类型

loan_term_min 最短期限

loan_term_max 最长期限

loan_term_type 期限类型

decision_cycle 审批时间

loan_cycle 放款时间

repayment_type 还款方式

loan_quota_min 最小额度

loan_quota_max 最大额interest_rate_type 利率类型guarantee_required 是否必须有担保

quality表

变量说明

user_id 用户id

city_id 城市id

application_type 申请类型

application_term 申请期限

application_limit 申请金额

op_type 职业类型

col_type 房产类型user_loan_experience 两年内征信情况user_has_car 是否有车user_social_security 缴纳社保年份

qid77 是否有公积金cash_receipts 现金收入user_income_by_card 打卡收入user_work_period 工作年限

user_age 用户年龄

company_type 公司类型

col_value 房产价值

com_op_period 经营年限

com_month_flow 月流水

qid123 文化程度

qid122 婚姻状况

qid135 公司规模

qid139 居住类型

qid93 是否办过营业执照

qid57 能提供流水数

order表

变量说明

user_id 用户id

product_id 产品id

date 不同日期

term 申请期限

limit 申请金额

Result 0表示未被批准,1表示被批准

2.4数据探查

我们利用SAS EM观察到以下有关各个变量的基本统计指标的异常情况:偏度偏大(>5)的有:

loan_term_max,loan_quota_min,loan_quota_max,limit,application_te rm,application_limit.

缺失值过多(>50%)的有:

user_age,qid93,qid78,qid135,qid133,qid123,qid122,col_has_morgag e

取值过于单一且集中的有:

term,pv,,loan_term_max,loan_quota_min,loan_quota_max,limit,fangk uan_num,decesion_cycle,apply_num

3.数据处理与建模

3.1数据预处理

3.1.1导入EM之前的处理

在将数据导入EM之前,先将四张表的数据整合到了一起,这里使用的是链接的方法,具体语句如下:

在这里使用了DISTINCT,是为了将重复数据去除。

为了观察数据,先将数据导入EM中进行分析,使用INSIGHT节点,发现TOTAL一共含有79万多条记录,100多个字段。通过INPUT发现,许多字段的缺失值比例已经达到60%以上,有的甚至超过了95%,达到了100%。这样的字段是毫无意义的,所以我们在后续的处理中可以直接REJECTED。

另外,通过之前的观察发现,有些字段之间是有关联的,比如说EARLY_REPAYMENT字段和PENALTY字段,前者代表是否可以提前还款,后者代表提前还款是否需要交纳违约金,对于后者,如果前者为0或者缺失,那么

后者也就自然为缺失值,造成缺失值比例升高,同时,我们也注意到,如果采用后面的REPLACEMENT节点,使用的方法也是会产生歧义,因为EARLY_REPAYMENT字段为0的时候,PENALTY字段本身就是缺失的,而使用REPLACEMENT节点反而会导致错误的结果。

所以在此我们通过建立一个新的字段EARLY_REPAY来代替两个字段的含义。

具体语句如下:

/*去除无意义的字段

PROC SQL;

TITLE'SELECTION';

CREATE TABLE DATA.TOTAL3 AS

SELECT

USER_ID,PRODUCT_ID,DATE,TERM,LIMIT,RESULT,CITY_ID,BANK_ID,PR ODUCT_TYPE,GUARANTEE_TYPE,LOAN_TERM_MIN,LOAN_TERM_MAX,L OAN_TERM_TYPE,

DECISION_CYCLE,REPAYMENT_TYPE,LOAN_QUOTA_MIN,LOAN_QUO TA_MAX,INTEREST_RATE_TYPE,GUARANTEE_REQUIRED,APPLY_NUM,FAN GKUAN_NUM,ID,HOUSE_REGISTER,

BUSINESS_LICENSE,LEGAL_PERSON,MARRIED,CAR,INCOME,HOUSE, TAX,SOCIALSECURITY,LIFECOST,EARLY_REPAYMENT,PENALTY,APPLICATI ON_TYPE,APPLICATION_TERM,

APPLICATION_LIMIT,OP_TYPE,COL_TYPE,USER_LOAN_EXPERIENCE,U

SER_HAS_CAR,QID77,CASH_RECEIPTS,USER_INCOME_BY_CARD,USER_W ORK_PERIOD,USER_AGE,

QID123,QID122,QID135,QID93,QID145,QID133,QID78,COL_HAS_M ORTGAGE,SPAM_SCORE,SOURCE,PV

FROM DATA.TOTAL;

QUIT;

/*对相关的字段进行处理

PROC SQL;

TITLE 'COMBINITION';

CREATE TABLE DATA.TOTAL5 AS

SELECT

USER_ID,PRODUCT_ID,DATE,TERM,LIMIT,RESULT,CITY_ID,BANK_ID,PR ODUCT_TYPE,GUARANTEE_TYPE,LOAN_TERM_MIN,LOAN_TERM_MAX,L OAN_TERM_TYPE,

DECISION_CYCLE,REPAYMENT_TYPE,LOAN_QUOTA_MIN,LOAN_QUO TA_MAX,INTEREST_RATE_TYPE,GUARANTEE_REQUIRED,APPLY_NUM,FAN GKUAN_NUM,ID,HOUSE_REGISTER,

BUSINESS_LICENSE,LEGAL_PERSON,MARRIED,CAR,INCOME,HOUSE, TAX,SOCIALSECURITY,LIFECOST,APPLICATION_TYPE,APPLICATION_TERM ,

APPLICATION_LIMIT,OP_TYPE,COL_TYPE,USER_LOAN_EXPERIENCE,U SER_HAS_CAR,QID77,CASH_RECEIPTS,USER_INCOME_BY_CARD,USER_W

ORK_PERIOD,USER_AGE,

QID123,QID122,QID135,QID93,QID145,QID133,QID78,COL_HAS_M ORTGAGE,SPAM_SCORE,SOURCE,PV,

CASE

WHEN EARLY_REPAYMENT=0 THEN '0'

WHEN EARLY_REPAYMENT=1 AND PENALTY=1 THEN '2'

WHEN EARLY_REPAYMENT=1 AND PENALTY=0 THEN '1'

WHEN EARLY_REPAYMENT=. OR PENALTY=. THEN '3'

END AS EARLY_REPAY

FROM DATA.TOTAL3;

QUIT;

/*对AGE缺失的记录进行删除

DATA DATA.TOTAL6;

SET DATA.TOTAL5;

RUN;

PROC SQL;

TITLE 'DELETE';

DELETE FROM DATA.TOTAL6 WHERE USER_AGE='';

QUIT;

解释一下,这里做了处理以后的字段EARLY_REPAY,取值为0的时候表示不可以提前还款,取值为1的时候表示可以提前还款且还款不需要支付违约金,取值为2的时候表示可以提前还款且还款需要支付违约金,取值为3的时候表

示EARLY_REPAYMENT=. OR PENALTY=.。同时,我们也在这里删除了一些对后续分析无意义的字段,比如说修改次数等,方便后续分析。

处理完后的数据集为TOTAL5,将其导入EM进行处理。

3.1.2导入EM后的处理

整体项目图:

数据导入:TOTAL5。在INPUT 后加上一个INSIGHT节点,观察TOTAL5。

数据预处理:

在INPUT SOURCE节点后一共增加了四个预处理节点。

A.SAMPLE

通过观察数据,发现到及时是处理后的TOTAL5,也是一个十分庞大的数据集,所含的记录有79万条之多,由于我们的电脑配置有限,处理如此庞大的数据是十分困难的,所以,我们在这里使用了抽样节点,抽取1%的样本作为所要处理的数据。

在这里,我们使用的是分层抽样,用RESULT为0和1时分别抽样。

B.PARTITION

将数据按照6:4的比例划分训练集和验证集,方便后续分析建模与验证。

C.REPLACEMENT

REPLACEMENT节点是用来对缺失值进行处理的。

我们对INTERVAL的变量采用决策树的方法,对CLASS的变量采用众数的方法。

D.TRAMSFORM

通过对数据分布的观察,发现大多数的数据都是分布不均匀,不利于后续探查,所以我们对数据进行转化,根据最优原则,所以采用转化方法如下:

3.2数据建模过程——决策树

A.TREE 1

由于在决策树的建模过程中,缺失值的影响很小,所以直接在分层后的节点后加上TREE节点,建立模型TREE1。通过多次参数探查,最后得到相对较好的一组参数。具体参数设置如下:

B.TREE 2

在经过讨论后,发现虽然在决策树的建模过程中,缺失值的影响很小,但这里指的是训练集,验证集的缺失仍会对后续的建模产生影响,所以在REPLACEMENT节点后,添加TREE节点,建立模型TREE 2。通过多次参数探查,最后得到相对较好的一组参数。具体参数设置如下:

C.TREE3

在TRANSFORM节点后加上TREE节点,建立模型TREE3。通过多次参数探查,最后得到相对较好的一组参数。具体参数设置如下:

D.提升图比较

最后发现TREE2的效果最好。

3.3数据建模过程——神经网络

https://www.360docs.net/doc/7b5062785.html,1

在TRANSFORM后添加NET节点,建立模型NET1。经过探查后,发现设置隐藏层为3效果最好。

https://www.360docs.net/doc/7b5062785.html, 2

在REPLACEMENT后直接添加NET节点,建立模型。经过探查后,发现设置隐藏层为3效果最好。

C.提升图比对

NET 2的效果更好。

相关主题
相关文档
最新文档