数据筛选

更新时间:2022-08-25 13:22

数据筛选,是为了分析出海量数据所蕴含的价值,包括数据抽取数据清理、数据加载三个部分,在整个数据处理流程中处于至关重要的地位。

简介

数据的筛选在数学建模中占有很重要的地位。它是数学建模的第一步,我们只有得到好的数据才能保证得出的结果的真实性与准确性。而在实际的问题中我们遇到的数据量往往是巨大的。为了保证我们所用的方法能够在原始数据的支持下得以实现,我们必须要对数据进行筛选,使得解决方法简单化。同时,我们又要保证筛选出来的数据具有代表性,使得到的结果更加准确与真实。应用到计算机行业数据筛选的最终目的就是为数据挖掘做准备。数据筛选包括数据抽取、数据清理、数据加载三个部分。

背景

大数据环境下数据量快速的积累,要想分析出海量数据所蕴含的价值,筛选出有价值的数据十分重要。而数据筛选在整个数据处理流程中处于至关重要的地位。数据量的增加及结构的复杂化,这使得面向大数据的数据筛选必然会耗费较多资源,因此要想快速准确筛选出有价值的数据选择合适的算法十分必要。而每个算法都有着自己使用所需要的环境,大数据环境下数据复杂度的增加提升了选择合适算法的困难;其次大数据的巨大数据量也使得通过单一算法分析出有价值的数据越来越困难。

目的

数据筛选的目的是为了提高之前收集存储的相关数据的可用性,更利于后期数据分析。数据的价值在于其所能够反映的信息。然而在收集数据的时候,并没有能够完全考虑到未来的用途,在收集时只是尽可能的收集数据。其次就是为了更深层次的获得数据所包含的信息,可能需要将不同的数据源汇总在一起,从中提取所需要的数据,然而这就需要解决可能出现的不同数据源中数据结构相异、相同数据不同名称或者不同表示等问题。可以说数据筛选的最终目的就是为数据挖掘做准备。数据筛选包括数据抽取、数据清理、数据加载三个部分。

流程

数据抽取

数据在抽取后最终是要放入数据仓库中,因此数据抽取的主要任务就是要把不同数据源中的数据按照数据仓库中的数据格式转入到数据仓库中,其主要任务就是统一数据格式。不同数据源使用的数据库类型会不同,所以数据抽取大致可以分为两种情况。

较为简单的情况是数据源与数据仓库使用相同的数据库,此时可以使用关系型数据库自带的数据库连接功能,这样就可将数据仓库服务器与原系统连接起来,直接进行SQL查询。另一种情况是当数据源于数据仓库使用不同关系型数据库时,就需要先将数据库中的数据文件导出成为指定格式的文本文件或者其他格式的文件类型,再将得到的数据库文件导入到指定的数据库,最后便于分析时候统一抽取需要的数据。

数据清理

数据清洗包含缺失数据处理、重复数据处理、异常数据处理及不一致数据整理四部分。这部分是直接处理数据的第一步,直接影响后续处理的结果,因此十分重要。数据缺失是数据库中常有的情况,但是为了得到完备的信息表用于数据挖掘,就必须解决数据缺失的情况,因此处理数据缺失通常利用以下三种方法。

第一种是删除有缺失信息的记录。当记录中主要信息缺失,尤其是丢失较多关键信息的时候,数据已经不能够反应其所能够代表的信息,这时就可以将记录某条记录删除。但这种情况仅适用于数据量较大的情况,也就是说删除并不影响所有信息的完整性。显然当数据量较少、或缺少数据的记录较多时,完全通过删除整条记录的方法并不可行,这可能会对数据质量造成重大影响,删除记录的方法有一定适用范围。

第二种方法是对信息进行人工补全,同样这种方法也有着自己的局限性,当数据量较大时,尤其在海量数据情况下,此种方法会耗费较大人力且效率极低。还可以利用默认值来代替缺失的信息,将缺失属性值的属性视为特殊的属性,为缺失的信息值设置特殊的属性值,从而得到完备的信息。

第三种方法是利用数学公式将数据对已有信息的值进行统计分析,利用统计的值进行补全。可以使用平均值填补空缺值,或者使用同类型样本预测值进行补全空缺值,还可以使用贝叶斯公式和判定树这样的基于推断的方法进行填充,这样不会影响信息的质量。显然如果采用的公式不合适,会对下一步信息分析造成不利影响。

重复数据除了包括真正意义上的重复数据还包括属性冗余与属性数据的冗余两部分的数据。对于真正数值或属性值重复的数据处理起来也较为简单,可以直接删除。但属性冗余与属性数据的冗余需要经过分析再将其删除。如在数据仓库中,会利用不同数据库收集数据,因此会出现多个属性名称表示同一属性的情况;还有就是对于有些数据可以从别的属性中得到,年龄可以从生日中得到,可以将重复部分的数据直接删除。属性数据的冗余是指某些属性的值已经包含某些属性中的值,如在处理国内用户地址时会有国家省份等详细地址,其实这些信息中国家这部分属于重复数据,将国家剔除并不会影响对数据的分析。这种重复属性的剔除不仅可以精简数据库中的相关记录,降低存储空间的占用,也利于数据分析效率的提升。

异常数据也是较为常见的情况,其是指在数据集中出现部分数据和其他数据有很大区别或者不一致的情况。有区别并不代表数据就一定为异常,这些特殊的数据也可能反应出实际中的情况。这时判断数据是否是异常数据就十分必要,如果数据位异常则需要将数据剔除,避免影响数据分析的准确性。但是对于某些不一致的数据并不一定就是异常数据,对于这种数据要注意其背后隐藏的信息,找出造成不一致数据的原因。

数据加载

在数据加载到数据库的过程中,分为全量加载和增量加载两种方式。全量加载是指全表删除后再进行数据加载的方式;增量加载是指目标表仅更新源表变化的数据。

全量加载从技术角度上说,比增量加载要简单很多。一般只要在数据加载之前,清空目标表,再全量导入源表数据即可。但是由于数据量,系统资源和数据的实时性的要求,很多情况下我们都需要使用增量加载机制。

增量加载难度在于必须设计正确有效的方法从数据源中抽取变化的数据以及虽然没有变化,但受到变化数据影响的源数据,同时将这些变化的和未变化但受影响的数据在完成相应的逻辑转换后更新到数据仓库中。优秀的增量抽取机制不但要求 ETL 能够将业务系统中的变化数据按一定的频率准确地捕获到,同时不能对业务系统造成太大的压力,影响现有业务,而且要满足数据转换过程中的逻辑要求和加载后目标表的数据正确性,同时数据加载的性能和作业失败后的可恢复重启的易维护性也是非常重要的考量方面。

算法

数据筛选中数据挖掘的算法分析主要有以下几种。

分类算法分析

分类数据挖掘是通过找出共同事物的相同属性及不同事物间的差异。利用找出的相同点或者不同点将事物分类。决策树的优点在于,其描述简单,当数据量较大时仍能够快速的将数据进行分类。分类算法通常是基于决策树来实现,设定的分类种类都用叶子节点表示,而中间的节点用来表示事物的属性。在构造决策树时候,决策树并不是完全不变的,而是在不断变化的、完善的。通常会对建立的决策树进行实验,如果决策树对所有给定对象分类结果达不到预期要求,就要通过增加些特殊的例子对其进行完善,这一过程会在后续实验中不断进行,直到决策树能够将给定事物进行准确分类,形成较为完善的决策树。

分类算法在构建模型中使用广泛,常用于信用、客户类别分析模型中。在邮件营销中可以使用此分类算法依据已有客户以往的消费信息进行分析,得出购买力较高的客户特征列表,从而对此类客户进行精准营销以获得更多客户。在构建模型时,使用决策树的方法对于以往信息进行分类,得到以前进行消费客户的共同点,收集其共同特征,得出消费用户的主要特性。最后得出一个可以对客户进行判别的决策树,这样就可以对其余客户进行判定,得到较有价值的潜在客户列表。这种基于对已有信息进行分析、判断分类的方法,将已有信息分为不同类别,使得企业更有针对性的为不同类群提供针对性的服务,从而提高企业的决策效率和准确度。

聚类算法分析

聚类算法的作用是将具有相同特征的事物进行分组,又称为群分析。聚类算法可以用来大致判断将对象分为多少组,并提供每组数据的特征值。在聚类分析中可以将给定实例分成不同类别,相同类别中的实例是相关的,但是不向类别之间是不相关的。聚类算法中的重要之处就是分类步骤,在将给定实例分类时,需要先任选一个样本,作为样本中心,然后选定中心距,将小于中心距的实例归入一个集合,将剩下的距中心样本距离大于中心距的归入另一个集合。再在剩余样本中选出新的中心,重复上面步骤,不断形成新的类别,直至将所有样本都归入集合。

从上面步骤可以看出,聚类算法在归类时速度的快慢,受给定中心距的影响。如果给定中心距较小,类别就会相对增多,降低归类速度。同样在聚类算法中,确定将实例分成的类别数也是十分重要的,如果类别较多不但在分类时会耗费太多时间,也会失去分类的意义。但是具体应该分出多少类,并没有一个最优的方法来判定,只能通过估算来计算。通过聚类算法处理过后的数据,同一类中的数据都非常接近,不同类就有种很大差异性。在聚类算法中判断数据间间隔通常利用距离表示,也就是说可以利用函数将数据间任意距离转换成一个实数,通常实数越大表示间距越远。

关联算法分析

关联算法用于表示两事物间关系或依赖。事物问关联通常分为两种,一种是称为相关性,另一种称为关联性。两者都用来表示事物间的关联性,但是前者通常用来表示互联网内容及文档上的关联性,后者通常用于表示电子商务间各网站商品间的关系,但两者并无本质区别。关联算法既然是用来表示两事物问关系或依赖度,那么就需要用定量会来衡量相关度,这一概念被称为支持度,即当某个商品出现时另一商品伴随出现的概率。

关联算法的数据挖掘通常分为两步,第一步就是在集合中寻找出现频率较高的项目组,这些项目组相当于整体记录而言必须达到一定水平。通常会认为设置要分析实体间支持度,如果两实体问支持度大于设定值,则称二者为高频项目组。第二步是利用第一步找出的高频项目组确定二者间关系,这种关系通常由二者间概率表示。即计算A事件出现时B事件出现的概率,公式为(A与B同时出现的概率)/(A出现的概率),当比值满足既定概率时候,才能说明两事件相关联。关联分析能够从数据库中找出已有数据间的隐含关系,从而利用数据获得潜在价值。

大数据下的问题

流程问题

大数据环境下的数据筛选与传统数据筛选最大区别在于巨大的数据量及复杂的数据结构。在传统数据筛选流程中,由于面向有限的数据量,通常采用性能较高的计算机或者简单联机分析就可以按照需求进行数据处理。但是在大数据环境下面向海量数据,传统联机分析遇到一系列问题。

首先联机分析的计算能力跟不上大数据的增长速度。大数据的海量数据是不断积累起来的,与此同时数据增长的速率越来越快,而联机分析的并行处理能力满足不了用户快速得到数据处理结果的需求,这就需要良好的系统来协调计算机工作,提升综合运算能力。其次与巨大数据量同样难以处理的是复杂的数据结构,这些半结构化及非结构化的数据单个文件的大小远远大于结构化数据的大小,这种大文件的处理必然需要依据多台计算机共同处理,这就需要依据每台计算机的计算能力动态对数据进行分片,并将计算的结果进行统一。最后虽然依据多台计算机协同处理海量数据虽然可以快速提升运算效率,但是这就需要提升大数据环境下数据库的读写能力,以匹配迅速提升的运算力。因此针对大数据的存储与数据筛选是密不可分的,只有同时提升二者的能力,才能解决大数据环境下数据筛选与数据存储的问题。

算法问题

大数据中的海量数据潜藏着巨大的数据价值,但是大数据中数据可用效率并不高,这就增加算法选取的困难。由于数据量的巨大,每次针对大数据的筛选都会耗费巨大的资源。尤为重要的是在处理大数据的某些场景中数据需要实时分析,这就意味着仅存储数据分析的结果,仅能对数据进行一次分析,使得大数据中数据分析对算法选取有着更高的要求。

首先大数据环境下增加了算法训练的难度,在针对数据筛选中目标算法并不是一蹴而就的。算法需要适应当前数据环境,大数据环境下虽然有着充足的数据源但是算法训练时只能使用针对部分数据,如果出现数据分布不均匀的情况自然会影响分析结果的准确性。其次大数据带来的海量数据问题同样增加验证分析结果准确性的难度,传统数据筛选由于数据量的有限性,通常会通过多次验证分析算法的准确性。但是大数据环境每次筛选的难度增加,限制了多次筛选验证结果的准确。最后数据量的增加无论采用何种算法都难以得到一个准确的结果,由于数据源的多样性,多种角度分析可能会得到完全不同的结果。因此大数据环境下通常只能通过数据分析实例的趋势而不是得到准确的定量分析结果。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}