# 背景:

Lending Club是美国最大的P2P网贷交易平台,利用网络技术直接连接了个人投资者和个人借贷者,缩短资金流通的细节,绕过传统的大银行等金融机构,使得投资者和借贷者都能得到更多实惠。对于投资者来说,可以获得更好的回报;对于借贷者来说,则可以获得相对较低的贷款利率。于此,我们就用一个简单的例子去理解如何利用逻辑回归预测在P2P网贷的投资回报。

# 数据来源:

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

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))

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

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)

Baseline模型正确率:0.8399

#### 第三步: A SMART BASELINE

Lending Club会根据对贷款风险的预测来分配贷款利率,接下来我们进一步研究int.rate变量对模型预测的影响; 建立bivariate模型,

bivariate = glm(not.fully.paid~int.rate, data=train, family="binomial")
summary(bivariate)

cor(train\$int.rate, train\$fico)

pred.bivariate = predict(bivariate, newdata=test, type="response")
summary(pred.bivariate)
table(test\$not.fully.paid, pred.bivariate > 0.5)

ROCRpred = prediction(pred.bivariate, test\$not.fully.paid)
as.numeric(performance(ROCRpred, "auc")@y.values)

#### 第四步: COMPUTING THE PROFITABILITY OF AN INVESTMENT

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

highInterest=subset(test, "int.rate" >= 0.15 )

mean(highInterest\$profit)
table(highInterest\$int.rate>=0.15,highInterest\$not.fully.paid)

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

https://courses.edx.org/asset-v1:MITx+15.071x_2a+2T2015+type@asset+block/loans.csv

《来认识一下即将上市的全球最大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/

### 推荐阅读更多精彩内容

• Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具（例如配置管理，服务发现，断路器，智...
卡卡罗2017阅读 121,016评论 16 134
• Swift 开发中的一些小的技巧 刚开始的时候, 特别好奇大厂是怎么搞的, 他们的项目长什么样子, 他们用哪些库....
CepheusSun阅读 330评论 6 7
• The bird-song is the echo of the morning light back from ...
我是呜呜阅读 140评论 0 1
• 晚饭后，跑步打篮球，儿子有一周左右的时间没去坚持。感赏儿子今天有出去了，尽管出来很晚，但出去总比没出好。 因开学以...
玫瑰铿锵阅读 67评论 0 0
• 早就知道墨西哥是仙人掌的故乡，后来查了资料发现仙人掌总共有2000多个品种，而墨西哥就有一半以上，因此墨西哥也享有...
AMIGO616阅读 757评论 3 6