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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介:

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算法的扩展步骤,用于训练一个众包监督模型来预测重复。请看下面的代码:

 

匹配器的配置如下:

 

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

相关文章
|
机器学习/深度学习 分布式计算 大数据
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
787 15
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
546 1
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
718 6
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
1134 6
|
机器学习/深度学习 分布式计算 算法
【机器学习】Spark ML 对数据特征进行 One-Hot 编码
One-Hot 编码是机器学习中将离散特征转换为数值表示的方法,每个取值映射为一个二进制向量,常用于避免特征间大小关系影响模型。Spark ML 提供 OneHotEncoder 进行编码,输入输出列可通过 `inputCol` 和 `outputCol` 参数设置。在示例中,先用 StringIndexer 对类别特征编码,再用 OneHotEncoder 转换,最后展示编码结果。注意 One-Hot 编码可能导致高维问题,可结合实际情况选择编码方式。
673 6
|
分布式计算 Spark 大数据
深入探究Apache Spark在大数据处理中的实践应用
【6月更文挑战第2天】Apache Spark是流行的开源大数据处理框架,以其内存计算速度和低延迟脱颖而出。本文涵盖Spark概述、核心组件(包括Spark Core、SQL、Streaming和MLlib)及其在数据预处理、批处理分析、交互式查询、实时处理和机器学习中的应用。通过理解Spark内部机制和实践应用,可提升大数据处理效率,发挥其在各行业的潜力。
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
472 0
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
866 0
|
机器学习/深度学习 分布式计算 算法
使用Spark进行机器学习
【5月更文挑战第2天】使用Spark进行机器学习
410 2

热门文章

最新文章