数据清洗与数据集成(随笔)

一、数据清洗

数据清洗是一种消除数据里面的错误,去掉重复数据的技术。 它可以集成在ETL过程中。在从数据源建立数据仓库的过程中发挥作用,也可以直接运行在某个数据库上,数据经过清洗以后最后还是保存到原来的数据库里。

数据清洗的意义

基于准确的数据(高质量)进行分析,才有可能获得可信的分析结果,基于这些分析结果才有可能做出正确的决策,否则,在不准确的数据(包含很多错误)上进行分析,有可能导致错误的认识和决策。

Garbage in, then Garbage out

在这里插入图片描述

数据清洗的目的

数据清洗的目的就是剔除数据中的异常。

数据异常的不同类型

数据异常大致有三类

  1. 语法类异常 :实体的具体的数据的格式的错误
  2. 语义类异常:数据不能全面无重复地表示客观世界的实体
  3. 覆盖类异常:数据库中的记录集合不能完整地表示客观世界中的所有实体,数据库中的实体数量客观世界中的实体数量要少
1.语法类异常
  1. 词法错误
    1. 实际数据的结构和指定的结构不一致。
  2. 值域格式错误
    1. 实体的某个属性的取值不符合预期的值域中的某种格式。(值域是数据的所有可能取值构成的集合)
  3. 不规则的取值
    1. 对取值、单位和简称使用不统一、不规范。
2.语义类异常
  1. 违反完整性约束规则
    1. 一个元组或者几个元组不符合完整性约束规则。(实体完整性、参照完整性、用户自定义完整性)
  2. 数据中出现矛盾
    1. 一个元组的各个属性取值或者不同元组的各个属性的取值,违反了这些取值的依赖关系
  3. 数据的重复值
    1. 两个或者两个以上的元组表示同一个实体
  4. 无效元组
    1. 某些元组并没有表示客观世界的有效实体
3.覆盖类异常
  1. 值的缺失
    1. 在进行数据采集时就没有采集到相应的数据。
  2. 元组的缺失
    1. 客观世界中,存在某些实体,但是并没有在数据库中通过元组表示出来。
数据质量的评价标准
1.正确性

正确性指的是数据集里面所有正确的取值相对于所有取值的比例

  1. 完整性

    1. 完备性

      数据集里表示为一个元组实体,相对于我们构建的现实世界的所有实体的集合中所占的比例

    2. 有效性

      数据集里表示为元组的实体,有多大比例是来自现实世界的

  2. 一致性

    1. 模式符合性

      符合数据模式的元组占所有元组的比例(不符合数据模式主要是指数据的取值不在值域范围之内)

    2. 统一性

      数据集里不包含不规则性的属性占所有属性的比例。(不规则的取值指的是取值、单位和简称的使用不统一)

  3. 密度

    指的是所有元组里,各个属性上的缺失值,占所有应该存在的所有属性上的取值的比例。

2.唯一性

代表相同实体的重复元组,占数据集里所有元组的比例。

数据清洗的任务和过程

数据清洗是剔除数据里的异常,使得数据集成为现实世界的准确、没有重复的表示的过程。

数据清洗的操作
  1. 对元组及其各个属性值的格式进行调整,使之符合值域要求,使用统一的计量单位、统一的简称等
  2. 完整性约束条件的检查和实施
  3. 从已有的取值,导出缺失的值
  4. 解决元组内部和元组之间的矛盾冲突
  5. 消除、合并重复值
  6. 检测离群值,这些离群值极有可能是无效的数据
数据清洗的过程
  1. 对数据进行审计,把数据异常的类型标识出来
  2. 选择合适的方法,用于检测和剔除这些异常(定义数据清洗的工作流)
  3. 执行这个工作流
  4. 后续处理和控制阶段将检查清洗结果,把在前面步骤中没有纠正过来的错误元组,进行进一步处理
数据清洗的具体方法
  1. 数据解析

    目的是检测语法错误

  2. 数据转换

    目的是把数据从一个格式映射到另外一种格式,以适应应用程序的需要。

    在实例层面,对各个元组的各个字段的取值一般采用标准化和规范化方法,剔除数据的不规则性。

    在模式层面,模式可以理解为数据表的结构。

  3. 实施完整性的约束条件

    目的是保证对数据集进行修改,包括新增、删除、修改元组以后,数据集仍然满足一系列的完整性约束条件。

    两种完整性约束条件策略

    事前控制:完整性约束条件检查

    补救策略:完整性约束条件维护

  4. 重复数据消除

    重复数据消除也称为记录连接

    目的是把数据中的重复元组给剔除掉,与数据集成过程中的重复数据消除相似,只不过数据集成中的重复数据消除是处理来自多个数据源的数据

  5. 一些统计方法

    统计方法可以用于对数据进行审计,甚至可以对数据中的异常进行纠正。

二、数据集成

数据集成是从多个数据源建立统一的数据视图的一种技术

数据集成是指把数据从多个数据源整合在一起,提供一个观察这些数据的统一视图的过程,通过数据集成,我们就可以对整合在一起的数据进行查询,获得对事物的更加完整的认识。

数据集成分为物理式数据集成、虚拟式数据集成两类

  • 物理式数据集成,需要从各个数据源把数据拷贝到目标数据仓库
  • 虚拟式的数据集成,数据仍然保留在各个数据源中,通过某种机制,使得用户可以通过统一的视图,对数据进行查询
数据集成需要解决的问题–异构性

数据集成要解决的首要问题就是各个数据源之间的异构性,所谓异构性就是差异性

  1. 数据管理系统的异构性
  2. 通讯协议异构性
  3. 数据模式的异构性
  4. 数据类型的异构性
  5. 取值的异构性,不同的数据源,有些数据的逻辑取值,物理取值不一样
  6. 语义异构性,不同的数据源,某个数据项的取值不同,但是却是代表不同的含义
数据集成的模式
  1. 联邦数据库
  2. 数据仓库
  3. 中介者
联邦式数据库模式

联邦数据库是最简单的数据集成模式,需要在每对数据源之间创建映射和转换的软件(包装器)

优点:

  • 如果我们有很多的数据源,但是仅仅需要在少数几个数据源之间进行通讯和集成,联邦数据库是最合算的一种模式

缺点:

  • 如果需要在很多数据源之间,进行通讯和数据交换的话,我们需要构建大量的Wapper

在n个数据源的情况下最多需要建立n(n-1)/2个Wapper

在这里插入图片描述

数据仓库模式

数据仓库是最通用的一种数据集成模式

  • 在数据仓库模式下,同样的数据被复制了两份,一份在数据源那里,一份在数据仓库这里。

同步数据源和数据仓库的数据的两种方法

  1. 对数据仓库进行完全重建的办法

    当数据源发生改变,数据仓库的数据不是最新的,可以每隔一段时间,从各个数据源重新创建数据仓库。

    1. 优点:实现简单,只需要把ETL过程重新运行一遍即可。
    2. 缺点:每次的重建都特别耗时,代价很大
  2. 增量式更新的方法

    当数据源发生改变,定期根据数据源的更新,对数据仓库的数据进行适当的更新。

总结:无论哪种方法都不能保证数据仓库里的数据是最新的

ETL: 数据的抽取、转换和装载

ETL过程在数据仓库之外完成数据仓库负责存储数据,以备查询。

如果从多个异构的数据源ETL数据到数据仓库中,而且这些数据源存在各种异构性及不一致性,那么就需要对数据进行集成。

如果仅仅从一个数据源ETL数据到数据仓库中,那么无须进行数据集成,这种情况下ETL和数据集成没有关系

在进行ETL操作时,如果数据源的数据质量较差,在数据转化的时候,利用数据清洗技术,解决数据质量的问题,如果数据源的数据质量得到保证,则无须数据清洗。

在这里插入图片描述

中介者模式

中介者本身不保存任何数据,数据仍然保存在数据源中。中介者维护一个虚拟的数据模式,它把各个数据源的数据模式组合起来。

在这里插入图片描述

中介者模式包括GAV和LAV两种类型

  • GAV,由Mediator 模式充当所有数据源数据模式的一个视图。Mediator通过一些规则,实现Mediator上的查询,到针对各个数据源的查询的转换。和单一数据库上的常规视图类似,我们只能通过视图,查找到各个数据源数据的一个子集

  • LAV,则首先有一个全局数据模式(Global Schema),然后基于该全局数据模式定义各个数据源的模式。每个数据源通过表达式(Expression),描述如何从全局模式,产生该数据源的模式。LAV能够超越各个数据源,涵盖更多的数据

  • 两者的比较

    GAV的主要优势是易于设计和实现,但是通过GAV只能看到全部数据的一个子集。LAV,比起GAV来,难于设计和实现,但是它具有更大的扩展性(Extensible),新的数据源可以很容易增加进来,只要从全局模式定义新数据源的模式即可

实体解析

来着不同数据源的数据,即便它们表示的是同样的对象(实体),但是具体的数据 有可能是不一样的。

原因:

  1. 拼写错误
  2. 采用不同的数据值域
  3. 采用同义词
  4. 不同地区的书写习惯不一样

实体解析是找出表示同样实体的记录,并且把这些记录连接在一起的过程。

实体解析的方法:

  1. 编辑距离

  2. 对数据进行规范化处理和使用领域本体

  3. 对数据进行聚类和划分

    对从各个数据源获得的所有记录进行聚类分析,相似的记录归入同一类簇,对于隶属同一类簇的元组,我们可以进一步检验它们是否互相匹配,表示同一个实体。

实体解析后的记录合并

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐