评分卡模型开发--数据集准备

转自:https://cloud.tencent.com/developer/article/1016333

在缺失值和处理完成后,我们就得到了可用作信用风险评级模型开发的样本总体。通常为了验证评级模型的区分能力和预测准确性,我们需要将样本总体分为样本集和测试集,这种分类方法被称为样本抽样。常用的样本抽样方法包括简单随机抽样、分层抽样和整群抽样三种。 简单随机抽样:

smp1<-sample(nrow(GermanCredit),10,replace=F)

样本集可表示为:

train_data=GermanCredit[-smp1,]
test_data=GermanCredit[smp1,]

分层抽样:在R中,使用strata()函数来实现上述的分成抽样方法:

strata(data,stratanames=NULL,size,method=c(“srswor”,”srswr”,”poisson”,”systematic”), pik,description=F)

其中,data即为待抽样数据集;stratanames为分层所依据的变量名称;size为每层中将要抽出的样本数,其顺序应当与数据集中该变量各水平出现的顺序一致,且在使用该函数前,应当首先对数据集按照该变量进行升序排序;method参数用于选择列示的4中2抽样方法,分别为无放回、有放回、泊松、系统抽样,默认去srswor(无放回);pik用于设置各层中各样本的抽样概率;description用于选择是否输出含有各层基本信息的结果。 我们假设按照GermanCredit数据集中的housing属性进行分层抽样,每层抽取5个样本,代码如下:

#分层抽样
library(sampling)
x<-GermanCredit[order(GermanCredit[,"housing"]),]
sub_set<-strata(x,stratanames = "housing",size = c(5,5,5),method = "srswor")
result<-getdata(GermanCredit,sub_set)

查看抽样结果可见,抽样数据集的最后多了3列内容,分别是ID_unit表示抽样样本在原样本总体中的ID,Prob表示样本在各层内的抽样概率,Stratum表示抽样样本属于哪一层。 第三种抽样方法整群抽样,是指以样本总体中的某个变量分群为依据,对样本进行随机抽样的方法。在考虑使用整群抽样时,一般要求各群对数据总体有较好的代表性,即群内各样本的差异较大,而群间的差异较小。因此,当群间差异较大时,整群抽样往往具有样本分布面不广、样本对样本总体的代表性相对较差等缺点,整群抽样方法通常情况下应用较少。 在R中,我们使用cluster()函数实现整群抽样,其基本格式为:

cluster(data,clustername,size,method=c(“srswor”,”srswr”,”poisson”,”systematic”), pik,description=F)

该函数的参数中,除了clustername和size略有不同外,其他参数都与strata函数完全相同。clustername是指用来划分群的变量名称,size为一个整数,表示需要抽取的群数。代码如下:

> sub_cluster<-cluster(GermanCredit,clustername = "housing",size = 1,method = "srswor",description = T)
Number of selected clusters: 1 
Number of units in the population and number of selected units: 1000 713 
> cluster_data<-getdata(GermanCredit,sub_cluster)
> View(cluster_data)

根据本文采用的样本总体GermanCredit数据较少的特点,在进行个人主体信用风险评级模型开发时,我们采用基于无放回随机抽样的五折交叉验证的方法来进行模型开发和验证。所谓五折交叉验证是指我们将样本总体随机分为5份,每次都是取其中的4份做模型开发,另外一份做模型验证,连续这样做5次,并对这5次的模型验证的统计指标取平均值,即为模型的最终验证结果。交叉验证也是在样本总体较少时,经常采用的模型开发和验证方法,这种方法得到的评级模型可较好的提高模型的区分能力、预测准确性和稳定性。抽样代码如下:

train_kfold<-sample(nrow(GermanCredit),800,replace=F)
train_kfolddata<-GermanCredit[train_kfold,]
test_kfolddata<-GermanCredit[-train_kfold,]

在接下来的讲解中,我们均以train_kfolddata作为样本集来用作模型开发,以test_kfolddata作为测试集用作模型验证。五折交叉验证时,我们只需要重复上述步骤5次,并选出稳定性和区分能力最优的模型即为我们最终开发的信用风险评级模型。

你可能感兴趣的:(数据挖掘)