数据预处理
数据预处理的目标是改善数据挖掘分析工作,减少时间,降低成本和提高质量。
数据预处理是选择分析所需要的数据对象和属性以及创建/改变属性的过程。方法主要包括:聚集,抽样,维归约,特征子集选择,特征创建,离散化和二元化,变量变换。
聚集(Aggregation):将两个或多个对象合并成单个对象。比如通过合并每种商品的销售量和销售额,把沃尔玛一天内所有商品销售的成千上百条数据聚集成一个日销售数据集。定量属性(如价格)通常通过求和或求平均值进行聚集,定性属性(如商品)可以忽略或汇总成在一个商店销售的所有商品的集合。聚集的动机有多种,数据规约生成的较小数据集需要较少的内存和处理时间,通过高层而不是底层数据视图,聚集起到了范围或标度转化的作用。
抽样(sampling):是一种选择数据对象子集进行分析的常用方法。抽样的样本近似的具有与原数据集相同的(感兴趣的)性质,如对均值感兴趣,则样本应和原数据集均值相似。
抽样方法:
1. 简单随机抽样:选取任何对象的概率相等。分为有放回,和无放回两种方式。
2. 分层抽样:按预先划分好的组进行抽样,从每组中抽取对象的数量正比于改组的大小。
3. 渐进抽样:从一个小样本开始,然后逐渐增加样本容量直到得到足够容量的样本。
维规约:把高维数据降为低维数据,可以删除不相关的特征并降低噪声,提高数据挖掘算法的效果。维规约最常用的的方法是使用线性代数技术,将数据由高维空间投影到低维空间,特别是对于连续数据。主成分分析是一种用于连续属性的线性代数技术,它找出新的属性(主成分),这些属性是原属性的线性组合,是相互正交的,并捕获了数据的最大变差。
特征子集选择:降低维度的另一种方法是仅使用特征的一个子集。特征选择的理想方法是:将所有可能的特征子集作为感兴趣的数据挖掘算法的输入,然后选取产生好结果的,这种选择方法在涉及n个属性的子集多达2n个,在大部分情况下行不通。实际工作中常用三种标准的特征选择方法:
嵌入方法:特征选择作为数据挖掘算法的一部分,在数据挖掘算法运算期间,算法本身具体使用哪些属性和忽略哪些属性。
过滤方法:使用某种独立于数据挖掘任务的方法,在数据挖掘算法运行前进行特征选择。
包装方法: 将目标数据挖掘算法作为黑盒,不断迭代。
特征创建:由原来的属性创建新的属性,更有效地捕获数据集中的重要信息,新属性的数目可能比原属性少,达到归约的效果。三种创建新属性的相关方法:
特征提取:由原始数据创建新的特征集。比如对于照片的集合,在原始的像素特征基础上创建人脸轮廓的特征集用于人脸识别。
映射数据到新的空间:使用一种完全不同的视角挖掘数据可能揭示出重要和有趣的特征。比如时间序列数据,常常包含周期模式,如果含有大量周期模式并存在大量噪声,则很难检测出这些模式,可以通过对该时间序列实施傅里叶变换,将他们转成频率信息明显的表示,就能方便检测到这些模式。
特征构造:有时候有些数据集的特征包含必要的信息,但其形式不适合数据挖掘算法,则需要用这些特征构造新特征。比如拿质量和体积构造密度。
离散化和二元化:有些数据挖掘算法要求数据是分类属性或二元属性,则需要对连续属性进行离散化或二元化。离散化就是按区间分割连续属性,二元化就是按照某一标准判断数据为True/False 。
变量变换:是指用于变量的所有值的变换。对于每个对象,变换都作用于该对象的所有属性,变换方法包括求绝对值,统一除以10,100等等,把数据变换到可以方便进行计算的区间。