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