建模的时候,用到的是连续变量,对于本身是连续变量的变量,可通过主成分以及变量聚类来减少变量数量,对于本身是分类变量的变量,可通过重编码或WOE转换以减少建模的难度,不要把变量的压缩都放到建模后期,那样很耗时。
###重编码
查看所有变量出现的次数,将那些出现次数过少的,例如0,1次的归为一类,以减少分类变量的数量。(这些数量为0的出现,在取后面WOE转换取对数的时候会出问题。)
accepts <- read.csv("accepts.csv")
table(accepts$vehicle_make,accepts$bad_ind)
#与目标变量求交叉表,查看数据是否存在似不完整性问题
library(sqldf)
freq<-data.frame(table(accepts$vehicle_make))
names(freq)<-c("vehicle_make","freq")
accepts1<-sqldf("select a.*,b.freq
from accepts as a
left join freq as b
on a.vehicle_make=b.vehicle_make")
accepts1$vehicle_make<-as.character(accepts1$vehicle_make)
accepts1[accepts1$freq<10,]$vehicle_make<-"other"
#将出现次数低于10次的都归为一类
###WOE转换-证据权重转换
重编码可减少水平数量,但是