标准化方法(Normalization Method)
数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。一般常用的有以下几种方法。(1) 最小-最大规范化对原始数据进行线性变换。假定MaxA与MinA分别表示属性A的最大与最小值。最小最大规范化通过计算将属性A的值映射到区间[a, b]上的v。一般来说,将最小-最大规范化在用于信用指标数据上,常用的有以下两种函数形式:变换到[0,1],
变换到[-1,1],
(2) z-score规范化也称零-均值规范化。变换范围有正有负。
(3) 十进制规范化。十进制规范化变换后使最大值的绝对值小于1。
(4)Box-Cox变换。线性回归时,当残差项不满足正态分布或等方差假定时,可对被解释变量做Box-Cox变换。
(5)对数函数转换,表达式如下:
y=log10(x)说明:以10为底的对数函数转换。(6)反余切函数转换,表达式如下:y=atan(x)*2/PI## 数据变换:对数据进行规范化
# (1)最大值-最小值规范化install.packages("caret")library(caret)# 将Loan数据中的loan_amnt转化到[0,1]help(preProcess)#先指定处理方法trans = preProcess(select(Loan, loan_amnt), method = c("range"))trans#然后使用predict函数完成处理transformed = predict(trans, select(Loan,loan_amnt))head(transformed)range(transformed)# (2)标准化(x-mean(x))/var(x)
trans = preProcess(select(Loan, loan_amnt), method = c("center","scale"))transtransformed = predict(trans, select(Loan,loan_amnt))head(transformed)mean(transformed[[1]]);var(transformed[[1]])# (3)十进制正规化max(abs(loan$loan_amnt))# (4)Box-Cox变换install.packages("e1071")library(e1071)#计算偏度,发现是右偏skewness(Loan$annual_inc,na.rm = T)#选择Loan数据集中的数值型变量Loan.num = select(Loan, loan_amnt,funded_amnt,funded_amnt_inv,installment,annual_inc,dti,total_pymnt)# 对每列数值型变量都计算其偏度系数apply(Loan.num,2,skewness,na.rm = T)# 为了直方图显示效果,剔除年收入超过40万美元的客户Loan.anin = Loan$annual_inc[-which(Loan$annual_inc>400000)]library(caret)# 使用样本数据估计λ,估计值为-0.1,但修正后的λ估计值为0BoxCoxTrans(Loan$annual_inc,na.rm = T)par(mfrow=c(1,2))hist(Loan.anin,xlab="natural units of annual_inc", main="Histogram: Original Data")# 估计的λ为0,使用log变换hist(log(Loan$annual_inc), xlab = "log units of annual_inc", main = "Histogram: after log transformation" )