使用批量导入存储事件数据 - Amazon Fraud Detector

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用批量导入存储事件数据

借助批量导入功能,您可以使用控制台、API 或 AWS SDK 在 Amazon Fraud Detector 中快速轻松地上传大型历史事件数据集。要使用批量导入,请创建一个包含所有事件数据的 CSV 格式的输入文件,将 CSV 文件上传到 Amazon S3 存储桶,然后启动导入任务。Amazon Fraud Detector 首先根据事件类型验证数据,然后自动导入整个数据集。导入数据后,即可将其用于训练新模型或重新训练现有模型。

输入与输出文件

输入 CSV 文件必须包含与关联事件类型中定义的变量相匹配的标题以及四个必需变量。参阅 准备用于存储的事件数据 了解更多信息。输入数据文件的最大大小为 20 千兆字节 (GB),或大约 5000 万个事件。活动数量将因您的活动规模而异。如果导入任务成功,则输出文件为空。如果导入不成功,则输出文件包含错误日志。

创建 CSV 文件

Amazon Fraud Detector 仅从逗号分隔值 (CSV) 格式的文件导入数据。CSV 文件的第一行必须包含与关联事件类型中定义的变量完全匹配的列标题以及四个必需变量:EVENT_ID、EVENT_TIMESTAMP、ENTITY_ID 和 ENTITY_TYPE。您还可以选择包括 EVENT_LABEL 和 LABEL_TIMESTAMP(如果包含 EVENT_LABEL,则需要 LABEL_TIMESTAMP)。

定义强制变量

强制变量被视为事件元数据,必须以大写形式指定。模型训练时会自动包含事件元数据。下表列出了强制变量、每个变量的描述以及变量所需的格式。

名称 描述 要求

EVENT_ID

事件的标识符。例如,如果您的活动是在线交易,则 EVENT_ID 可能是提供给客户的交易参考号。

  • 批量导入任务需要 EVENT_ID。

  • 此名称对于该事件来说必须是唯一的。

  • 它应该代表对您的业务有意义的信息。

  • 此名称必须满足正则表达式模式(例如^[0-9a-z_-]+$.)

  • 我们不建议您将时间戳附加到 EVENT_ID。这样做可能会在更新事件时导致问题。这是因为如果您这样做,则必须提供完全相同的 EVENT_ID。

事件时间戳

事件发生时的时间戳。时间戳必须采用 UTC 的 ISO 8601 标准。

  • 批量导入任务需要 EVENT_TIMESTAMP。

  • 此名称必须按以下其中一种格式指定:

    • %yyyy-%mm-%ddt%HH: %mm: %ssz(仅限世界标准时间的 ISO 8601 标准,没有毫秒)

      示例:2019-11-30T13:01:01 Z

    • %yyyy/%mm/%dd %hh: %mm: %ss (AM/PM)

      示例:2019/11/30 1:01:01 下午,或 2019/11/30 13:01:01

    • %mm/%dd/%yyyy %hh: %mm: %ss

      示例:2019 年 11 月 30 日下午 1:01:01,2019 年 11 月 30 日 13:01:01

    • %mm/%dd/%yy %hh: %mm: %ss

      示例:11/30/19 1:01:01 下午,11/30/19 13:01:01

  • Amazon Fraud Detector 在解析事件时间戳的日期/时间戳格式时会做出以下假设:

    • 如果您使用的是 ISO 8601 标准,则它必须与前面的规范完全匹配

    • 如果您使用的是其他格式之一,则还有额外的灵活性:

      • 对于几个月和几天,您可以提供个位数或两位数。例如,2019 年 12 月 1 日是一个有效日期。

      • 如果您没有 hh: mm: ss,则无需包含 hh: mm: ss(也就是说,您可以简单地提供日期)。您也可以只提供小时和分钟的子集(例如,hh: mm)。不支持仅提供小时数。也不支持毫秒。

      • 如果您提供 AM/PM 标签,则假定时钟为 12 小时。如果没有 AM/PM 信息,则假定为 24 小时制。

      • 您可以使用 “/” 或 “-” 作为日期元素的分隔符。假定时间戳元素为 “:”。

实体_ID

执行事件的实体的标识符。

  • 批量导入任务需要 ENTITY_ID

  • 它必须遵循正则表达式模式:^[0-9A-Za-z_.@+-]+$.

  • 如果实体 ID 在评估时不可用,请将实体 ID 指定为未知

实体类型

执行活动的实体,例如商家或客户

批量导入任务需要 ENTITY_TYPE

事件标签

将事件分类为fraudulentlegitimate

如果包含 LABEL_TIMESTAMP,则需要 EVENT_LABEL

标签时间戳

上次填充或更新事件标签的时间戳

  • 如果包含 EVENT_LABEL,则需要 LABEL_TIMESTAMP。

  • 此名称必须遵循时间戳格式。

将 CSV 文件上载到 Amazon S3 进行批量导入

使用数据创建 CSV 文件后,将文件上传到 Amazon S3 存储桶。

要将事件数据上传到 Amazon S3 存储桶
  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 请选择 Create bucket(创建桶)

    此时将打开 Create bucket(创建桶)向导。

  3. Bucket name(桶名称)中,输入符合 DNS 标准的桶名称。

    桶名称必须满足以下要求:

    • 在所有 Amazon S3 中是唯一的。

    • 长度必须介于 3 到 63 个字符之间。

    • 不包含大写字符。

    • 以小写字母或数字开头。

    创建存储桶后,便无法再更改其名称。有关命名存储桶的信息,请参阅《Amazon Service 用户指南》中的存储桶命名规则

    重要

    避免在存储桶名称中包含敏感信息,如账号。桶名称会显示在指向桶中的对象的 URL 中。

  4. 对于 Region(区域),选择要放置存储桶的AWS区域。您必须选择使用 Amazon (N. Virginia)、美国东部(俄亥俄州)、美国西部(俄勒冈)、欧洲(爱尔兰)、亚太区域(新加坡)或亚太区域(悉尼)。

  5. Bucket settings for Block Public Access(阻止公有访问的桶设置)中,请选择要应用于桶的 Block Public Access(阻止公有访问)设置。

    我们建议您将所有设置保留为启用状态。有关阻止公有访问的更多信息,请参阅《Amazon Service 用户指南》中的阻止公有访问您的 Amazon S3 存储空间

  6. 选择创建桶

  7. 将训练数据文件上传到 Amazon S3 存储桶。记下您的培训文件的 Amazon S3 位置路径(例如 s3://bucketname/object.csv)。

在亚马逊Fraud Detector 控制台中Batch 导入事件数据

您可以使用CreateBatchImportJob API 或 AWS SDK 在 Amazon Fraud Detector 控制台中轻松导入大量事件数据集。在继续操作之前,请确保您已按照说明将数据集准备为 CSV 文件。确保您还将 CSV 文件上传到 Amazon S3 存储桶。

使用亚马逊Fraud Detector 控制台

在控制台中批量导入事件数据
  1. 打开 AWS 控制台并登录您的账户,然后导航到 Amazon Fraud Detector。

  2. 在左侧导航窗格中,选择事件

  3. 选择事件类型。

  4. 选择 “存储的事件” 选项卡。

  5. 存储的事件详细信息窗格中,确保事件提取处于开状态

  6. 导入事件数据窗格中,选择新建导入

  7. 在新事件导入页面中,提供以下信息:

    • [推荐] 保留此数据集的 “启用智能数据验证”-新设置为默认设置。

    • 对于数据的 IAM 角色,选择您为保存您计划导入的 CSV 文件的 Amazon S3 存储桶创建的 IAM 角色。

    • 输入数据位置中,输入存放 CSV 文件的 S3 位置。

    • 如果您想指定一个单独的位置来存储导入结果,请单击 “将输入和结果的数据位置分开” 按钮,并提供有效的 Amazon S3 存储桶位置。

    重要

    确保您选择的 IAM 角色对您的输入 Amazon S3 存储桶具有读取权限,对您的输出 Amazon S3 存储桶具有写入权限。

  8. 选择开始

  9. 导入事件数据窗格中的状态列显示您的验证和导入任务的状态。顶部的横幅提供了对数据集状态的高级描述,因为您的数据集首先经过验证,然后再进行导入。

  10. 按照提供的指导进行操作监控数据集验证和导入作业的进度

监控数据集验证和导入作业的进度

如果您使用 Amazon Fraud Detector 控制台执行批量导入任务,则默认情况下,Amazon Fraud Detector 会在导入之前验证您的数据集。您可以在 Amazon Fraud Detector 控制台的新事件导入页面监控验证的进度和状态并导入任务。页面顶部的横幅简要描述验证结果和导入作业的状态。根据验证结果和导入任务的状态,您可能需要采取措施来确保成功验证和导入数据集。

下表详细介绍了根据验证和导入操作的结果必须采取的操作。

横幅消息 状态 含义 我该怎么办
数据验证已开始 验证持续改善 SDV 已开始验证您的数据集 等待状态改变
由于数据集中的错误,无法继续进行数据验证。修复数据文件中的错误并开始新的导入任务。有关更多信息,请参阅验证报告 验证失败 SDV 在您的数据文件中发现了问题。要成功导入数据集,必须解决这些问题。 导入事件数据窗格中,选择Job ID 并查看验证报告。按照报告中的建议解决列出的所有错误。有关更多信息,请参阅使用验证报告
数据导入已开始。验证成功完成 导入持续改善 您的数据集通过了验证。AFD 已开始导入您的数据集 等待状态改变
验证已完成,但出现警告。数据导入已开始 导入持续改善 您的数据集中的某些数据未通过验证。但是,通过验证的数据符合导入的最低数据大小要求。 监视标语中的消息并等待状态更改
您的数据已部分导入。一些数据未通过验证,未被导入。有关更多信息,请参阅验证报告。 已导入。状态显示警告图标。 您的数据文件中验证失败的某些数据未被导入。通过验证的其余数据均已导入。 导入事件数据窗格中,选择Job ID 并查看验证报告。按照数据级别警告表中的建议解决列出的警告。您无需解决所有警告。但是,要成功导入,请确保您的数据集有超过 50% 的数据通过验证。解决警告后,开始新的导入任务。有关更多信息,请参阅使用验证报告
由于处理错误,数据导入失败。开始新的数据导入任务 导入失败 由于暂时性运行时错误,导入失败 开始新的导入任务
数据已成功导入 已导入 验证和导入均成功完成 选择导入任务的Job ID 以查看详细信息,然后继续进行模型训练
注意

我们建议在数据集成功导入 Amazon Fraud Detector 后等待 10 分钟,以确保它们被系统完全吸收。

智能数据验证报告

智能数据验证会在验证完成后创建验证报告。验证报告详细介绍了 SDV 在您的数据集中发现的所有问题,并建议采取哪些措施来修复最具影响力的问题。您可以使用验证报告来确定问题是什么、问题在数据集中的位置、问题的严重程度以及如何修复它们。即使验证成功完成,也会创建验证报告。在这种情况下,您可以查看报告以查看是否列出了任何问题,如果有,则决定是否要修复其中的任何问题。

注意

当前版本的 SDV 会扫描您的数据集以查找可能导致批量导入失败的问题。如果验证和批量导入成功,您的数据集仍可能存在可能导致模型训练失败的问题。即使验证和导入成功,我们也建议您查看验证报告,并解决报告中列出的任何问题以成功进行模型训练。解决问题后,创建新的批量导入任务。

访问验证报告

验证完成后,您可以随时使用以下选项之一访问验证报告:

  1. 验证完成后,导入任务正在进行中,在顶部横幅中选择查看验证报告

  2. 导入任务完成后,在导入事件数据窗格中,选择刚刚完成的导入任务的Job ID。

使用验证报告

导入任务的验证报告页面提供此导入任务的详细信息、发现的严重错误列表、有关数据集中特定事件(行)的警告列表(如果找到),以及数据集的简短摘要,其中包括无效值和每个变量的缺失值等信息。

  • 导入任务详情

    提供导入作业的详细信息。如果导入任务失败或数据集已部分导入,请选择转到结果文件以查看导入失败事件的错误日志。

  • 严重错误

    提供 SDV 确定的数据集中最具影响力的问题的详细信息。此窗格中列出的所有问题都很关键,在继续导入之前必须解决这些问题。如果您尝试在未解决关键问题的情况下导入数据集,则导入任务可能会失败。

    要解决关键问题,请遵循针对每个警告提供的建议。解决了 “严重错误” 窗格中列出的所有问题后,创建新的批量导入作业。

  • 数据级别警告

    提供数据集中特定事件(行)的警告摘要。如果填充了数据级别警告窗格,则数据集中的某些事件未通过验证且未导入。

    对于每个警告,描述列显示有问题的事件数量。而且,示例事件 ID 提供了部分示例事件 ID 列表,您可以将其用作起点来查找存在问题的其余事件。使用为警告提供的建议来解决问题。也可以使用输出文件中的错误日志来获取有关该问题的更多信息。错误日志是针对所有批量导入失败的事件生成的。要访问错误日志,请在导入作业详细信息窗格中选择转到结果文件

    注意

    如果数据集中超过 50% 的事件(行)未通过验证,则导入任务也会失败。在这种情况下,必须先修复数据,然后才能开始新的导入任务。

  • 数据集摘要

    提供数据集验证报告的摘要。如果 “警告数量” 列显示的警告超过 0 个,请决定是否需要修复这些警告。如果警告数列显示为 0,请继续训练您的模型。

使用适用于 Python 的 AWS 软件开发工具包 (Boto3) Batch 导入事件数据

下面的示例显示对 CreateBatchImportJobAPI 的示例请求。批量导入任务必须包含 jobIDInputPathOutputPath eventTypeNameiamRoleArn。除非作业在 CREATE_FAILED 状态下存在,否则 joBid 不能包含与过去作业相同的 ID。输入路径和输出路径必须是有效的 S3 路径。您可以选择不在 OutputPath 中指定文件名,但是,您仍然需要提供有效的 S3 存储桶位置。 eventTypeName 和 iamRoleArn 必须存在。IAM 角色必须授予输入 Amazon S3 存储桶的读取权限和输出 Amazon S3 存储桶的写入权限。

import boto3 fraudDetector = boto3.client('frauddetector') fraudDetector.create_batch_import_job ( jobId = 'sample_batch_import', inputPath = 's3://bucket_name/input_file_name.csv', outputPath = 's3://bucket_name/', eventTypeName = 'sample_registration', iamRoleArn: 'arn:aws:iam::************:role/service-role/AmazonFraudDetector-DataAccessRole-*************' )

取消批量导入任务

您可以随时在 Amazon Fraud Detector 控制台中使用CancelBatchImportJob API 或 AWS SDK 取消正在进行的批量导入任务。

要在控制台中取消批量导入任务,
  1. 打开 AWS 控制台并登录您的账户,然后导航到 Amazon Fraud Detector。

  2. 在左侧导航窗格中,选择事件

  3. 选择事件类型。

  4. 选择 “存储的事件” 选项卡。

  5. 导入事件数据窗格中,选择要取消的正在进行的导入任务的作业 ID。

  6. 在事件作业页面中,单击 “操作”,然后选择 “取消事件导入”。

  7. 选择 “停止事件导入” 以取消批量导入作业。

使用适用于 Python 的 AWS 软件开发工具包 (Boto3) 取消批量导入任务

下面的示例显示对CancelBatchImportJob API 的示例请求。取消导入任务必须包含正在进行的批量导入作业的任务 ID。

import boto3 fraudDetector = boto3.client('frauddetector') fraudDetector.cancel_batch_import_job ( jobId = 'sample_batch' )