

截至 2025 年 11 月 7 日，亚马逊 Fraud Detector 不再向新客户开放。要获得与 Amazon Fraud Detector 类似的功能 SageMaker，请浏览亚马逊 AutoGluon、和 AWS WAF。

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

# 欺诈预测
<a name="getting-fraud-predictions"></a>

您可以使用 Amazon Fraud Detector 实时获取单个事件的欺诈预测，也可以对一系列事件进行离线欺诈预测。要生成单个事件或一组事件的欺诈预测，您需要向 Amazon Fraud Detector 提供以下信息：
+ 欺诈预测逻辑
+ 事件元数据

**欺诈检测逻辑**

欺诈预测逻辑使用一个或多个规则来评估与事件相关的数据，然后提供结果和欺诈预测分数。您可以使用以下组件创建欺诈预测逻辑：
+ 事件类型-定义事件的结构
+ 模型-定义预测欺诈的算法和数据要求
+ 变量-表示与事件关联的数据元素
+ 规则——告诉 Amazon Fraud Detector 在欺诈预测期间如何解释变量值
+ 结果-欺诈预测得出的结果
+ 探测器版本-包含特定事件的欺诈预测逻辑

有关用于创建欺诈检测逻辑的组件的更多信息，请参阅 [Amazon Fraud Detector 概念](https://docs.aws.amazon.com/frauddetector/latest/ug/frauddetector-ml-concepts.html)。在开始生成欺诈预测之前，请确保您已创建并发布了包含欺诈预测逻辑的检测器版本。您可以使用 Fraud Detector 控制台或 API 创建和发布探测器版本。有关使用控制台的说明，请参阅[入门（控制台）](https://docs.aws.amazon.com/frauddetector/latest/ug/get-started.html)。有关使用 API 的说明，请参阅[创建检测器版本](https://docs.aws.amazon.com/frauddetector/latest/ug/create-a-detector-version.html)。

**事件元数据**

事件元数据提供正在评估的事件的详细信息。您要评估的每个事件都必须包含与您的探测器版本关联的事件类型中每个变量的值。此外，您的活动元数据必须包括以下内容：
+ EVENT\$1ID-事件的标识符。例如，如果您的活动是在线交易，则 EVENT\$1ID 可能是提供给客户的交易参考号。

  **有关 EVENT\$1ID 的重要注意事项**
  + 对于该事件，必须是唯一的
  + 应代表对您的业务有意义的信息
  + 必须满足正则表达式模式：`^[0-9a-z_-]+$.`
  + 必须保存。EVENT\$1ID 是事件的参考，用于对事件执行操作，例如删除事件。
  + 不建议在 EVENT\$1ID 上附加时间戳，因为你需要提供完全相同的 EVENT\$1ID，因为你需要提供完全相同的 EVENT\$1ID，因此在稍后更新事件时可能会导致问题。
+ ENTITY\$1TYPE — 执行活动的实体，例如商家或客户。
+ ENTITY\$1ID-执行事件的实体的标识符。ENTITY\$1ID 必须满足以下正则表达式模式：。`^[0-9a-z_-]+$`如果 ENTITY\$1ID 在评估时不可用，则传递未知字符串。
+ EVENT\$1TIMESTAMP-事件发生的时间戳。时间戳必须采用 ISO 8601 标准（UTC）。

# 实时预测
<a name="real-time-fraud-prediction"></a>

您可以通过调用 `GetEventPrediction` API 来实时评估在线活动是否存在欺诈行为。您在每个请求中提供有关单个事件的信息，并根据与指定检测器关联的欺诈预测逻辑同步接收模型分数和结果。

## 实时欺诈预测的工作原理
<a name="how-real-time-prediction-works"></a>

`GetEventPrediction`API 使用指定的检测器版本来评估为事件提供的事件元数据。在评估期间，Amazon Fraud Detector 首先为添加到检测器版本的模型生成模型分数，然后将结果传递给评估规则进行评估。规则按照规则执行模式的指定执行（请参阅[创建检测器版本](https://docs.aws.amazon.com/frauddetector/latest/ug/create-a-detector-version.html)）。作为响应的一部分，Amazon Fraud Detector 会提供模型分数以及与匹配规则相关的任何结果。

## 获取实时欺诈预测
<a name="gettting-real-time-prediction"></a>

要获得实时欺诈预测，请确保您已创建并发布了包含您的欺诈预测模型和规则的探测器，或者只是一个规则集。

您可以使用 AWS 命令行界面 (AWS CLI) 或其中一个 Amazon Fraud Detector 调用 [GetEventPrediction](https://docs.aws.amazon.com/frauddetector/latest/api/API_GetEventPrediction.html)API 操作，从而实时预测某一事件的欺诈行为 SDKs。

要使用 API，请在每个请求中提供单个事件的信息。作为请求的一部分，您必须指`detectorId`定 Amazon Fraud Detector 将使用它来评估事件。您可以选择指定`detectorVersionId`。如果未指定 a`detectorVersionId`，Amazon Fraud Detector 将使用探测器的`ACTIVE `版本。

您可以选择通过在现场传递数据来发送数据以调用 SageMaker AI 模型`externalModelEndpointBlobs`。

### 使用获取欺诈预测 适用于 Python (Boto3) 的 AWS SDK
<a name="get-a-fraud-prediction-using-the-aws-python-sdk"></a>

要生成欺诈预测，请调用 `GetEventPrediction` API。以下示例假设您已完成[B 部分：生成欺诈预测](part-b.md)。作为响应的一部分，您将收到模型分数以及任何匹配的规则和相应的结果。您可以在[aws-fraud-detector-samples GitHub 存储库](https://github.com/aws-samples/aws-fraud-detector-samples)中找到其他`GetEventPrediction`请求示例。

```
import boto3
fraudDetector = boto3.client('frauddetector')

fraudDetector.get_event_prediction(
detectorId = 'sample_detector',
eventId = '802454d3-f7d8-482d-97e8-c4b6db9a0428',
eventTypeName = 'sample_registration',
eventTimestamp = '2020-07-13T23:18:21Z',
entities = [{'entityType':'sample_customer', 'entityId':'12345'}],
eventVariables = {
    'email_address' : 'johndoe@exampledomain.com',
    'ip_address' : '1.2.3.4'
}
)
```

# 批量预测
<a name="batch-predictions"></a>

您可以在 Amazon Fraud Detector 中使用*批量预测*作业来预测一组不需要实时评分的事件。例如，您可以创建一个批量预测任务来执行离线任务 proof-of-concept，或者每小时、每天或每周对事件风险进行回顾性评估。

您可以使用 [Amazon Fraud Detector 控制台](https://console.aws.amazon.com/frauddetector)创建批量预测任务，也可以使用 AWS 命令行界面 (AWS CLI) 或其中一个亚马逊欺诈检测器调用 [CreateBatchPredictionJob](https://docs.aws.amazon.com/frauddetector/latest/api/API_CreateBatchPredictionJob.html)API 操作 SDKs。

**Topics**
+ [批量预测的工作原理](#how-batch-predictions-works)
+ [输入和输出文件](#input-and-output-files)
+ [获取批量预测](#getting-batch-predictions)
+ [有关 IAM 角色的指南](#guidance-iam-roles)
+ [使用获取批量欺诈预测 适用于 Python (Boto3) 的 AWS SDK](#get-a-batch-fraud-prediction-using-the-aws-python-sdk)

## 批量预测的工作原理
<a name="how-batch-predictions-works"></a>

`CreateBatchPredictionJob`API 操作使用指定的检测器版本，根据位于 Amazon S3 存储桶中的输入 CSV 文件中提供的数据进行预测。然后，API 会将生成的 CSV 文件返回到 S3 存储桶。

Batch 预测作业以与`GetEventPrediction`操作相同的方式计算模型分数和预测结果。与创建批量预测作业类似，首先要创建事件类型，也可以训练模型，然后创建一个检测器版本来评估批处理作业中的事件。`GetEventPrediction`

批量预测作业评估的事件风险评分的定价与 `GetEventPrediction` API 创建的分数的定价相同。有关详情，请参阅 [Amazon Fraud Detector 定价](https://aws.amazon.com/fraud-detector/pricing/)。

一次只能运行一个批量预测作业。

## 输入和输出文件
<a name="input-and-output-files"></a>

 输入 CSV 文件应包含与所选检测器版本关联的事件类型相匹配的标头。输入数据文件的最大大小为 1GB。活动数量将因您的活动规模而异。

除非您为输出数据指定单独的位置，否则 Amazon Fraud Detector 会在与输入文件相同的存储桶中创建输出文件。输出文件包含来自输入文件的原始数据和以下附加列：
+ `MODEL_SCORES`— 详细说明与所选探测器版本关联的每个模型中事件的模型分数。
+ `OUTCOMES`— 详细说明所选探测器版本及其规则所评估的事件结果。
+ `STATUS`— 表示是否成功评估了事件。如果未成功评估事件，则此列显示失败的原因代码。
+ ` RULE_RESULTS`— 基于规则执行模式的所有匹配规则的列表。

## 获取批量预测
<a name="getting-batch-predictions"></a>

以下步骤假设您已经创建了事件类型，使用该事件类型训练了模型（可选），并为该事件类型创建了检测器版本。

**获取批量预测**

1. 登录 AWS 管理控制台 并打开 Amazon Fraud Detector 控制台，网址为 [https://console.aws.amazon.com/fra](https://console.aws.amazon.com/frauddetector) uddetector。

1. 在 Amazon Fraud Detector 控制台的左侧导航窗格中，选择 “**批量预测**”，然后选择 “**新建批量预测**”。

1. 在 **Job 名称**中，为您的批量预测作业指定一个名称。如果您不指定名称，Amazon Fraud Detector 会随机生成一个任务名称。

1. 在 D **etec** tor 中，为该批量预测选择检测器。

1. 在**探测器版本**中，为该批量预测选择检测器版本。您可以选择任何状态的探测器版本。如果您的探测器的探测器版本处于`Active`状态，则会自动选择该版本，但您也可以根据需要更改此选择。

1. 在 **IAM 角色**中，选择或创建对您的输入和输出 Amazon S3 存储桶具有读写权限的角色。请参阅[有关 IAM 角色的指南](#guidance-iam-roles)了解更多信息。

   要获得批量预测，调用该`CreateBatchPredictionJob`操作的 IAM 角色必须具有对输入 S3 存储桶的读取权限和对输出 S3 存储桶的写入权限。有关存储桶权限的更多信息，请参阅 *Amazon S3 用户指南中的用户*[策略示例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html)。

1. 在**输入数据位置**中，指定输入数据的 Amazon S3 位置。如果您想将输出文件放在不同的 S3 存储桶中，请选择**单独的数据位置进行输出，然后为您的输出**数据提供 Amazon S3 位置。

1. （可选）为您的批量预测作业创建标签。

1. 选择**启动**。

   Amazon Fraud Detector 会创建批量预测作业，该任务的状态为`In progress`。Batch 预测任务的处理时间因事件数量和检测器版本配置而异。

要停止正在进行的批量预测作业，请转到批量预测作业详细信息页面，选择**操作**，然后选择**停止批量预测**。如果您停止批量预测作业，则不会收到该作业的任何结果。

当批量预测任务的状态更改为时`Complete`，您可以从指定的输出 Amazon S3 存储桶中检索任务的输出。输出文件的名称采用以下格式`batch prediction job name_file creation timestamp_output.csv`。例如，名为的作业的输出文件`mybatchjob`是`mybatchjob_ 1611170650_output.csv`。

要搜索由批量预测任务评估的特定事件，请在 Amazon Fraud Detector 控制台的左侧导航窗格中，选择**搜索过去的预测**。

要删除已完成的批量预测作业，请转到批量预测作业详细信息页面，选择**操作**，然后选择**删除批量预测**。

## 有关 IAM 角色的指南
<a name="guidance-iam-roles"></a>

要获得批量预测，调用该[CreateBatchPredictionJob](https://docs.aws.amazon.com/frauddetector/latest/api/API_CreateBatchPredictionJob.html)操作的 IAM 角色必须具有对输入 S3 存储桶的读取权限和对输出 S3 存储桶的写入权限。有关存储桶权限的更多信息，请参阅 Amazon S3 用户指南中的用户策略示例。在 Amazon Fraud Detector 控制台上，您可以通过三个选项为批量预测选择 IAM 角色：

1. 在创建新的 Batch Prediction 作业时创建角色。

1. 选择您之前在 Amazon Fraud Detector 控制台中创建的现有 IAM 角色。在执行此步骤之前，请务必为该角色添加`S3:PutObject`权限。

1. 为之前创建的 IAM 角色输入自定义 ARN。

如果您收到与您的 IAM 角色相关的错误，请验证以下内容：

1. 您的 Amazon S3 输入和输出存储桶与您的探测器位于同一区域。

1. 您正在使用的 IAM 角色拥有您的输入 S3 存储桶的`s3:PutObject`权限和对输出 S3 存储桶的权限。`s3:GetObject`

1. 您正在使用的 IAM 角色具有服务委托人的信任策略`frauddetector.amazonaws.com`。

## 使用获取批量欺诈预测 适用于 Python (Boto3) 的 AWS SDK
<a name="get-a-batch-fraud-prediction-using-the-aws-python-sdk"></a>

以下示例显示了 [CreateBatchPredictionJob](https://docs.aws.amazon.com/frauddetector/latest/api/API_CreateBatchPredictionJob.html)API 的示例请求。批量预测作业必须包含以下现有资源：检测器、检测器版本和事件类型名称。以下示例假设您已经创建了事件类型`sample_registration``sample_detector`、检测器和检测器版本`1`。

```
import boto3
fraudDetector = boto3.client('frauddetector')

fraudDetector.create_batch_prediction_job (
   jobId = 'sample_batch',
   inputPath = 's3://bucket_name/input_file_name.csv',
   outputPath = 's3://bucket_name/',
   eventTypeName = 'sample_registration',
   detectorName = 'sample_detector',
   detectorVersion = '1',
   iamRoleArn = 'arn:aws:iam::**:role/service-role/AmazonFraudDetector-DataAccessRole-**'
)
```

# 预测解释
<a name="prediction-explanation"></a>

预测解释可以深入了解每个事件变量如何影响模型的欺诈预测分数，并作为欺诈预测的一部分自动生成。每项欺诈预测的风险评分都介于 1 到 1000 之间。预测解释详细介绍了每个事件变量对风险评分的影响，包括幅度（0-5，5 表示最高）和方向（驾驶分数提高或降低）。您也可以对以下任务使用预测解释：
+ 在将事件标记为待审核时，在手动调查期间确定最重要的风险指标。
+ 缩小导致误报预测的根本原因（例如，合法事件的高风险评分）。
+ 分析事件数据的欺诈模式并检测数据集中的偏差（如果有）。

**重要**  
预测解释是自动生成的，仅适用于在 *2021 年 6 月 30 日*当天或之后训练的模型。要获得在 *2021 年 6 月 30 日*之前训练的模型的预测说明，请重新训练这些模型。

预测解释为用于训练模型的每个事件变量提供以下一组值。

 **相对影响**

提供变量对欺诈预测分数的影响的可视参考。相对影响值包括欺诈风险的星级（0-5，5 表示最高）和方向（增加/减少）影响。
+ 增加欺诈风险的变量用红色星星表示。红色星星的数量越多，变量越能提高欺诈分数并增加欺诈的可能性。
+ 降低欺诈风险的变量由绿色星星表示。绿色开局次数越多，变量就越能降低欺诈风险评分，欺诈的可能性就会降低。
+ 所有变量的零星表示这些变量本身都没有显著改变欺诈风险。

**原始解释值**

提供未解释的原始值，表示为欺诈的对数赔率。这些值通常介于 -10 到 \$110 之间，但范围从-无穷大到 \$1 无穷大。
+ 正值表示该变量推动了风险评分的提高。
+ 负值表示该变量降低了风险评分。

在 Amazon Fraud Detector 控制台中，预测解释值显示如下。彩色星评级和相应的原始数值可以很容易地看到变量之间的相对影响。

![\[预测解释图：增加风险的变量和降低欺诈风险的变量，以及每个变量的相对影响和原始解释值。\]](http://docs.aws.amazon.com/zh_cn/frauddetector/latest/ug/images/PredictionExplanationPane.png)


## 查看预测解释
<a name="view-prediction-explanations"></a>

生成欺诈预测后，您可以在 Amazon Fraud Detector 控制台中查看预测说明。要使用 APIs AWS SDK 查看预测解释，必须先调用 `ListEventPrediction` API 以获取事件的预测时间戳，然后调用 `GetEventPredictionMetadata` API 以获取预测解释。

### 使用 Amazon Fraud Detector 控制台查看预测解释
<a name="view-prediction-explanations-console"></a>

**要使用控制台查看预测说明，**

1. 打开 AWS 控制台并登录您的账户。导航至 Amazon Fraud Detector。

1. 在左侧导航窗格中，选择 “**搜索过去的预测**”。

1. 使用 “**属性**”、“**运算符**” 和 “**值**” 筛选器来选择要查看的预测。

1. 在顶部的**筛选器**窗格中，确保选择生成要查看的预测的时间段。

1. **结果**窗格显示在指定时间段内生成的所有预测的列表。单击预测的事件 ID 以查看预测解释。

1. 向下滚动到 “**预测解释**” 窗格。

1. 将**显示原始预测解释值**按钮设置为**开启**以查看所有变量的原始预测解释值。

### 使用适用于 Python 的 AWS 开发工具包 (Boto3) 查看预测解释
<a name="view-prediction-explanations-sdk"></a>

以下示例显示了使用`ListEventPredictions`和`GetEventPredictionMetadata` APIs 从 AWS SDK 中查看预测说明的示例请求。

**示例 1：使用 `ListEventPredictions` API 获取最新预测列表**

```
import boto3 
fraudDetector = boto3.client('frauddetector') 
fraudDetector.list_event_predictions(  
  maxResults = 10, 
  predictionTimeRange = {
     end_time: '2022-01-13T23:18:21Z',
     start_time: '2022-01-13T20:18:21Z'
    }
 )
```

**示例 2；使用 `ListEventPredictions` API 获取过去对事件类型 “注册” 的预测列表**

```
import boto3 
fraudDetector = boto3.client('frauddetector') 
fraudDetector.list_event_predictions(  
   eventType = {
      value = 'registration'
    } 
   maxResults = 70,
   nextToken = "10",
   predictionTimeRange = {
     end_time: '2021-07-13T23:18:21Z',
     start_time: '2021-07-13T20:18:21Z'
    }
 )
```

**示例 3：使用 `GetEventPredictionMetadata` API 获取在指定时间段内生成的指定事件 ID、事件类型、检测器 ID 和检测器版本 ID 的过去预测的详细信息。**

为该请求`predictionTimestamp`指定的值是通过首先调用 `ListEventPredictions` API 获得的。

```
import boto3 
fraudDetector = boto3.client('frauddetector') 
fraudDetector.get_event_prediction_metadata ( 
   detectorId = 'sample_detector',
   detectorVersionId = '1', 
   eventId = '802454d3-f7d8-482d-97e8-c4b6db9a0428', 
   eventTypeName = 'sample_registration', 
   predictionTimestamp = '2021-07-13T21:18:21Z' 
 )
```

## 了解预测解释是如何计算的
<a name="how-prediction-explanations-calculated"></a>

Amazon Fraud Detector 使用 [SHAP（SHapeley 加法解释）](https://arxiv.org/abs/1705.07874)通过计算用于模型训练的每个事件变量**的原始解释值**来解释单个事件的预测。原始解释值由模型在生成预测时作为分类算法的一部分进行计算。这些原始解释值表示每个输入对欺诈几率对数的贡献。使用映射将原始解释值（从-infinity到\$1infinity）转换为**相对影响值**（-5 到 \$15）。从原始解释值中得出的相对影响值表示欺诈（正面）或合法（负）几率增加的次数，因此更容易理解预测解释。