今天的内容是数据的集成和变换,在做数据分析和挖掘时,百分之八十的时间可能要花在数据预处理部分,准备好相应的数据。数据集成是将多个数据源的数据整合在一起,数据集成建立在对业务的理解之上;数据变换主要是对数据进行规范化处理,转换成适当的形式。
数据集成
数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。
在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,要考虑实体识别问题和属性冗余问题,从而将源数据在最低层上加以转换、提炼和集成。
什么是现实世界的实体,这里用到的是E-R(Entity-Relationship Model)模型,一种数据建模的概念。简单的来说,如果我们通过要数据建模解决现实的问题,那么数据要与现实中的事件或者物体相对应,数据记录了实体的名称,属性以及实体间的联系,数据不仅仅是字面含义,含有其在现实世界中的映射,这个概念了解即可。
实体识别
比如对于一件物品,它可能被记录在表A采购单中和表B销售单中,此时我们要整合两张表进行利润分析,此时我们通过选择某一列也叫字段把两者表共有的实体连接起来,首先要识别出实体;
实体识别是指从不同数据源识别出现实世界的实体,它的任务是统一不同源数据的矛盾之处。实体识别的常见形式如下。
(1)同名异义
如数据源A中的属性ID和数据源B中的属性ID分别描述的是物品编号和订单编号,即描述的是不同的实体。
(2)异名同义
数据源A中的sales_dt和数据源B中的sales_date都是描述销售日期的, 如:A.sales_dt=B.sales_date。
(3)单位不统一
描述同一个实体分别用的是国际单位和中国传统的计量单位。
检测和解决这些冲突就是实体识别的任务。
冗余属性识别
得到分析的实体之后,我们要对其属性进行分析,比如物品的金额、尺寸、重量等。数据集成实体的属性时的经常会出现数据冗余,如:
1)同一属性多次出现;
2)同一属性命名不一致导致重复。
仔细整合不同源数据能减少甚至避免数据冗余与不一致,从而提高数据挖掘的速度和质量。对于冗余属性要先分析,检测到后再将其删除。
如果对于属性是否冗余不够确定,有些冗余属性可以用相关分析检测。给定两个数值型的属性A和B,根据其属性值,用相关系数度量一个属性在多大程度上蕴含另一个属性,相关性分析这里不做介绍。
数据集成的过程ETL
什么是ETL呢? ETL是英文Extract、Transform和Load的缩写,包括了数据抽取、转换、加载三个过程。抽取是将数据从已有的数据源中提取出来,转换是对原始数据进行处理,例如将表输入1和 表输入2 进行连接形成一张新的表(加载)。
ETL一般是对数据库中的表进行处理,使用ETL工具,对数据进行集成后再存放在数据库中,存放到数据仓库直接用来数据分析和挖掘。
典型的商业ETL工具有: Informatica PowerCenter、IBM InfoSphere DataStage、Oracle Data Integrator、Microsoft SQL Server Integration Services等,每种数据库的提供商会同时配有ETL的工具,但