简介

数据集成(Data Integration)是一个数据整合的过程。通过综合各数据源,将拥有不同结构、不同属性的数据整合归纳在一起,就是数据集成。由于不同的数据源定义属性时命名规则不同,存入的数据格式、取值方式、单位都会有不同。因此即便两个值代表的业务意义相同,也不代表存在数据库中的值就是相同的。因此需要数据入库前进行集成,去冗余,保证数据质量。

一句话解释版本:

数据集成是将不同来源的数据整合在一个数据库中的过程。

数据分析与挖掘体系位置

数据集成是数据预处理的环节,所以在数据分析与数据挖掘中的位置如下图所示。

数据集成的难点

数据集成的本质是整合数据源,因此多个数据源中字段的语义差异、结构差异、字段间的关联关系,以及数据的冗余重复,都会是数据集成面临的问题。归纳一下的话,数据集成面临如下几个问题:

字段意义问题

在整合数据源的过程中,很可能出现这些情况:

  • 两个数据源中都有一个字段名字叫“Payment”,但其实一个数据源中记录的是税前的薪水,另一个数据源中是税后的薪水。
  • 两个数据源都有字段记录税前的薪水,但是一个数据源中字段名称为“Payment”,另一个数据源中字段名称为“Salary”。

上面这两种情况是在数据集成中常发生的,造成这个问题的原因在于现实生活中语义的多样性以及公司数据命名的不规范。为了更好的解决这种问题,首先,我们需要在数据集成前,进行业务调研,确认每个字段的实际意义,不要被不规范的命名误导。

其次,我们可以整理一张专门用来记录字段命名规则的表格,使字段、表名、数据库名均能自动生成,并统一命名。一旦发生新的规则,还能对规则表实时更新。

字段结构问题

数据结构问题的产生是数据集成中几乎必然会产生的。在整合多个数据源时,这样的问题就是数据结构问题:

  • 字段名称不同。如,同样是存储员工薪水,一个数据源中字段名称是“Salary”,另一个数据源中字段名是“Payment”。
  • 字段数据类型不同。如,同样是存储员工薪水的Payment字段,一个数据源中存为INTEGER型,另一个数据源中存为CHAR型。
  • 字段数据格式不同。如,同样是存储员工薪水的Payment数值型字段,一个数据源中使用逗号分隔,另一个数据源中用科学记数法。
  • 字段单位不同。如,同样是存储员工薪水的Payment数值型字段,一个数据源中单位是一万人民币,另一个数据源中是美元。
  • 字段取值范围不同。如,同样是存储员工薪水的Payment数值型字段,一个数据源中允许空值,NULL值,另一个数据源中不允许。

上面这些问题都会对数据集成的效率造成影响。如果想解决上面的问题,就需要在数据集成的过程中尽量明确数据字段结构。简单来说,可以通过下面这个表格来确定字段的格式。

ID 是否主键 字段名称 字段说明 字段类型 空值 拼写 格式 单位
01 Employee_id 员工编号 VARCHAR(20) NOT NULL UPPERCASE 6位数字+大写字母 -
02 Employee_Birthday 员工生日 DATE NULL ALLOWED - YYYYMMDD -
03 Employee_Salary 员工薪水 DECIMAL(20,2) NOT NULL - 千位符分割 人民币

上表就是一个简单的数据源中字段的格式定义表。通过上表,可以从业务上确定字段的基本属性。在后续进行数据集成时,可以通过上表对数据格式进行约束,从而避免因格式不同对集成带来的困扰。

字段冗余问题

字段的冗余一般源自于字段之间存在强相关性或者几个字段间可以相互推导得到。

通过检测字段的相关性,可以侦察到数据冗余。具体来说,方法有如下几个:

分类型数据:卡方检验

卡方检验是假设检验中的一种,具体的方法在假设检验中讲解。

简单来说,检验的标准如下:

H0:字段A与字段B之间相互独立

H1:字段A与字段B之间存在相关性

检验指标为:Pearson X2

在给定的置信水平下,若有充分证据能拒绝原假设,则字段A与B之间存在相关性。若不能拒绝原假设,则字段A与B独立。

数值型数据:相关系数,协方差

相关系数与协方差矩阵都是衡量字段之间相关性的指标,具体的算法在数据描述统计中讲解。

简单来说,如果用Pearson相关系数检验数据相关性,则Pearson系数越靠近+1或-1,相关性越大,+1为完全正相关,-1为完全负相关。若Pearson系数为0,则两个字段之间不相关。

如果用协方差衡量数据相关性,如果2个字段协方差绝对值越大,相关性越强。协方差正数时为正相关,协方差负数时为完全负相关。若协方差为0,则两个字段之间不相关。

数据重复问题

检查数据记录的重复一般需要通过表的主键定。因为主键能够确定唯一记录,其有可能是一个字段,也有可能是几个字段的组合。表设计时,一般会设定主键。但也有实际情况中表是没有设计的。这种情况下,最好能够对表进行优化,过滤重复数据。

一般来说,我会在数据结构中尽量调研每个表的主键。没有主键,就通过调研定义主键,或者对表进行拆分或整合。重复数据入库,不仅会给日后表关联造成极大的影响,也会影响数据分析与挖掘的效果,应尽量避免。

数据冲突问题

数据冲突就是两个数据源,同样的数据,但是取值记录的不一样。造成这种原因,除了有人工误入,还有可能是因为货币计量的方法不同,汇率不同,税收水平不同、评分体系不同等等原因。

对待这种问题,就需要对实际的业务知识有一定的理解。同时,对数据进行调研,尽量明确造成冲突的原因。如果数据的冲突实在无法避免,就要考虑冲突数据是否都要保留、是否要进行取舍,如何取舍,等问题了。

3.4 数据预处理(一) - 数据集成(Data Integration)相关推荐

  1. 【Python实战】数据预处理(数据清理、集成、变换、归约)

    [Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...

  2. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)

    数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...

  3. 机器学习项目中的数据预处理与数据整理之比较

    要点 在常见的机器学习/深度学习项目里,数据准备占去整个分析管道的60%到80%. 市场上有各种用于数据清洗和特征工程的编程语言.框架和工具.它们之间的功能有重叠,也各有权衡. 数据整理是数据预处理的 ...

  4. 竞赛专题 | 数据预处理-如何处理数据中的坑?

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.Data ...

  5. PyTorch源码解析--torchvision.transforms(数据预处理、数据增强)

    PyTorch框架中有一个很常用的包:torchvision torchvision主要由3个子包构成:torchvision.datasets.torchvision.models.torchvis ...

  6. 数据预处理Part4——数据离散化

    文章目录 离散化,对数据做逻辑分层 1. 什么是数据离散化? 2. 为什么要将数据离散化 3. 如何将数据离散化? 3.1 时间数据离散化 3.2 多值离散数据离散化 3.3 连续数据离散化 3.4 ...

  7. Python数据分析中的数据预处理:数据标准化

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python数据分析中的 数据预处理:数据标准化 ● 选择题 以下关于 ...

  8. 数据预处理Part2——数据标准化

    文章目录 数据标准化 1. 实现归一化的Max-Min 2. 实现中心化和正态分布的Z-Score 3. 用于稀疏数据的MaxAbs 4. 针对离群点的RobustScaler 5. 标准化后数据可视 ...

  9. 数据预处理Part9——数据降维

    文章目录 1. 什么是数据降维? 2. 为什么要进行数据降维? 3. 降维是如何实现的? 4. sklearn中的降维算法 4.1 主成分分析PCA 4.2 因子分析FA 4.3 独立成分分析ICA ...

  10. Pandas数据预处理与数据重塑案例

    Pandas数据预处理与数据重塑案例 前言   预处理是数据分析中不可缺少的一部分,我们日常得到的数据多半是规整的,只有得到想要的相应格式的数据,才能进行后续的探索性分析和建模.以下是我在一个小的项目 ...

最新文章

  1. 死磕Java并发:J.U.C之阻塞队列:ArrayBlockingQueue
  2. PHP NULL 合并运算符
  3. c dup 函数
  4. 最简单的Web Service实现
  5. 如何判断一个类是否是线程安全(可重入)的?
  6. 侦听127.0.01_Spring 4.2中由注释驱动的事件侦听器
  7. 容器编排技术 -- Google Computer Engine入门
  8. 常用html标签 —— 链接的颜色
  9. 基于 koajs 的前后端分离实践
  10. Dev-cpp5.4.0的详细安装步骤
  11. matlab计算电磁场程序,电磁场与波:电磁材料及MATLAB计算
  12. python获取当前工作路径
  13. IR2104电机驱动
  14. 计算机电缆对绞节距,耐高温双绞计算机电缆DJFFP2√厂家
  15. 一键激活windows系统与office(绿色无捆绑装机员激活工具)
  16. 建群网培PMP每日一练2020-08-13
  17. 四面体棱切球的一些特殊正弦定理及其几何性质
  18. 牛津英语字典pdf下载_除了long time no see,你知道还有这些中式英语也进入了牛津字典吗...
  19. 【图像超分辨率重建】——“SISR 中的Edge-Based 损失函数”论文精读
  20. ASP.NET:性能与缓存 转帖 张逸老师(http://www.cnblogs.com/wayfarer/articles/48347.aspx)...

热门文章

  1. 用maven的 Mybatis代码生成器
  2. Storm集成HBase、JDBC、Kafka、Hive
  3. 软件配置 | win / mac M1 imagemagick 的安装
  4. GB28380台式计算机,微型计算机能效限定值及能效等级 GB28380-2012
  5. python中一切都是对象对吗_在 Python 中一切皆对象,它完全支持()
  6. Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C++)
  7. 如何让右下角时间显秒
  8. JAVA根据word模版使用poi导出word文档,包含图片、文字
  9. 我以为猫咪牙齿断了一点不要紧,结果…
  10. 跟着小马哥学习Spring(1)