数据库基础:为什么要进行预处理数据

当今现实世界的数据库极易受噪声、丢失数据和不一致数据的侵扰,因为数据库太大(常常多达数千兆字节,甚至更多),并且多半来自多个异构数据源。低质量的数据将导致低质量的挖掘结果。“如何预处理数据提高数据质量,从而提高挖掘结果的质量?如何预处理数据,使得挖掘过程更加有效、更加容易?”

有大量数据预处理技术。数据清理可以用来去掉数据中的噪声,纠正不一致。数据集成将数据由多个源合并成一致的数据存储,如数据仓库。也可以使用数据变换,如规范化。例如,规范化可以提高涉及距离度量的挖掘算法的准确率和有效性。数据归约可以通过聚集、删除冗余特征或聚类等方法来减小数据规模。这些技术不是互斥的,可以一起使用。例如,数据清理可能涉及纠正错误数据的变换,如将日期字段变换成共同的格式。这些数据处理技术在挖掘之前使用,可以显著地提高挖掘模式的总体质量和/或减少实际挖掘所需要的时间。

介绍数据预处理的基本概念,介绍作为数据预处理基础的描述性数据汇总。描述性数据汇总帮助我们研究数据的一般特征、识别噪声或离群点,对成功的数据清理和数据集成很有用。数据预处理的方法组织如下:数据清理、数据集成与变换和数据归约。概念分层可以用作数据归约的一种替换形式,其中低层数据(如年龄的原始值)用高层概念(如青年、中年或老年)替换。这种形式的数据归约,在那里我们讨论使用数据离散化技术,由数值数据自动地产生概念分层。

为什么要预处理数据

想像你是AllElectronics的经理,负责分析涉及你部门的公司销售数据。你立即着手进行这项工作,仔细地审查公司的数据库和数据仓库,识别并选择应当包含在分析中的属性或维,如item, price和units_sold。啊!你注意到许多元组在一些属性上没有值。为了进行分析,希望知道每种购进的商品是否作了销售广告,但是发现这些信息没有记录下来。此外,你的数据库系统用户已经报告某些事务记录中的一些错误、不寻常的值和不一致性。换言之,你希望

使用数据挖掘技术分析的数据是不完整的(缺少属性值或某些感兴趣的属性,或仅包含聚集数据),含噪声的(包含错误或存在偏离期望的离群值),并且是不一致的(例如,用于商品分类的部门编码存在差异)。欢迎来到现实世界!

存在不完整的、含噪声的和不一致的数据是现实世界大型的数据库或数据仓库的共同特点。不完整数据的出现可能有多种原因。有些感兴趣的属性,如销售事务数据中顾客的信息,并非总是可用的。其他数据没有包含在内只是因为输入时认为是不重要的。相关数据没有记录可能是由于理解错误,或者因为设备故障。与其他记录不一致的数据可能已经删除。此外,记录历史或修改的数据可能被忽略。缺失的数据,特别是某些属性上缺少值的元组可能需要推导出来。

数据含噪声(具有不正确的属性值)可能有多种原因。收集数据的设备可能出故障;人或计算机的错误可能在数据输入时出现;数据传输中的错误也可能出现。这些可能是由于技术的限制,如用于数据传输同步的缓冲区大小的限制。不正确的数据也可能是由命名约定或所用的数据代码不一致,或输入字段(如日期)的格式不一致而导致的。重复元组也需要数据清理。

数据清理例程通过填写缺失的值、光滑噪声数据、识别或删除离群点并解决不一致性来“清理”数据。如果用户认为数据是脏的,则他们不会相信这些数据的挖掘结果。此外,脏数据造成挖掘过程陷入混乱,导致不可靠的输出。尽管大部分挖掘例程都有一些过程处理不完整或噪声数据,但它们并非总是鲁棒的。相反,它们着重于避免建模函数过分拟合数据。因此,一个有用的预处理步骤是使用一些清理例程处理数据。2.3节讨论清理数据的方法。回到你在AllElectronics的任务,假定在分析中包含来自多个数据源的数据。这涉及集成48 多个数据库、数据立方体或文件,即数据集成。代表同一概念的属性在不同的数据库中可能有不同的名字,这将导致不一致性和冗余。例如,顾客标识属性在一个数据库中可能是customer_id,而在另一个中为cust_id。命名的不一致还可能出现在属性值中。例如,同一个人的名字可能在一个数据库中登记为“Bill”,在第二个数据库中登记为“William”,而在第三个数据库中登记为“B”。此外,你可能会觉察到,有些属性可能是由其他属性(例如年收入)导出的。含大量冗余数据可能降低知识发现过程的性能或使之陷入混乱。显然,除数据清理之外,在数据集成时必须采取步骤,避免数据冗余。通常,在为数据仓库准备数据时,数据清理和集成将作为预处理步骤进行。还可以再次进行数据清理,检测和删去可能由集成导致的冗余。

时间: 2024-10-30 23:31:40

数据库基础:为什么要进行预处理数据的相关文章

系统架构-做为一个没有任何编程基础菜鸟,怎样实现数据的采集,监测分析,然后存入数据库?

问题描述 做为一个没有任何编程基础菜鸟,怎样实现数据的采集,监测分析,然后存入数据库? 由于导师想让做一个 旋转机械的振动状态监测与故障诊断系统 出来,做为一个没有任何编程基础的菜鸟,怎样实现数据的采集,监测分析,然后存入数据库? 由于是零基础,请问大家我需要学习哪方面的东西? 导师说 让用C++Builder进行开发,具体需要重点掌握CB里的哪些东西啊?非常感谢! 解决方案 掌握 C++Builder,这个只是工具.如果对其它的开发工具有兴趣,也可以考虑. C++Builder 现在用的人比较

《数据库基础及实践技术——SQL Server 2008》一1.3 数据和数据模型

1.3 数据和数据模型 本节介绍如何理解现实世界.如何将之"信息化"以及如何描述现实世界的信息结构等内容. 1.3.1 数据和数据模型概述 数据 为了了解世界.研究世界和交流信息,人们需要描述各种事物.用自然语言来描述虽然很直接,但过于烦琐,不便于形式化,而且也不利于用计算机来表达.为此,人们常常只抽取那些感兴趣的事物特征或属性,作为事物的描述.例如,一个学生可以用如下记录来描述:(张三,9912101,1981,计算机,应用软件),单凭这样一条记录人们一般不容易知道其准确含义,但如果

《数据库技术原理与应用教程(第2版)》——第一篇 基础篇 第1章 数据、数据管理与数据处理 1.1 概述

第一篇 基础篇 数据库技术是计算机学科中的一门重要分支,它已有五十余年历史并已成为一门完整的学科,其主要内容包括基础理论.基本操作及开发应用等. 数据库技术的基础理论部分是构成该学科的基石,它给出了该学科的抽象的.全局的研究结果并对整个学科起指导性作用. 在本书中,基础部分由两方面内容组成,它们是数据库技术的一般性理论和关系数据库技术的理论. 1.数据库技术的一般性理论 第1~3章介绍数据库技术的一般性理论.其中第1章介绍有关数据.数据管理与数据处理的一般性概念:第2章介绍数据库技术中的基础知识

[转]李战大师-悟透delphi 第十一章 面向对象数据库基础

第十一章  面向对象数据库基础 第二节 数据对象的标识我们在关系数据库的设计和开发中,可能经常需要一些唯一的编号或标识,用来作为关键字,以区别每一个不同的人,每一张不同的单据,每一次不同的信息登记,等等.并且,我们也一直采用这些编号和标识,作为关系的连接字段.但是,要保证编号或标识是完全唯一的,却是一个不大不小的难题.下面我们将详细讨论这一问题,并希望能从另一个高度来理解这一问题.不过,我们首先来看看问题是怎样由来的.现在,给大家讲一个故事. 从前,在北京降生了一个漂亮的小女孩.接生的李阿姨说,

《数据库基础及实践技术——SQL Server 2008》一1.2 数据库系统与数据库管理系统

1.2 数据库系统与数据库管理系统 本节介绍数据库系统的组成以及数据库管理系统的功能. 1.2.1 数据库系统的组成 数据库管理系统是一个系统软件,如SQL Server.Oracle.DB2等都是著名的数据库管理系统软件,但在有了数据库管理系统这个软件之后,并不意味着已经具有了用数据库管理系统管理数据的优点,必须在这个软件基础之上进行一些必要的工作,以把数据库管理系统提供的功能发挥出来.首先应该利用这个系统存放用户自己的数据,让数据库管理系统帮助我们把这些数据管理起来,其次还应有对这些数据进行

《SAP入门经典(第4版•修订版)》——3.4 SAP数据库基础知识

3.4 SAP数据库基础知识 SAP入门经典(第4版•修订版) 掌握了硬件和操作系统的知识细节之后,现在我们可以把注意力转到在下层支持SAP业务应用的数据库了,看看它所承担的角色.在选择数据库时,还应像选择硬件平台和OS时一样慎重挑选.鉴于平台和SAP版本限制,您可能只有一两种数据库可选(这就凸显了把SAP基础设施作为一个整体计算平台加以考虑的重要性).主流的数据库SAP均能支持,包括Microsoft SQL Server(最终将可以搭配SQL Azure使用).IBM DB2和多种Oracl

《数据库基础及实践技术——SQL Server 2008》一第1章 关系数据库基础

第1章 关系数据库基础 随着信息管理水平的不断提高,计算机应用范围的日益广泛,数据库技术正逐步渗透到我们日常生活中的方方面面.例如,银行对账户.信贷业务的管理,超市对货物销售.进货情况的管理,飞机.火车订票系统,图书馆对书籍及书籍借阅的管理等,无一不使用了数据库技术.人们在日常生活中有时可能不知不觉地用到了数据库.有了准确的数据,还需要对数据进行科学的管理,使之能服务于人.数据库就是研究如何对数据进行科学的管理以便为人们提供可共享的.安全的.可靠的数据的技术.本章主要介绍使用数据库技术管理数据的

新手想小试牛刀,已经建立好mysql数据库表添加了几行数据.现在想通过java web吧mysql里的几条数据显示到网页上!

问题描述 本人纯新手,希望大家多多包涵已经在本地创建了mysql数据库,自己写了几条数据.我的想法是通过本地网页上的随便一个按钮,点过以后就显示本地mysql已储存的数据.上学的时候学过java,PHP和其他什么的我没见过,所以请大家告诉我java的实现方法和步骤.已经安装好JDKTomcatMySQLEclipse(JEE版)在百度里看别人在mysql里随便写几个测试数据后,然后又写了个.JSP就可以再网页里显示数据了,看着简单,但是搬运修改下后自己的机器上跑不了.... 解决方案 解决方案二

让MySQL数据库跑的更快 为数据减肥_Mysql

在数据库优化工作中,使数据尽可能的小,使表在硬盘上占据的空间尽可能的小,这是最常用.也是最有效的手段之一.因为缩小数据,相对来说可以提高硬盘的读写速度,并且在查询过程中小表的内容处理时所占用的系统资源比较少.同理,如果在比较小的列上设置索引的话,其索引所占用的资源也会比较少.那么数据库管理员该如何给自己的数据减肥呢?对此笔者有如下几个建议. 建议一:空值并不一定不占用空间 在这里笔者先给大家扫盲一下.有些数据库管理员,认为空值不会占用系统资源,其实这是一个错误的认识.他们在数据库设计时,不喜欢将