在 AWS Glue 中优化机器学习转换 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

在 AWS Glue 中优化机器学习转换

您可以在 AWS Glue 中优化机器学习转换来改进数据清理作业的结果,从而实现您的目标。要改进转换,您可以通过生成标记集,添加标签,然后重复这些步骤几次,直到获得所需结果来指导转换。您也可以通过更改一些机器学习参数来进行优化。

有关机器学习转换的更多信息,请参阅使用 AWS Lake Formation FindMatches 匹配记录

机器学习测量值

要了解用于优化机器学习转换的测量值,您应熟悉以下术语:

真阳性 (TP)

转换正确找到的数据中的匹配项有时称作命中

真阴性 (TN)

转换正确拒绝的数据中的不匹配项。

假阳性 (FP)

转换错误地分类为匹配项的数据中的不匹配项有时称作假警报

假阴性 (FN)

转换未找到的数据中的匹配项有时称作未命中

有关机器学习中使用的术语的更多信息,请参阅 Wikipedia 中的 混淆矩阵

要优化您的机器学习转换,您可以在转换的 Advanced properties (高级属性) 中更改以下测量值。

  • Precision (查准率) 衡量转换从可能的全部真阳性中找到真阳性的程度。有关更多信息,请参阅 Wikipedia 中的查准率和查全率

  • Recall (查全率) 衡量转换从源数据中的全部记录中找到真阳性的程度。有关更多信息,请参阅 Wikipedia 中的查准率和查全率

  • Accuracy (准确性) 衡量转换发现真阳性和真阴性的程度。提高准确性需要更多的机器资源和成本。但这也会导致查全率提高。有关更多信息,请参阅 Wikipedia 中的准确性和查准率

  • Cost (成本) 衡量运行转换所消耗的计算资源(从而产生资金)的数量。

在查准率和查全率之间做出决定

每个 FindMatches 转换均包含一个 precision-recall 参数。您可以使用此参数指定下列项之一:

  • 如果您更关心转换错误地报告两个记录匹配,而实际上它们不匹配,则您应强调 precision (查准率)

  • 如果您更关心转换未能检测到真正匹配的记录,则您应强调 recall (查全率)

您可以在 AWS Glue 控制台上或使用 AWS Glue 机器学习 API 操作进行此权衡。

何时倾向于查准率

如果您更关心 FindMatches 导致一对实际不匹配的记录进行匹配的风险,请倾向于查准率。 要倾心于查准率,请选择 higher (较大) 查准率-查全率权衡值。对于较大的值,FindMatches 转换需要更多的证据来决定是否应匹配一对记录。将转换调整为偏向于表示记录不匹配。

例如,假设您使用 FindMatches 检测视频目录中的重复项,并且您向转换提供更大的查准率-查全率值。如果您的转换错误地检测到 Star Wars: A New HopeStar Wars: The Empire Strikes Back 相同,则可能会为需要 A New Hope 的客户显示 The Empire Strikes Back。这将是一个糟糕的客户体验。

不过,如果转换无法检测到 Star Wars: A New HopeStar Wars: Episode IV—A New Hope 是相同的项,则客户最初可能会感到困惑,不过可能最终会将其视为相同。这将是一个错误,但不像以前的情况那么糟糕。

何时倾向于查全率

如果您更关心 FindMatches 转换结果可能无法检测到实际匹配的一对记录的风险,请倾向于查全率。 要倾向于查全率,请选择 lower (较小) 查准率-查全率权衡值。对于较小的值,FindMatches 转换需要更少的证据来决定是否应匹配一对记录。将转换调整为偏向于表示记录匹配。

例如,这可能是安全组织的优先事项。假设您将客户与一系列已知的欺诈者进行匹配,并且确定客户是否为欺诈者非常重要。您使用 FindMatches 将欺诈者名单与客户名单进行匹配。每当 FindMatches 检测到两个名单之间的匹配项时,都会指派一名审计人员来验证该人员实际上是否为欺诈者。您的组织可能更愿意选择查全率而不是查准率。换句话说,当客户不是欺诈者时,您宁愿让审计人员手动审查并拒绝某些情况,而不是未能识别出客户实际上在欺诈者名单上。

如何倾向于查准率和查全率

提高查准率和查全率的最佳方法是标记更多数据。在标记更多数据时,FindMatches 转换的总体准确性将提高,从而提高查准率和查全率。然而,即使对于最准确的转换,也始终存在一个灰色区域,您需要在该区域中尝试倾向于查准率或查全率,或者在中间选择一个值。

在准确性和成本之间做出决定

每个 FindMatches 转换均包含一个 accuracy-cost 参数。您可以使用此参数指定下列项之一:

  • 如果您更关心准确报告两个记录匹配的转换,则应强调准确性

  • 如果您更关心转换的运行成本或速度,则应强调更低成本

您可以在 AWS Glue 控制台上或使用 AWS Glue 机器学习 API 操作进行此权衡。

何时倾向于准确性

如果您更关心 find matches 结果不包含匹配项的风险,则倾向于准确性。要倾向于准确性,请选择较大 准确性-成本权衡值。对于较大的值,FindMatches 转换需要更多时间来更详细地搜索正确匹配的记录。请注意,此参数不会使错误地将不匹配记录对称为匹配项的可能性降低。转换将调整为倾向于花更多时间查找匹配项。

何时倾向于成本

如果您更关心运行 find matches 转换的成本,而不是找到多少匹配项,请倾向于成本。要倾向于成本,请选择较小 准确性-成本权衡值。对于较小的值,运行 FindMatches 转换所需的资源更少。转换将调整为倾向于查找更少的匹配项。如果在倾向于较低成本时结果是可接受的,请使用此设置。

如何倾向于准确性和较低成本

检查更多记录对以确定它们是否匹配需要更多的机器时间。如果您想减少成本而不降低质量,则可执行以下几个步骤:

  • 消除数据源中您不关心匹配的记录。

  • 从您的数据源中消除您确信在做出匹配/不匹配决策时没有用的列。确定这一点的一个好方法是消除您认为不会影响您就一组记录是否“相同”做出决定的列。

指导查找匹配项转换

必须为每个 FindMatches 转换指导什么应被视为匹配项,什么不应被视为匹配项。您可以通过将标签添加到文件并将您的选择上传到 AWS Glue 来指导您的转换。

您可以在 AWS Glue 控制台上或使用 AWS Glue 机器学习 API 操作来编排此标签。

我应添加多少次标签? 我需要多少个标签?

这些问题的答案主要取决于您。您必须评估 FindMatches 是否提供您所需的准确性,以及您是否认为额外的标签工作对您来说是值得的。决定这一点的最佳方法是查看“查准率”、“查全率”和“查准率查全率曲线下的面积”指标,您可以在 AWS Glue 控制台上选择 Estimate quality (估计质量) 时生成这些指标。在标记多组任务后,请重新运行这些指标并验证它们是否已得到改进。如果在标记几组任务后,您没有看到您关注的指标有所改进,则转换质量可能已达到稳定水平。

为何需要真阳性和真阴性标签?

FindMatches 转换需要阳性和阴性示例来了解您认为的匹配项。如果标记 FindMatches 生成的训练数据(例如,使用 I do not have labels (我没有标签) 选项),则 FindMatches 会尝试为您生成一组“标签集 ID”。在每个任务中,您向一些记录添加相同的“标签”,向其他记录添加不同的“标签”。换句话说,任务通常不是完全相同的,也不是完全不同的(但如果某个特定任务完全“相同”或完全“不相同”,也没关系)。

如果您使用 Upload labels from S3 (从 S3 上传标签) 选项指导 FindMatches 转换,请尝试同时包含匹配记录和不匹配记录的示例。仅具有一种类型是可以接受的。这些标签可帮助您构建更准确的 FindMatches 转换,但您仍需使用 Generate labeling file (生成标签文件) 选项来为生成的部分记录添加标签。

如何强制转换过程与我必须的内容完全匹配?

FindMatches 转换从您提供的标签中学习,因此它可能会生成不遵循提供的标签的记录对。要强制 FindMatches 转换遵循您的标签,请选择 FindMatchesParameter 中的 EnforceProvidedLabels

当 ML 转换将项目标识为非真匹配项的匹配项时,您可以使用哪些方法?

您可以使用以下方法:

  • precisionRecallTradeoff 增至更大的值。这最终会导致找到较少的匹配项,但是当它达到足够高的值时,它也应分解您的大集群。

  • 接受与错误结果对应的输出行并将其重新格式化为标签集(删除 match_id 列并添加 labeling_set_idlabel 列)。如有必要,可拆分(细分)成多个标签集,以确保贴标签者在分配标签时能记住每个标签集。然后,正确标记匹配集,上传标签文件并将其附加到现有标签。这可能会让您的转换器充分了解它需要什么来理解模式。

  • (高级)最后,查看该数据以了解是否存在可以检测到系统未注意到的模式。通过使用标准 AWS Glue 函数规范化 数据来预处理数据。通过将重要程度不同的数据分离到它们自己的列中,突出显示您希望算法从中学到的内容。或者,从已知其数据相关的列构造组合列。