Lending Club – 操作逻辑回归预测在网贷平台上的投资收益
![](http://img.shujuren.org/pictures/FL/5870fdf49bd1c.png)
#预测目标:
在借贷行业中,投资者向借贷者提供贷款以获取利钱。假如借贷者顺利送还贷款,投资者则得到利钱收益。假如借贷者无法送还贷款,投资者则损失贷款本金。因此,对付投资者来说,需要预测借贷者无法送还贷款的风险,最洪流平地制止投资损失,最洪流平地实现投资回报。
#数据来历:
我们将利用Lending Club网站的果真数据,数据集为自2007年5月起至2010年2月LendingClub平台发放的9578条3年期贷款。
**因变量"not.fully.paid"**暗示不完全付出,要预测这个因变量,如下自变量可供投资者选择是否投资此项贷款:
**Credit Policy**:客户是否满意Lending Club的授信尺度,1为是,0为否;
**Purpose**:贷款的目标;(例:信用卡还款,债务处理惩罚,教诲,购置大件,中小企业策划等等);
**int.rate**:贷款利率;较高的贷款利率意味着较高的风险;
**installement**:每月分期的金额;
**log.annual.inc**:借贷者的年收入的自然对数;
**dti**:借贷者的债务收入比;
**fico**:借贷者的FICO信用评分;
**days.with.cr.line**:借贷者有信用额度的天数;
**revol.bal**:借贷者的账户余额(尚未结清的金额);
**revol.util**:借贷者的信用账户操作率(利用的金额/授信的金额);
**inq.last.6mths**:借贷者在已往6个月被借钱者咨询的次数;
**delinq.2yrs**:借贷者在已往2年过时还款高出30天的次数;
**pub.rec**:借贷者民众事业记录差评的次数;
####第一步: PREPARING THE DATASET
重要处理惩罚数据的语法-**填充缺少的调查值 imputation**
源数据共有13个自变量,每1个变量都有呈现缺少调查值的环境,所以我们要对源数据举办处理惩罚,填充缺少的调查值;通过如下代码可以有所调查:
“`{r}
missing = subset(loans, is.na(log.annual.inc) | is.na(days.with.cr.line) | is.na(revol.util) | is.na(inq.last.6mths) | is.na(delinq.2yrs) | is.na(pub.rec))
“`
填充缺少的调查值:
“`{r}
library(mice)
set.seed(144)
vars.for.imputation = setdiff(names(loans), "not.fully.paid")
imputed = complete(mice(loans[vars.for.imputation]))
loans[vars.for.imputation] = imputed
“`
####第二步: PREDICTION MODEL
回收逻辑回归算法成立模子:
“`{r}
set.seed(144)
library(caTools)
split = sample.split(loans$not.fully.paid, SplitRatio = 0.7)
train = subset(loans, split == TRUE)
test = subset(loans, split == FALSE)
LoansLog = glm(not.fully.paid ~.,data=train,family=binomial)
summary(LoansLog)
predicted.risk=predict(LoansLog,type="response",newdata=test)
test$predicted.risk=predicted.risk
table(test$not.fully.paid, predicted.risk > 0.5)
library(ROCR)
ROCRpred = prediction(predicted.risk, test$not.fully.paid)
as.numeric(performance(ROCRpred, "auc")@y.values)
“`
视察在逻辑回归模子下:
逻辑回归模子正确率:0.8364
Baseline模子正确率:0.8399
模子AUC:0.672
综上所述,可以视察在对所有变量举办逻辑回归的进程中,模子自己对预测的表示并不抱负;
####第三步: A SMART BASELINE
Lending Club会按照对贷款风险的预测来分派贷款利率,接下来我们进一步研究int.rate变量对模子预测的影响; 成立bivariate模子,
“`{r}
bivariate = glm(not.fully.paid~int.rate, data=train, family="binomial")
summary(bivariate)
“`
与全变量的逻辑回归模子对比,int.rate变量的重要性产生了显著的变革;
接下来,举办变量相关性调查:
“`{r}
cor(train$int.rate, train$fico)
“`
视察功效显示变量int.rate和变量fico存在相关性,全变量模子存在multicollinearity多重共线性;贷款利率和借贷者的信用积分存在相关性;
针对测试集运用bivariate模子:
“`{r}
pred.bivariate = predict(bivariate, newdata=test, type="response")
summary(pred.bivariate)
table(test$not.fully.paid, pred.bivariate > 0.5)
“`
测试功效显示,测试会合最大大概的贷款违约率约为0.4266。
“`{r}
ROCRpred = prediction(pred.bivariate, test$not.fully.paid)
as.numeric(performance(ROCRpred, "auc")@y.values)
“`
模子AUC:0.624
####第四步: COMPUTING THE PROFITABILITY OF AN INVESTMENT
“`{r}
test$profit = exp(test$int.rate*3) – 1
test$profit[test$not.fully.paid == 1] = -1
test[which.max(test$profit),]
“`
####第五步:A SIMPLE INVESTMENT STRATEGY
在此处先容一个简朴的投资思想:投资者选择投资网贷P2P的时候,会在风险和收益之前寻求均衡; 所以我们的方针等于投资收益较高但风险较低的贷款;
“`{r}
highInterest=subset(test, "int.rate" >= 0.15 )
“`
分出int.rate在15%以上的贷款,
“`{r}
mean(highInterest$profit)
table(highInterest$int.rate>=0.15,highInterest$not.fully.paid)
“`
这部门int.rate较高的贷款平均收益或许在0.23,这部门int.rate较高的贷款违约率或许在0.25;
此刻我们在这些highInterest的贷款中选择风险最低的100只贷款;
“`{r}
cutoff = sort(highInterest$predicted.risk, decreasing=FALSE)[100]
selectedLoans = subset(highInterest, predicted.risk <= cutoff)
sum(selectedLoans$profit)
table(selectedLoans$not.fully.paid)
0.23 0.31
0.25 0.19
“`
通过成立投资模子,发此刻违约率仅仅提高了一点(0.19)的环境下,网贷的投资收益回报有了显著地提高;
需要提醒的是:模子预测的时间相对较短;在实际的投资中,投资者还需要思量econcomic shock等外部情况因素。
### 扩展阅读:
《来认识一下即将上市的全球最大P2P网贷公司Lending Club》,虎嗅网
http://www.huxiu.com/article/41472/1.html
《理会网贷龙头Lending Club的盈利模式》
http://news.loan.cngold.org/c/2014-12-18/c2944728.html
书籍推荐:
《逾越金融》,作者:乔治索罗斯
http://book.douban.com/subject/4244859/