数据库基础分析为什么要进行预处理数据 收藏
做数据预处理很重要,但是如何做好数据预处理似乎是件更困难的事。。。。。
-----------------------------------------------------------------------------------------------------------------------
当今现实世界的数据库极易受噪声、丢失数据和不一致数据的侵扰,因为数据库太大(常常多达数千兆字节,甚至更多),并且多半来自多个异构数据源。低质量的数据将导致低质量的挖掘结果。“如何预处理数据提高数据质量,从而提高挖掘结果的质量?如何预处理数据,使得挖掘过程更加有效、更加容易?”
有大量数据预处理技术。数据清理可以用来去掉数据中的噪声,纠正不一致。数据集成将数据由多个源合并成一致的数据存储,如数据仓库。也可以使用数据变换,如规范化。例如,规范化可以提高涉及距离度量的挖掘算法的准确率和有效性。数据归约可以通过聚集、删除冗余特征或聚类等方法来减小数据规模。这些技术不是互斥的,可以一起使用。例如,数据清理可能涉及纠正错误数据的变换,如将日期字段变换成共同的格式。这些数据处理技术在挖掘之前使用,可以显著地提高挖掘模式的总体质量和/或减少实际挖掘所需要的时间。
介绍数据预处理的基本概念,介绍作为数据预处理基础的描述性数据汇总。描述性数据汇总帮助我们研究数据的一般特征、识别噪声或离群点,对成功的数据清理和数据集成很有用。数据预处理的方法组织如下:数据清理、数据集成与变换和数据归约。概念分层可以用作数据归约的一种替换形式,其中低层数据(如年龄的原始值)用高层概念(如青年、中年或老年)替换。这种形式的数据归约,在那里我们讨论使用数据离散化技术,由数值数据自动地产生概念分层。
为什么要预处理数据
想像你是AllElectronics的经理,负责分析涉及你部门的公司销售数据。你立即着手进行这项工作,仔细地审查公司的数据库和数据仓库,识别并选择应当包含在分析中的属性或维,如item, price和units_sold。啊!你注意到许多元组在一些属性上没有值。为了进行分析,希望知道每种购进的商品是否作了销售广告,但是发现这些信息没有记录下来。此外,你的数据库系统用户已经报告某些事务记录中的一些错误、不寻常的值和不一致性。换言之,你希望
使用数据挖掘技术分析的数据是不完整的(缺少属性值或某些感兴趣的属性,或仅包含聚集数据),含噪声的(包含错误或存在偏离期望的离群值),并且是不一致的(例如,用于商品分类的部门编码存在差异)。欢迎来到现实世界!
存在不完整的、含噪声的和不一致的数据是现实世界大型的数据库或数据仓库的共同特点。不完整数据的出现可能有多种原因。有些感兴趣的属性,如销售事务数据中顾客的信息,并非总是可用的。其他数据没有包含在内只是因为输入时认为是不重要的。相关数据没有记录可能是由于理解错误,或者因为设备故障。与其他记录不一致的数据可能已经删除。此外,记录历史或修改的数据可能被忽略。缺失的数据,特别是某些属性上缺少值的元组可能需要推导出来。
数据含噪声(具有不正确的属性值)可能有多种原因。收集数据的设备可能出故障;人或计算机的错误可能在数据输入时出现;数据传输中的错误也可能出现。这些可能是由于技术的限制,如用于数据传输同步的缓冲区大小的限制。不正确的数据也可能是由命名约定或所用的数据代码不一致,或输入字段(如日期)的格式不一致而导致的。重复元组也需要数据清理。
数据清理例程通过填写缺失的值、光滑噪声数据、识别或删除离群点并解决不一致性来“清理”数据。如果用户认为数据是脏的,则他们不会相信这些数据的挖掘结果。此外,脏数据造成挖掘过程陷入混乱,导致不可靠的输出。尽管大部分挖掘例程都有一些过程处理不完整或噪声数据,但它们并非总是鲁棒的。相反,它们着重于避免建模函数过分拟合数据。因此,一个有用的预处理步骤是使用一些清理例程处理数据。2.3节讨论清理数据的方法。回到你在AllElectronics的任务,假定在分析中包含来自多个数据源的数据。这涉及集成48 多个数据库、数据立方体或文件,即数据集成。代表同一概念的属性在不同的数据库中可能有不同的名字,这将导致不一致性和冗余。例如,顾客标识属性在一个数据库中可能是customer_id,而在另一个中为cust_id。命名的不一致还可能出现在属性值中。例如,同一个人的名字可能在一个数据库中登记为“Bill”,在第二个数据库中登记为“William”,而在第三个数据库中登记为“B”。此外,你可能会觉察到,有些属性可能是由其他属性(例如年收入)导出的。含大量冗余数据可能降低知识发现过程的性能或使之陷入混乱。显然,除数据清理之外,在数据集成时必须采取步骤,避免数据冗余。通常,在为数据仓库准备数据时,数据清理和集成将作为预处理步骤进行。还可以再次进行数据清理,检测和删去可能由集成导致的冗余。
回到你的数据,假设你决定要使用诸如神经网络、最近邻分类法或聚类这样的基于距离的挖掘算法进行分析。如果待分析的数据已经规范化,即按比例映射到一个特定的区间[0.0,1.0],这些方法能得到更好的结果。例如,你的顾客数据包含年龄和年薪属性。年薪属性的取值范围可能比年龄大得多。这样,如果属性未规范化,距离度量对年薪所取的权重一般要超过距离度量对年龄所取的权重。此外,分析得到每个客户区域的销售额这样的聚集信息可能是有用的。这种信息不在你的数据仓库的任何预计算的数据立方体中。你很快意识到,数据变换操作,如规范化和聚集,是导向挖掘过程成功的预处理过程。
随着你进一步考虑数据,你想知道“我选择用于分析的数据集太大了,肯定降低挖掘过程的速度。有没有办法压缩我的数据集而又不损害数据挖掘的结果?”数据归约得到数据集的简化表示,它小得多,但能够产生同样的(或几乎同样的)分析结果。有许多数据归约策略,包括数据聚集(例如建立数据立方体)、属性子集选择(例如通过相关分析去掉不相关的属性)、维度归约(例如使用诸如最小长度编码或小波等编码方案)和数值归约(例如使用聚类或参数模型等较小的表示“替换”数据)。使用概念分层泛化也可以“归约”数据。泛化用较高层的概念替换较低层的概念,例如,对于顾客位置,用region或49 province_or_state替换city。概念分层将概念组织在不同的抽象层。数据离散化是一种数据归约形式,对于从数值数据自动地产生概念分层是非常有用的。
下图总结了这里讨论的数据预处理步骤。注意,上面的分类不是互斥的。例如,冗余数据的删除既是一种数据清理形式,也是一种数据归约。
概言之,现实世界的数据一般是脏的、不完整的和不一致的。数据预处理技术可以改进神经网络和最近邻分类法在第6章介绍,聚类在第7章讨论。
数据的质量,从而有助于提高其后的挖掘过程的精度和性能。由于高质量的决策必然依赖于高质量的数据,因此数据预处理是知识发现过程的重要步骤。检测数据异常、尽早地调整数据并归约待分析的数据,将在决策过程得到高回报。
数据预处理技术可以改进数据的质量,从而有助于提高其后的挖掘过程的精度和性能。由于高质量的决策必然依赖于高质量的数据,因此数据预处理是知识发现过程的重要步骤。检测数据异常、尽早地调整数据并归约待分析的数据,将在决策过程得到高回报。
数据预处理的形式
1、数据清理
2、数据集成
3、数据变换
4、数据归约