银行客户流失预测交叉验证[关闭]
Posted
技术标签:
【中文标题】银行客户流失预测交叉验证[关闭]【英文标题】:Bank customer churn prediction cross-validation [closed] 【发布时间】:2021-04-24 18:39:08 【问题描述】:给定反映客户特征的银行客户样本以及银行是否继续与他们合作(流失)。样本涉及 10,000 名客户,而文件“Train.Data”和“Test.Data”包含我们需要的信息。
我的数据:
火车数据:
> dput(head(Train.Data))
structure(list(datetime_utc = c("2010-01-04 00:00:00", "2010-01-04 01:00:00",
"2010-01-04 02:00:00", "2010-01-04 03:00:00", "2010-01-04 04:00:00",
"2010-01-04 05:00:00"), Generation_BE = c(13143.7, 13143.7, 13143.7,
13143.7, 13143.7, 13143.7), Generation_FR = c(63599, 62212, 62918,
62613, 62432, 63411), Prices.BE = c(37.15, 33.47, 28, 21.29,
16.92, 28), holidaysBE = c(0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(NA,
6L), class = "data.frame")
测试数据:
> dput(head(Test.Data))
structure(list(datetime_utc = c("2016-10-24 00:00:00", "2016-10-24 01:00:00",
"2016-10-24 02:00:00", "2016-10-24 03:00:00", "2016-10-24 04:00:00",
"2016-10-24 05:00:00"), Generation_BE = c(9615.7075, 9626.865,
9648.0025, 9668.42, 9681.805, 9688.425), Generation_FR = c(45605L,
44629L, 44073L, 44359L, 44056L, 44799L), Prices.BE = c(44.6,
40.92, 37.39, 36.4, 33.01, 37.89), holidaysBE = c(0L, 0L, 0L,
0L, 0L, 0L)), row.names = c(NA, 6L), class = "data.frame")
“Train.Data”必须用于客户流失分析和模型训练,并且 “Test.Data”最初被认为是未知的,只能用于 对早期开发的模型进行最终评估。
我必须使用分类方法来预测流失率。我决定建立一个分类树。 我面临的问题是我可以构建一个分类树,但我不能添加交叉验证来衡量我的模型的准确性。我需要在交叉验证中构建一个 for 循环!
欢迎提出任何建议。
【问题讨论】:
【参考方案1】:我已经使用循环为您绘制了一个代码。由于您只能使用训练数据,您可以将其拆分为训练集和测试集,并将结果存储在向量中。在这里,我将使用逻辑回归,但其他学习技术的过程是相同的。我使用 AUROC 来评估性能,但如果需要,您可以更改为其他指标。结果将保存在度量的向量中,模型的结果将保存在列表中。这里是代码,请根据您的数据完成因变量:
library(ROCR)
#Vectors
auroc <- c()
models <- list()
#Loop
for (i in c(1:10))
print(i)
d = sort(sample(nrow(Train.Data), nrow(Train.Data)*0.6))
train<-Train.Data[d,]
test<-Train.Data[-d,]
# PASOS SUCESIVOS
Model <- glm(DependentVarHere~.,data=train,family=binomial)
test$score<-predict(Model,type='response',test)
pred<-prediction(test$score,test$GoodBad)
discr=performance(pred,"auc")
AUROC=as.numeric(discr@y.values)
#Save auroc
auroc[i] <- AUROC
#Save model
models[[i]] <- Model
#Print values
auroc
#Print mode
models[which(auroc==max(auroc))]
【讨论】:
以上是关于银行客户流失预测交叉验证[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 scikit-learn 中使用交叉验证获得预测概率