互联网金融目前火遍大地,目前但凡有个互联网产品的都在同时组建互联网金融团队和对应产品,如那么如何对用户数据分析呢,博主从公开渠道获取了一份比较特别的互联网金融公司的一份客户数据作为分析样例,展示分析数据思路。以下内容从拿到数据到完成分析,倾心业余时间两个星期时间完成!
一、数据集背景
所提供数据包含了该客户投资的从2015年1月1日起成交的所有标。数据文件为LCIS.csv
以6个月月底的最后一天(2016年9月30日,2016年10月31日,2016年11月30日,2016年12月31日,2017年1月31日,2017年2月28日)作为recorddate,对每一个recorddate都提供了该客户投资的从2015年1月1日起到当天成交的所有标的数据,包括这些标成交时的特点(Loan Characteristics)、该客户投资的金额以及截至当天的收款情况(Investment Status)。
- LC部分共有21个字段,包括一个主键(listingid)、7个标的特征和13个成交当时的借款人信息,全部为成交当时可以获得的信息。
- IS部分有15个字段,包括截至recorddate当天标的还款状态,针对这位客户的已还和待还金额,最近的还款情况和下一期还款计划。
数据字典如下:
LCIS.csv
字段序号 | 字段名 | 字段类型 | 字段注释 |
---|---|---|---|
1 | ListingId | 列表成交特征 | 列表序号,为列表的唯一键。 |
2 | 借款金额 | 列表成交特征 | 列表成交总金额。 |
3 | 借款期限 | 列表成交特征 | 总的期数(按月计)。 |
4 | 借款利率 | 列表成交特征 | 年化利率(百分数)。 |
5 | 借款成功日期 | 列表成交特征 | 列表成交的日期。都在2015年1月1日以后。 |
6 | 初始评级 | 列表成交特征 | 列表成交时的信用评级。AAA为安全标,AA为赔标,A-F为信用等级。 |
7 | 借款类型 | 列表成交特征 | 分为’应收安全标’,‘电商’,‘APP闪电’,‘普通’和‘其他’。 |
8 | 是否首标 | 列表成交特征 | 该标是否为借款人首标。 |
9 | 年龄 | 列表成交特征 | 借款人在该列表借款成功时的年龄。 |
10 | 性别 | 列表成交特征 | 该列表借款人性别。 |
11 | 手机认证 | 列表成交特征 | 该列表借款人手机实名认证是否成功。 |
12 | 户口认证 | 列表成交特征 | 该列表借款人户口认证是否成功。 |
13 | 视频认证 | 列表成交特征 | 该列表借款人视频认证是否成功。 |
14 | 学历认证 | 列表成交特征 | 该列表借款人学历认证是否成功。成功则表示有大专及以上学历。 |
15 | 征信认证 | 列表成交特征 | 该列表借款人征信认证是否成功。成功则表示有人行征信报告。 |
16 | 淘宝认证 | 列表成交特征 | 该列表借款人淘宝认证是否成功。成功则表示为淘宝店主。 |
17 | 历史成功借款次数 | 列表成交特征 | 借款人在该列表成交之前的借款成功次数。 |
18 | 历史成功借款金额 | 列表成交特征 | 借款人在该列表成交之前的借款成功金额。 |
19 | 总待还本金 | 列表成交特征 | 借款人在该列表成交之前待还本金金额。 |
20 | 历史正常还款期数 | 列表成交特征 | 借款人在该列表成交之前的按期还款期数。 |
21 | 历史逾期还款期数 | 列表成交特征 | 借款人在该列表成交之前的逾期还款期数。 |
22 | 我的投资金额 | 列表成交特征 | 该投资人对该列表的投资金额。 |
23 | 当前到期期数 | 列表当期特征 | 该列表当前应还的期数。 |
24 | 当前还款期数 | 列表当期特征 | 该列表已经成功还款的期数。 |
25 | 已还本金 | 列表当期特征 | 已经向该投资人成功还款的本金总额。 |
26 | 已还利息 | 列表当期特征 | 已经向该投资人成功还款的利息总额。 |
27 | 待还本金 | 列表当期特征 | 还需向该投资人还款的本金总额。 |
28 | 待还利息 | 列表当期特征 | 还需向该投资人还款的利息总额。 |
29 | 标当前逾期天数 | 列表当期特征 | 当期逾期天数。未逾期则为0。 |
30 | 标当前状态 | 列表当期特征 | 当期状态。分为‘正常还款中’,‘逾期中’,‘已还清’,‘已债转’。 |
31 | 上次还款日期 | 列表当期特征 | 上一次实际还款日期。 |
32 | 上次还款本金 | 列表当期特征 | 上一次实际向该投资人还款本金。 |
33 | 上次还款利息 | 列表当期特征 | 上一次实际向该投资人还款利息。 |
34 | 下次计划还款日期 | 列表当期特征 | 下一次计划还款日期。 |
35 | 下次计划还款本金 | 列表当期特征 | 下一次计划向该投资人还款本金。 |
36 | 下次计划还款利息 | 列表当期特征 | 下一次计划向该投资人还款利息。 |
37 | recorddate | 列表当期特征 | 记录日期。一般为月末最后一天。 |
数据用途 所提供数据为拍拍贷真实业务数据,但仅为一位客户的投标历史数据,仅供数据分析和学术研究目的使用,而非信息披露。从这个数据中推导得到的结果不反映拍拍贷平台的整体情况,也不代表拍拍贷官方的态度。
二、数据分析设计思想
数据分析师的意义:
要么做出一个数据分析产品被众人依赖,要么数据分析结果被客户认可、心态上认同!
设计初步结果分为两部分:数据分析报告建模和数据分析产品,数据分析报告主要帮助客户观察投资标的整体情况、为客户提出适当建议、总结调整投资策略、主要处理LC字段数据;数据分析产品主要利用tableau为客户制定投资收益报表、增加更多交互式查询功能、主要处理IS字段数据。
其中tableau数据分析产品设计思想如下:
互联网金融商业模式主要有一些四类;
1、传统金融利用互联网技术从事的互联网金融服务。盈利模式是金融产品的管理费或收益提成,以及利息差。
2、互联网企业基于其大数据和云计算从事的金融服务。该盈利模式主要是金融产品的管理费或收益提成以及利息差。
3、独立的第三方利用互联网所从事的在线网络融资金融服务。该模式的盈利方式是向客户收取管理费、佣金或股权。
4、为互联网金融服务商提供各类服务的平台。盈利方式是向互联网金融平台、互联网金融消费者收取佣金或服务费。
经过判断,该数据背景应该是属于第3类和4类的结合,属于为个人投资者和借款者搭建P2P平台提供金融服务。
本篇数据集中用户的关注点是什么?——逾期和收益,因为收益是可控定量的,逾期情况是P2P平台对于吸引投资者最大的顾虑。
三、数据分析产品展示
利用Tableau做的可交互式仪表盘如下:
3年盈利34万,其实还能更多!
上述页面展示了当前该客户整体投资收益情况,左侧为累积收益图,右边是投资整体状况,其中把坏账单独列出,根据实际业务场景逾期90天以上很难追回,则按照该情况计算坏账目前为4.26万。
4.26万坏账,相当于6800笔投资!
上述页面继续对坏账进行进一步说明,坏账占比1%,每月坏账在2015年和2016年的走势,需要根据预测评分系统重点对优质标进行投资。
除了分散投资,我还能如何降低风险?
上述页面描述了投资件均价,并按照之前数据分析产品评分设计思路对之前所有标进行打分,得出左下角南丁格尔图分析,其中75-90分标占绝对比重。优质投资的标评分90分以上占比14.7%,劣质投资30分以下占比2.6%需要竭尽避免类似的标。
智能投资,让老赖无所遁形!
上述页面根据评分系统对需要投资的标进行推荐,并列出推荐评分。
参数调整面板
为了便于产品经理及时调整评分系统,特别设计参数面板堆客户进行定制化服务。
四、数据分析报告
1、数据处理
时间筛选为record date选取2016年12月,对指标进行逻辑值整理:
指标 | 逻辑值 |
---|---|
是否首标 | 否=1,是=2 |
性别 | 男=1,女=2 |
手机认证 | 成功=1,未成功=2 |
户口认证 | 成功=1,未成功=2 |
视频认证 | 成功=1,未成功=2 |
学历认证 | 成功=1,未成功=2 |
征信认证 | 成功=1,未成功=2 |
淘宝认证 | 成功=1,未成功=2 |
初始评级 | A、AA、AAA、B、C、D、E、F分别为1 2 3 4 5 6 7 8 |
借款类型 | APP闪电=1,电商=2,普通=3,其他=4,应收安全标=5 |
对连续变量离散化处理:
连续变量 | 离散化变量 |
---|---|
年龄 | L(15,25,30,35,40,50,60) |
借款金额 | L (1000,3000,6000,10000,50000) |
借款期限 | L (3,6,10,12,18,24) |
借款利率 | L(6,9,12,15,18,22,24) |
历史成功借款次数 | L (2,10,100,200,500,700) |
历史成功借款金额 | L (1000,3000,5000,8000,10000) |
总待还本金 | L (1000,3000,5000,8000,10000) |
历史正常还款期数 | L (3,5,9,100,500) |
历史逾期还款期数 | L (3,5,10,30,50,100) |
对贷款状态进行赋值:
flag=0代表没有逾期 数据行数109168
flag=1代表产生逾期 数据行数9599
同时去掉正在还款中的用户数据。
从LCIS表中提取数据
由于要用Python和R分别做逻辑回归,因此提取3个筛选数据表,具体Python代码如下:
# coding: utf-8
import pandas as pd
import numpy as np
lc=pd.DataFrame(pd.read_csv('D:/python/logistic/LCIS.csv',header=0,encoding='gbk'))
print(lc.head(2))
outf='D:/python/logistic/flag1.csv'
lc.loc[lc["flag"] == "1"].head()
(lc.loc[lc["flag"] == "1"]).to_csv(outf,header=1,encoding='gbk')
outf0='D:/python/logistic/flag0.csv'
(lc.loc[lc["flag"] == "0"]).to_csv(outf0,header=1,encoding='gbk')
outf10='D:/python/logistic/flag10.csv'
lc.loc[(lc["flag"] == "0") | (lc["flag"] == "1")].to_csv(outf10,header=1,encoding='gbk')
2、数据初步分析
借款金额的影响:可以看到逾期的标主要集中在3k~6k之间,投资建议:减少1-3k的投资项目。
借款利率的影响:高利率逾期较多,投资需要谨慎,投资建议: 9-12%利率逾期较少,可以稳定投资。
借款日期的影响:9月份以后标大部分处于正常还款当中,投资建议:5-8月的标适合稳定投资。
借款期限的影响:逾期标主要集中在11-12月的标中,投资建议:11-12月的标需要重点甄别关注。
借款类型的影响:9月份以后标大部分处于正常还款当中,投资建议:5-8月的标适合稳定投资。
首标评估的影响:首标比例正常,投资建议:已还清标中首标比例比逾期中首标比例要高。
初始评级的影响:B、C、D初始评级标占逾期重要部分,投资建议:初始评级为B、C的标需要重点关注风险性。
借款次数的影响:10次以上的标较少投资建议:无明显主导因素
年龄的影响:年龄越大,平均借款越高,借款人数越低。逾期标中年龄分布较均匀。
认证的影响:目前来看投资的标的借款人主要进行了手机认证和学历认证。投资建议:学历认证目前来看比较重要。
历史正常还款和逾期数量的影响:目前看借款人过去历史情况基本能反应出当前逾期状态。投资建议:有过逾期记录的谨慎投资。
3、分析思考?
就该P2P平台投资者而言,纵观自己的长期投资数据,哪种类型的标风险较大容易逾期,哪种类型类型的标适合稳健投资,需要类似的策略来进行辅助帮助,上一节的分析比较分散,那么是否有合适的方法建议一个总体性的投资策略吗?目前该数据场景主要是二分类问题,也就是哪些标容易逾期、哪些标不容易逾期。
处理二分类的模型算法:回归分析、决策树、KNN、神经网络、贝叶斯网络等,本篇分析决定采取回归分析,主要原因如下:
- 回归分析广泛应用于征信、风控领域,有较好的应用背景
- 回归分析法在分析多因素模型时,更加简单和方便
- 运用回归模型,只要采用的模型和数据相同,通过标准的统计方法可以计算出唯一的结果,但在图和表的形式中,数据之间关系的解释往往因人而异,不同分析者画出的拟合曲线很可能也是不一样的
回归模型名称 | 模型说明 | 使用场景 |
---|---|---|
Linear Regression 线性回归 | 线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系 公式:Y=a+b*X + e,其中a表示截距,b表示直线的斜率,e是误差项 | 因变量与自变量是线性关系 |
Logistic Regression 逻辑回归 | 逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归 公式:odds=p/1-p | 因变量一般有1和0(是否)两种取值 |
Polynomial Regression 多项式回归 | 对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程 公式:y=a+b*x^2 | 最佳拟合线不是直线。而是一个用于拟合数据点的曲线 |
…… | …… | …… |
场景符合逻辑回归场景,因此使用逻辑回归进行模型分析
Logistic回归建模步骤如下:
先利用R做回归分析
#install.packages("glm2")
#install.packages("pROC")
#install.packages("ROCR")
#install.packages("tcltk2")
rm(list = ls(all=TRUE))
library(pROC)
library(gplots)
library(ROCR)
LPC=read.csv('flag11.csv',header = TRUE)
LPC0=read.csv('flag00.csv',header = TRUE)
LPC$初始评级=as.numeric(LPC$初始评级)
LPC$借款类型=as.numeric(LPC$借款类型)
LPC$是否首标=as.numeric(LPC$是否首标)
LPC$性别=as.numeric(LPC$性别)
LPC$手机认证=as.numeric(LPC$手机认证)
LPC$户口认证=as.numeric(LPC$户口认证)
LPC$视频认证=as.numeric(LPC$视频认证)
LPC$学历认证=as.numeric(LPC$学历认证)
LPC$征信认证=as.numeric(LPC$征信认证)
LPC$淘宝认证=as.numeric(LPC$淘宝认证)
##############################################
LPC0$初始评级=as.numeric(LPC0$初始评级)
LPC0$借款类型=as.numeric(LPC0$借款类型)
LPC0$是否首标=as.numeric(LPC0$是否首标)
LPC0$性别=as.numeric(LPC0$性别)
LPC0$手机认证=as.numeric(LPC0$手机认证)
LPC0$户口认证=as.numeric(LPC0$户口认证)
LPC0$视频认证=as.numeric(LPC0$视频认证)
LPC0$学历认证=as.numeric(LPC0$学历认证)
LPC0$征信认证=as.numeric(LPC0$征信认证)
LPC0$淘宝认证=as.numeric(LPC0$淘宝认证)
#################################################
###############################################
#####################################################
m=1000
AU=rep(0,m)
for (j in 1:m){
LPCtrainindex=sample(9599,9599*(2/3),replace = F)
LPC0trainindex=sample(109168,109168*(2/3),replace = F)
LPCtraindata=LPC[LPCtrainindex,]
LPC0traindata=LPC0[LPC0trainindex,]
traindata=rbind(LPCtraindata,LPC0traindata)
traindata=traindata[sample(nrow(traindata),nrow(traindata),replace = F),]###打乱数据集
a=nrow(LPC0)-length(LPC0trainindex)
b=nrow(LPC)-length(LPCtrainindex)
LPC0testindex=sample(a,b,replace = F)
data0=LPC0[-LPC0trainindex,]
LPC0testdata=data0[LPC0testindex,]
LPCtestdata=LPC[-LPCtrainindex,]
testdata=rbind(LPC0testdata,LPCtestdata)
testdata=testdata[sample(nrow(testdata),nrow(testdata),replace = F),]###打乱数据集
#model <- glm(flag ~.,family=binomial(link='logit'),data=traindata)
#summary(model)
model <- glm(flag ~借款利率+借款类型+历史正常还款期数+手机认证+户口认证+征信认证+淘宝认证+历史成功借款次数+历史成功借款金额+总待还本金+历史逾期还款期数+年龄+借款金额+借款期限+初始评级+是否首标+性别+学历认证+视频认证,
family=binomial(link='logit'),data=traindata)
#summary(model)
##################测试准确率######################
predict <- predict(model,type='response',newdata=testdata)
predict.results <- ifelse( predict> 0.5,1,0)
misClasificError <- mean(predict.results != testdata$flag)
AU[j]=1- misClasificError
}
mean(AU)
summary(model)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.2191 -0.4443 -0.2760 -0.1456 3.2452 ###残差分布
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -9.280e+00 4.416e-01 -21.014 < 2e-16 ***
借款利率 3.798e-01 9.309e-03 40.804 < 2e-16 ***
借款类型 -2.310e-01 1.601e-02 -14.427 < 2e-16 ***
历史正常还款期数 -1.511e-02 2.291e-03 -6.596 4.22e-11 ***
手机认证 5.906e-01 3.494e-02 16.903 < 2e-16 ***
户口认证 3.071e-01 5.846e-02 5.254 1.49e-07 ***
征信认证 -4.092e-01 6.171e-02 -6.631 3.32e-11 ***
淘宝认证 -3.182e-01 1.942e-01 -1.639 0.1013
历史成功借款次数 2.768e-02 1.132e-02 2.445 0.0145 *
历史成功借款金额 1.544e-06 2.352e-07 6.565 5.19e-11 *** ###系数的预估值概要
总待还本金 4.141e-07 1.527e-06 0.271 0.7863
历史逾期还款期数 1.185e-01 7.655e-03 15.473 < 2e-16 ***
年龄 9.602e-03 2.270e-03 4.230 2.33e-05 ***
借款金额 -1.821e-06 8.449e-07 -2.155 0.0311 *
借款期限 1.839e-01 5.172e-03 35.557 < 2e-16 ***
初始评级 -2.529e-01 1.719e-02 -14.710 < 2e-16 ***
是否首标 -2.925e-01 3.971e-02 -7.364 1.78e-13 ***
性别 6.520e-02 3.052e-02 2.136 0.0326 *
学历认证 6.786e-02 2.931e-02 2.315 0.0206 *
视频认证 -1.094e-01 5.080e-02 -2.154 0.0313 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 44460 on 79176 degrees of freedom
Residual deviance: 37253 on 79157 degrees of freedom
AIC: 37293 ###赤池信息量准则
将模型模拟1000次,准确率为50.8%,AIC值为37293,根据全变量的回归结果,将显著水平不高(*以下)的变量(淘宝认证、总待还本金)去掉,再进行了一次模型拟合,得到的结果如下:
Deviance Residuals:
Min 1Q Median 3Q Max
-2.4067 -0.4462 -0.2787 -0.1477 3.3689
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -9.790e+00 2.400e-01 -40.800 < 2e-16 ***
借款利率 3.752e-01 9.270e-03 40.479 < 2e-16 ***
借款类型 -2.281e-01 1.595e-02 -14.294 < 2e-16 ***
历史正常还款期数 -1.564e-02 2.218e-03 -7.052 1.77e-12 ***
手机认证 5.851e-01 3.493e-02 16.753 < 2e-16 ***
户口认证 2.772e-01 5.789e-02 4.789 1.68e-06 ***
征信认证 -3.915e-01 6.146e-02 -6.370 1.89e-10 ***
历史成功借款次数 3.013e-02 1.066e-02 2.827 0.004705 **
历史成功借款金额 1.573e-06 2.031e-07 7.746 9.45e-15 ***
历史逾期还款期数 1.137e-01 7.310e-03 15.554 < 2e-16 ***
年龄 1.101e-02 2.267e-03 4.855 1.21e-06 ***
借款金额 -1.508e-06 8.057e-07 -1.871 0.061295 .
借款期限 1.802e-01 5.148e-03 35.005 < 2e-16 ***
初始评级 -2.447e-01 1.721e-02 -14.214 < 2e-16 ***
是否首标 -2.992e-01 3.984e-02 -7.510 5.92e-14 ***
性别 2.647e-02 3.061e-02 0.864 0.387316
学历认证 9.832e-02 2.934e-02 3.351 0.000806 ***
视频认证 -1.295e-01 5.038e-02 -2.571 0.010149 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 44460 on 79176 degrees of freedom
Residual deviance: 37366 on 79159 degrees of freedom
AIC: 37402
准确率50.8%,AIC为37402,再次将显著水平不高(**以下)的变量(性别、视频认证、借款金额、历史成功借款次数)去掉,再进行了一次模型拟合,得到的结果如下:
Deviance Residuals:
Min 1Q Median 3Q Max
-2.2520 -0.4448 -0.2751 -0.1439 3.3836
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -9.755e+00 2.319e-01 -42.056 < 2e-16 ***
借款利率 3.820e-01 9.330e-03 40.947 < 2e-16 ***
借款类型 -2.385e-01 1.600e-02 -14.907 < 2e-16 ***
历史正常还款期数 -1.036e-02 1.336e-03 -7.749 9.26e-15 ***
手机认证 5.793e-01 3.472e-02 16.682 < 2e-16 ***
户口认证 2.670e-01 5.633e-02 4.741 2.13e-06 ***
征信认证 -4.601e-01 6.082e-02 -7.565 3.89e-14 ***
历史成功借款金额 1.723e-06 2.034e-07 8.473 < 2e-16 ***
历史逾期还款期数 1.176e-01 7.067e-03 16.640 < 2e-16 ***
年龄 9.477e-03 2.261e-03 4.191 2.78e-05 ***
借款金额 -1.984e-06 8.604e-07 -2.306 0.02109 *
借款期限 1.811e-01 5.189e-03 34.911 < 2e-16 ***
初始评级 -2.579e-01 1.728e-02 -14.922 < 2e-16 ***
是否首标 -3.457e-01 3.877e-02 -8.918 < 2e-16 ***
学历认证 8.306e-02 2.927e-02 2.837 0.00455 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 44460 on 79176 degrees of freedom
Residual deviance: 37217 on 79162 degrees of freedom
AIC: 37247
准确率50.8%,AIC为37247。
再利用Python的sklearn对逻辑回归准确率进行验证:
In [1]:
import pandas as pd
In [2]:
fl='D:/python/logistic/flag10logistic.xlsx'
In [3]:
data=pd.read_excel(fl)
In [4]:
x=data.iloc[:,:19].as_matrix()
In [5]:
print('x: \n',x)
x:
[[ 3.62900000e+03 6.00000000e+00 1.20000000e+01 ..., 1.31346000e+03
2.00000000e+00 2.00000000e+00]
[ 3.00000000e+03 1.20000000e+01 1.20000000e+01 ..., 0.00000000e+00
0.00000000e+00 0.00000000e+00]
[ 3.62900000e+03 1.20000000e+01 1.20000000e+01 ..., 8.78580000e+02
5.00000000e+00 0.00000000e+00]
...,
[ 8.00000000e+03 6.00000000e+00 2.00000000e+01 ..., 4.70672000e+03
6.00000000e+00 0.00000000e+00]
[ 4.99100000e+03 6.00000000e+00 2.00000000e+01 ..., 5.08720000e+02
4.00000000e+00 0.00000000e+00]
[ 8.50000000e+03 6.00000000e+00 2.00000000e+01 ..., 7.29093000e+03
6.00000000e+00 0.00000000e+00]]
In [6]:
y=data.iloc[:,19].as_matrix()
In [7]:
print("y:\n",y)
y:
[0 0 0 ..., 0 0 0]
In [8]:
from sklearn.linear_model import LogisticRegression as LR
In [9]:
from sklearn.linear_model import RandomizedLogisticRegression as RLR
In [10]:
rlr=RLR()
c:\users\zhanghuai\appdata\local\programs\python\python36\lib\site-packages\sklearn\utils\deprecation.py:58: DeprecationWarning: Class RandomizedLogisticRegression is deprecated; The class RandomizedLogisticRegression is deprecated in 0.19 and will be removed in 0.21.
warnings.warn(msg, category=DeprecationWarning)
In [11]:
rlr.fit(x,y)
Out[11]:
RandomizedLogisticRegression(C=1, fit_intercept=True, memory=None, n_jobs=1,
n_resampling=200, normalize=True, pre_dispatch='3*n_jobs',
random_state=None, sample_fraction=0.75, scaling=0.5,
selection_threshold=0.25, tol=0.001, verbose=False)
In [12]:
rlr.get_support()
Out[12]:
array([False, True, True, True, True, True, False, False, True,
True, False, False, True, False, False, False, False, False, True], dtype=bool)
In [14]:
import numpy as np
In [17]:
print(u'有效特征为:%s' % ','.join(np.array(data.iloc[:,:19].columns)[rlr.get_support()]))
有效特征为:借款期限,借款利率,初始评级,借款类型,是否首标,手机认证,户口认证,征信认证,历史逾期还款期数
In [18]:
x = data[np.array(data.iloc[:,:19].columns)[rlr.get_support()]].as_matrix()
In [19]:
lr = LR()
In [20]:
lr.fit(x,y)
Out[20]:
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
verbose=0, warm_start=False)
In [21]:
print(u'逻辑回归模型训练结束。')
逻辑回归模型训练结束。
In [22]:
print(u'模型的平均正确率为:%s' % lr.score(x, y))
模型的平均正确率为:0.919565199087
可以得到模型有效特征为借口期限、借口利率、初始评级、借口类型、是否首标、手机认证、户口认证、征信认证、历史逾期还款期数。
模型平均正确率为91%,综合得出结论如下:
最终得到模型拟合结果:y=1/(1+e^(-f) ) ,y表示会发生逾期的概率
f =40借款利率-15借款类型+16手机认证+5户口认证-5征信认证+15历史逾期还款期数+34借款期限-14初始评级-6*是否首标
综合该投资用户的LCIS投资历史数据中LC标的表现,根据逻辑回归分析,建议整体投资策略如下:
借款利率越低、借款类型为应收安全标、手机认证完成认证、历史逾期还款期数没有有记录、借款期限越短、初始评级越高、是首标则该标的逾期率越低,建议优先投资此类标。
五、总结
用一页PPT的形式对该互联网金融数据分析做个简单总结: