简述数据预处理的内容是:
数据预处理(datapreprocessing)是指在主要的处理以前对数据进行的一些处理。如对大部分地球物理面积性观测数据在进行转换或增强处理之前,首先将不规则分布的测网经过插值转换为规则网的处理,以利于计算机的运算。另外,对于一些剖面测量数据,如地震资料预处理有垂直叠加、重排、加道头、编辑、重新取样、多路编辑等。现实世界中数据大体上都是不完整,不一致的 脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。
数据预处理的流程是什么
数据预处理的常用流程为:去除唯一属性、处理缺失值、属性编码、数据标准化正则化、特征选择、主成分分析。
去除唯一属性
唯一属性通常是一些id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除这些属性即可。
处理缺失值
缺失值处理的三种方法:直接使用含有缺失值的特征;删除含有缺失值的特征(该方法在包含缺失值的属性含有大量缺失值而仅仅包含极少量有效值时是有效的);缺失值补全。
常见的缺失值补全方法:均值插补、同类均值插补、建模预测、高维映射、多重插补、极大似然估计、压缩感知和矩阵补全。
(1)均值插补
如果样本属性的距离是可度量的,则使用该属性有效值的平均值来插补缺失的值;
如果的距离是不可度量的,则使用该属性有效值的众数来插补缺失的值。如果使用众数插补,出现数据倾斜会造成什么影响?
(2)同类均值插补
首先将样本进行分类,然后以该类中样本的均值来插补缺失值。
(3)建模预测
将缺失的属性作为预测目标来预测,将数据集按照是否含有特定属性的缺失值分为两类,利用现有的机器学习算法对待预测数据集的缺失值进行预测。
该方法的根本的缺陷是如果其他属性和缺失属性无关,则预测的结果毫无意义;但是若预测结果相当准确,则说明这个缺失属性是没必要纳入数据集中的;一般的情况是介于两者之间。
(4)高维映射
将属性映射到高维空间,采用独热码编码(one-hot)技术。将包含K个离散取值范围的属性值扩展为K+1个属性值,若该属性值缺失,则扩展后的第K+1个属性值置为1。
这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值;缺点是计算量大大提升,且只有在样本量非常大的时候效果才好。
(5)多重插补(MultipleImputation,MI)
多重插补认为待插补的值是随机的,实践上通常是估计出待插补的值,再加上不同的噪声,形成多组可选插补值,根据某种选择依据,选取最合适的插补值。
(6)压缩感知和矩阵补全
(7)手动插补
插补处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实。在许多情况下,根据对所在领域的理解,手动对缺失值进行插补的效果会更好。
数据预处理
在数据挖掘中,海量的原始数据中存在大量不完整(有缺失值)、不一致、有异常的数据,会严重影响到数据挖掘建模的执行效果,甚至会导致挖掘结果的偏差,进而数据清洗就变得尤为重要。在数据清洗完成后接着甚至同时进行数据集成、变换、规约等一系列的处理,而整个过程称之为 数据预处理 。在整个数据挖掘过程中,数据预处理工作大致占据整个过程的 60% 。
一般来说,数据预处理的主要包括如下内容: 数据清洗、数据集成、数据变换、数据规约。
接下来的内容,我们也是从这几方面阐述。
常见的缺失值处理方法: 删除法、替换法、插补法等
(1)、删除法: 最简单的缺失值处理方法。从不同角度进行数据处理划分:
<code>
缺失值的处理
inputfile$date=as.numeric(inputfile$date)#将日期转换成数值型变量
sub=which(is.na(inputfile$sales))#识别缺失值所在行数
inputfile1=inputfile[-sub,]#将数据集分成完整数据和缺失数据两部分
inputfile2=inputfile[sub,]
行删除法处理缺失,结果转存
result1=inputfile1
</code>
(2)、替换法
一般根据属性将变量分:数值型和非数值型
在数据挖掘过程中,可能会存在数据分布在不同的数据源中,而这个时候需要将多个数据源合并存放在一个一致的数据存储(如数据仓库),整个过程称之为 数据集成 。
【
数据仓库:
关于数据仓库构思
漫谈数据仓库之维度建模
漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
】
在R中,通过将存储在两个数据框中的数据以关键字为依据,以行为单位做列向合并,直接通过merge()函数完成。
merge(数据框1,数据框2,by="关键字"),而合并后的新数据自动按照关键字取值大小升序排列。不过在数据集成过程中存在表达形式不一样,导致不能直接完成匹配,就需要我们进行加以转换、提炼、集成等操作。具体从如下几方面:
(1)、实体识别
从不同数据源识别出现实世界的实体,来完成统一不同源的数据矛盾之处。
实体识别承担着检测和解决这些冲突的任务
(2)、冗余属性识别
数据变换主要对数据进行规范化处理、连续变量的离散化以及属性属性的构造,将数据转换成“适当的”形式,来满足挖掘任务及算法的需要。
(1)、简单函数变换
对原始数据进行某些数学函数变换,常见平方、开方、取对数、差分运算等等
主要来完成不具有正态分布变换服从正态分布;非平稳序列变为平稳序列等等
(2)、数据规范化
为了清除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定区域,便于进行综合分析。
常见方法如下:
<code>
读取数据
data=read.csv('./data/normalization_data.csv',he=F)
最小-最大规范化
b1=(data[,1]-min(data[,1]))/(max(data[,1])-min(data[,1]))
b2=(data[,2]-min(data[,2]))/(max(data[,2])-min(data[,2]))
b3=(data[,3]-min(data[,3]))/(max(data[,3])-min(data[,3]))
b4=(data[,4]-min(data[,4]))/(max(data[,4])-min(data[,4]))
data_scatter=cbind(b1,b2,b3,b4)
零-均值规范化
data_zscore=scale(data)
小数定标规范化
i1=ceiling(log(max(abs(data[,1])),10))#小数定标的指数
c1=data[,1]/10^i1
i2=ceiling(log(max(abs(data[,2])),10))
c2=data[,2]/10^i2
i3=ceiling(log(max(abs(data[,3])),10))
c3=data[,3]/10^i3
i4=ceiling(log(max(abs(data[,4])),10))
c4=data[,4]/10^i4
data_dot=cbind(c1,c2,c3,c4)
</code>
(3)、连续属性离散化
在数据的取值范围内设定若干个离散的划分点,将取值范围划分为不同的离散化的区间,最后使用不同的符号或数值代表落在不同区间的数据值。
常见离散方法:
(4)、属性构造
利用已有的属性构造出新的属性
(5)、小波变换(本次不进行阐述)
数据规约在大数据集上产生更小的且保持原数据完整性的新数据集,提升在数据集合上进行分析和挖掘的效率。
意义如下: