数据预处理是大数据处理流程中必不可少的关键步骤,更是进行数据分析和数据挖掘前必不可少的重要工作。由于种猪生产的原始数据比较散乱,一般不符合数据分析和数据挖掘所要求的规范和标准,因此必须对这些原始数据进行预处理,以改进数据质量,并提高数据挖掘过程的效率、精度和准确性。
一般情况下,数据预处理的
流程是:数据的清洗、数据的集成、数据的变换、数据的规约。本文将从数据集成开始介绍。
数据集成是把不同来源、格式、特性的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。数据集成的本质是整合数据源,因此多个数据源中字段的语义差异、结构差异、关联关系,以及数据的冗余重复等,都会是数据集成面临的问题。
(一)实体识别问题实体就是名词,人名、地名、物名都是实体。在计算机领域进行实体识别只需要清楚在数据清洗的过程中怎么对待实体即可。
我们需要在数据清洗时把两个本来不是同一个实体的数据区分开,也需要把本来是实体的数据连接上。包括以下几种情况。
1.同名异义
例如,在做不同公司的数据分析时,数据来源的猪场名称为“凤凰场”,可能存在其他猪场也叫“凤凰场”
2.异名同义
例如,在养猪生产中、“妊娠日龄”和“怀孕日龄”以及“仔猪育成率”和“仔猪成活率”等,不同名词所表达的含义相同。
3.单位统一
用于描述同一个实体的属性有时会出现单位不统一的情况需要对单位进行统一,如仔猪初生重1200g与1.2kg,对于此类问题,要么统一量纲,要么去量纲化(归一化)。
通常可以根据数据集或数据仓库中的元数据来区分模式集成中的错误。
元数据包括名字、含义、数据类型和属性的允许取值范围,以及处理空白、零或NULL值的空值规则。例如,数据分析者或计算机如何才能确信一个数据库中的sow_id与另一个数据库中的sow_number 指的是相同的属性,这样的元数据可以用来避免模式集成的错误。元数据还可以用来帮助变换数据(如 breed_type 的数据编码在一个数据库中可以是“P”和“H”,而在另.个数据库中是“1”和“2”)。
(二)数据字段问题1.字段意义问题
在整合数据源的过程中很可能出现以下情况:
(1)两个数据源中都有一个字段名字叫“仔猪数”,但其实一个数据源中记录的是“总产仔猪数”,另一个数据源中记录的是“断奶仔猪数”。
(2)两个数据源都有字段记录产仔猪数,但是一个数据源中字段名称为“总产仔猪数”,另一个数据源中字段名称为“活产仔猪数”。
可以整理一张专门用来记录字段命名规则的表格,使字段、表名、数据库名均能自动生成,并统一命名。一旦发生新的规则,还能对规则表实时更新。
2.字段结构问题
数据集成中很可能会产生数据结构问题。在整合多个数据源时,以下问题均属于数据结构问题:
(1)字段数据类型不同一个数据源中存为“整型”INTEGER,另一个数据源中存为“字符串数据类型”CHAR。
(2)字段数据格式不同 一个数据源中使用逗号分隔,另一个数据源中用科学记数法。例如,精子密度的数值,一个数据源为12000000,另一个数据源为1.20×107。
(3)字段单位不同如母猪的体重信息,一个数据源中单位是磅(1b),另一个数据源中是千克(kg)。
(4)字段取值范围不同 如同样是存储母猪产仔数据的“总产仔数”数们型字段,一个数据源中允许空值、NULL值,另一个数据源中不允许。
可以从业务上确定字段的基本属性。在后续进行数据集成时,可以通过对数据格式进行统一约束,从而避免因格式不同对集成造成困扰。
(三)冗余和相关性分析1.冗余的概念
冗余是数据集成的另一个重要问题。一个属性(如母猪PSY)如果能由另一个或另一组属性“导出”,则这个属性可能是冗余的。属性或维命名的不一致也可能导致数据集中的冗余。
2.相关分析检测冗余
有些冗余可以被相关分析检测到。给定两个属性。这种分析可以根据可用的数据,度量一个属性能在多大程度上蕴涵另一个属性。对于标称数据,通常使卡方检验;对于数值属性,通常使用相关系数和协方差,均可评估一个属性的值如何随另一个属性变化。
(四)数据冲突检测处理数据集成还涉及数据值冲突的检测与处理。例如,对于现实世界的同一实体,来自不同数据源的属性值可能不同,这可能是因为表示、尺度或编码不同,如重量属性可能在一个系统中以“kg”为单位存放,而在另一个系统中以“g”为单位存放。
属性也可能在不同的抽象层,其中属性在一个系统中记录的抽象层可能比另一个系统中“相同的”属性低。例如,“总断奶仔猪数”在一个数据库中可能涉及一个公司或一个猪场的数据,而另一个数据库中相同名字的属性可能表示一个给定地区的所有猪场的总断奶仔猪数。