Apache Spark机器学习.2.3 一致性匹配

2.3 一致性匹配


本节,我们将讨论一个重要的数据准备主题,就是一致性匹配和相关解决方案。我们将讨论几个使用Spark解决一致性问题的特征和使用Spark的数据匹配解决方案。

阅读本节以后,读者可以使用Spark解决一些常见的数据一致性问题。

2.3.1 一致性问题

我们经常需要在数据准备过程中处理一些属于同一个人或单元的数据元素,但这些元素并不相似。例如,我们有一些Larry Z.的购物数据和L. Zhang的网页活动数据。Larry Z.和L. Zhang是否是同一个人?数据中是否有很多一致性的变化。

由于实体变异的类型非常普遍,可能引起的原因有:重复、错误、名字变化和有意的别名等,使得对象匹配成为机器学习数据准备中的一个巨大挑战。有时,完成匹配或寻找关联都非常困难,而且这些工作非常耗时。然而,任何种类的错误匹配将产生许多错误,数据的不匹配也会产生偏见,因此数据匹配工作也是非常必要和极为重要。与此同时,正确的匹配也会在分组检测方面有附加的价值,例如恐怖组织、贩毒集团检测。

目前,已经开发了一些新的方法来解决这个问题,例如模糊匹配。本节,我们主要介绍一些常用的方法,包括:

使用SQL查询手工查找

该方法比较费力,发现少,但准确度高。

自动数据清洗

该方类方法一般会使用几项规则,这些规则使用信息最丰富的属性。

词汇相似性

这种方法合理且有用,但会产生许多假告警。

特征与关系匹配

这种方法比较好,但无法解决非线性影响。

上述方法的精度往往取决于数据的稀疏性和数据集的大小,也取决于这些任务是否是解决重复、错误、变异,或别名等问题。

2.3.2 基于Spark的一致性匹配

与前面类似,尽管最常用的工具是SparkSQL和R语言,但我们还是要介绍一些使用SampleClean处理实体匹配问题的方法。

2.3.3 实体解析

对于一些基本的实体匹配任务,SampleClean提供了简单易用的界面。SampleClean包含一个名为EntityResolution的类,该类包含了一些常见的重复程序模式。

一个基本的EntityResolution类包括以下几个步骤:

1.找到一个分类属性不一致的列。

2.将相似的属性连接在一起。

3.选择连接属性的一个单独正则表达方法。

4.变更数据。

短字符串比较

我们有一个短字符串的列,该列存在表示的不一致。EntityResolution.short-Attribute-Canonicalize函数的输入包括:当前内容,需要清洗的工作集名称,需要修正的列、阈值0或1(0全部合并,1仅匹配合并)。该函数使用EditDistance作为默认的相似度量方法。下面是一个代码例子:

 

长字符串比较

我们有一个长字符串的列,例如地址,它们是相近的但不准确。基本的策略是切分这些字符串,比较词汇集而不是整个字符串。该方法使用WeightedJaccard作为默认的相似性度量方法。下面是一个代码例子:

 

记录去重

更复杂的去重任务是记录的不一致,而不是单个字段的不一致。也就是说,多个记录指向相同的实体。RecordDeduplication使用Long Attribute作为默认的相似度量方法。下面是一个代码例子:

 

更多关于SampleClean的资料,请访问http://sampleclean.org/guide/。

2.3.4 更好的一致性匹配

正如前几节展示的,与数据清洗类似,同时使用SampleClean和Spark可以使一致性匹配更容易——编写较少的代码和使用更少的数据。正如前面讨论的,自动化的数据清理非常容易和快速,但准确性难以保证。把一致性匹配做得更好的常用方法是动用更多的人员使用费力的众包(crowd sourcing)方法。

SampleClean在众包去重方法中组合了算法、机器、人员等因素。

众包去重

由于众包非常难以扩展到非常大的数据集,SampleClean系统使用众包(crowd)在数据的一个采样集上进行去重,然后训练一个模型,并在整个数据集上推广众包的去重工作。具体来讲,SampleClean使用Active Learning算法进行采样,可以快速建立一个较好的模型。

配置众包

为了使用crowd worker清理数据,SampleClean使用开源的AMPCrowd服务来支撑多个crowd平台,并进行质量控制。因此,用户必须安装AMPCrowd。此外,必须通过配置传递CrowdConfiguration对象将crowd操作符指向AMPCrowd服务器。

使用众包

SampleClean目前提供了一个主要的众包操作符:ActiveLearningMatcher。

这是EntityResolution算法的扩展步骤,用于训练一个众包监督模型来预测重复。请看下面的代码:

 

匹配器的配置如下:

 

将匹配器添加到已有的算法,使用下面的函数:

时间: 2024-11-03 05:18:21

Apache Spark机器学习.2.3 一致性匹配的相关文章

《 Apache Spark机器学习.》导读

本节书摘来自华章出版社< Apache Spark机器学习.>一书中作者[美] 刘永川(Alex Liu) 著 闫龙川 高德荃 李君婷 译  前 言 作为数据科学家和机器学习专业人员,我们的工作是建立模型进行欺诈检测.预测客户流失,或者在广泛的领域将数据转换为洞见.为此,我们有时需要处理大量的数据和复杂的计算.因此,我们一直对新的计算工具满怀期待,例如Spark,我们花费了很多时间来学习新工具.有很多可用的资料来学习这些新的工具,但这些资料大多都由计算机科学家编写,更多的是从计算角度来描述.

Apache Spark机器学习.2.1 访问和加载数据集

摘要 Spark机器学习的数据准备 机器学习从业者和数据科学家时常耗费70%或80%的时间为机器学习项目准备数据.数据准备可能是很艰辛的工作,但是它影响到接下来的各方面工作,因此是非常必要和极其重要的.所以,在本章中,我们将讨论机器学习中所有必要的数据准备方面的内容,通常包括数据获取.数据清洗.数据集连接,再到特征开发,从而让我们为基于Spark平台构建机器学习模型准备好数据集.具体而言,我们将讨论前面提到的以下6个数据准备任务,然后在针对复用性和自动化的讨论中结束本章: 访问和加载数据集 开放

Apache Spark机器学习2.7 复用性和自动化

2.7 复用性和自动化 本节我们将讨论数据集组织方法.预处理工作流方法,然后使用Apache Spark pipeline模型进行表示,并实现工作流.然后,我们将评估数据预处理的自动化解决方案. 学完本节,我们应能够使用Spark pipeline模型来表示和实现数据集预处理工作流,理解一些基于Apache Spark的自动化解决方案. 2.7.1 数据集预处理工作流 数据准备工作是从数据清洗到标识匹配,再由数据重组到特征提取,能以某种形式进行组织,反映了一步一步开展机器学习数据集准备的有序过程

Apache Spark机器学习.1.8 Spark notebook简介

1.8 Spark notebook简介 在本节中,我们首先讨论有关面向机器学习的notebook方法.然后,我们介绍R Markdown,以其作为一个成熟的notebook案例,最后介绍Spark中的R notebook. 学习完本节,读者将掌握notebook相关的方法和概念,并为将其用于管理和开发机器学习项目做好准备. 1.8.1 面向机器学习的notebook方法 notebook已经成为众人青睐的机器学习工具,因为该工具既能动态驱动,还具备可重复生成的特点. 大部分notebook接口

Apache Spark机器学习.2.2 数据清洗

2.2 数据清洗 在本节中,我们将回顾一些Spark平台上的数据清洗方法,重点关注数据不完备性.然后,我们将讨论一些Spark数据清洗方面的特殊特征,以及一些基于Spark平台更加容易的数据清洗解决方案. 学习完本节,我们将能够完成数据清洗,并为机器学习准备好数据集. 2.2.1 处理数据不完备性 对于机器学习,数据越多越好.然而,通常数据越多,"脏数据"也会越多--这意味着会有更多的数据清洗工作. 数据质量控制可能会有许多问题需要处理,有些问题可能很简单,如数据输入错误或者数据复制.

Apache Spark机器学习.2.4 数据集重组

2.4 数据集重组 本节,我们介绍数据集重组技术.我们将讨论一些特殊的Spark数据重组特征,以及一些可以用在Spark notebook中基于R语言数据重组的特别方法. 学习完本节,我们可以根据不同的机器学习需要进行数据集重组. 2.4.1 数据集重组任务 数据集重组虽然听起来比较容易,但还是很有挑战,并且非常耗时. 有两个常见的数据重组任务:一是,获取一个用于建模的数据子集:二是,以更高的层次汇总数据.例如,我们有学生数据,但是我们需要一些班级层面的数据集.为此,我们需要计算学生的一些属性,

Apache Spark机器学习.1.4 MLlib

1.4 MLlib MLlib是一个可扩展的Spark机器学习库,包括很多常用的机器学习算法.MLlib内置的算法如下: 以向量和矩阵形式处理数据 基本的统计计算,例如:汇总统计和相关性.简单随机数生成.分层抽样.执行简单的假设检验 分类和回归建模 协同过滤 聚类 降维 特征提取与转换 频繁模式挖掘 开发优化 PMML模型导出 Spark MLlib还处在活跃开发阶段,预计每次新版发布都会有新的算法加入其中. MLlib符合Apache Spark的计算哲学,简单易用,性能卓越. MLlib使用

Apache Spark机器学习.1.5 Spark RDD和DataFrame

1.5 Spark RDD和DataFrame 本节关注数据以及Spark如何表示和组织数据.我们将介绍Spark RDD和DataFrame技术. 通过本节的学习,读者将掌握Spark的两个关键概念:RDD和DataFrame,并将它们应用于机器学习项目. 1.5.1 Spark RDD Spark主要以一种分布式项集合的形式进行数据抽象,称之为弹性分布式数据集(Resilient Distributed Dataset,RDD).RDD是Spark的关键创新,使其比其他框架计算更加快速和高效

Apache Spark机器学习.1.1 Spark概述和技术优势

摘要 Spark机器学习简介 本章从机器学习和数据分析视角介绍Apache Spark,并讨论Spark中的机器学习计算处理技术.本章首先概括介绍Apache Spark,通过与MapReduce等计算平台进行比较,展示Spark在数据分析中的技术优势和特点.接着,讨论如下五个方面的内容: 机器学习算法与程序库 Spark RDD和DataFrame 机器学习框架 Spark pipeline技术 Spark notebook技术 以上是数据科学家或机器学习专业人员必须掌握的五项最重要的技术内容