一 、数据清理
检查数据质量的重要性
除了在建立模型之前需要完成数据清理,在对数据结构的探索和对模型的描述和预测过程中都需要不断检查数据质量
探索的过程中,出现任何异常情况都需要解释和处理。
比如分类变量应该注意频率特别低的类别,它可能是错误分类或者原本属于相邻类别的数据
1.缺失值处理
1.1判断缺失值的方法
sum(is.na(x)) NA的总个数
sum(complete.cases(x)) 完整观测的总个数
mice包 md.pattern()
1.2处理缺失值的方法
删除:删除观测样本,删除变量,使用原始完整数据,改变权重
改变权重:通过对完整数据按照不同的权重进行加权,可以降低删除数据带来的偏差
插补法:均值插补,回归插补,二阶插补,热平台,冷平台,抽样填补
抽样填补:从总体中随机抽取某个样本代替缺失样本
sub=which(is.na(nhanes2[,4]==TRUE))
dataTE=nhanes2[-sub,]
dataTR=nhanes2[sub,]
dataTE[,4]=sample(dataTR[,4],length(dataTE[,4],replace=T)
均值插补:计算非缺失值的均值。亦可使用中位数,四分位数等
回归插补:将需要插补的变量作为因变量,其他相关变量作为自变量通过回归模型预测缺失值
热平台插补:在非缺失数据集中找到一个与缺失值所在样本类似的样本,利用其中的观测值对缺失值进行插补
冷平台插补:按照某些变量将数据分层,在层内对缺失值进行均值插补
2.噪声数据处理
2.1噪声检测
outliers包 outlier(x,opposite=F,logical=F) 寻找数据集中与其他观测值及均值差距最大的点作为异常值。opposite=T给出最远值的相反值;logical=T将这些点显示为TRUE
离群点检测也可以通过聚类进行。落在“簇”集合外的值被视为离群点
2.2噪声处理
噪声数据处理有:分箱,回归,计算机检查和人工检查结合等
分箱:对数据排序,利用数据近邻来光滑有序数据值的一种局部光滑方法。 如箱均值光滑,就是指使用均值来代替箱中的值。
等宽箱均值光滑方法:
x=rnorm(12)
x=sort(x)
dim(x) =c(3,4)
x[1,]=apply(x,1,mean)[1]
x[2,]=apply(x,1,mean)[2]
x[3,]=apply(x,1,mean)[3]
回归:通过函数拟合对数据进行光滑处理
3.数据不一致处理
vapply(x,FUN,FUN.VALUE,...,USE.NAMES=T)
FUN.VALUE可以直接对返回值类型进行检查
4.数据集成:将多个数据源中的数据合并,存放到一个一致的数据存储中。
数据集属性的“匹配”
数据集冗余检测:对于定性数据,可以使用卡方检验;对于定量数据,可以使用相关系数和协方差
卡方检验chisq.test(x)
协方差 cor(x)
5.数据变换
1.光滑:去掉数据中的噪声,通过分箱,回归和聚类等技术实现
2.属性构造:构造新属性,简单的数据变换即可
3.聚集:对数据进行汇总
4.规范化:把数据按比例缩放,使之落入一个小区间,比如标准化
5.离散化:数值属性的原始值用区间标签或概念标签替换
6.由标称数据产生概念分层
6.数据规约:为了压缩数据量,原数据可以用数据集的规约来表述。可以通过维归约,数值规约等方式实现
维归约:减少属性。AIC原则,LASSO