

自 2025 年 11 月 7 日起，Amazon Fraud Detector 不再向新客戶開放。對於類似 Amazon Fraud Detector 的功能，請探索 Amazon SageMaker、AutoGluon 和 AWS WAF。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：開始使用 適用於 Python (Boto3) 的 AWS SDK
<a name="getting-started-python"></a>

本教學課程說明如何建置和訓練 Amazon Fraud Detector 模型，然後使用此模型來使用 產生即時詐騙預測 適用於 Python (Boto3) 的 AWS SDK。模型使用您上傳至 Amazon S3 儲存貯體的帳戶註冊範例資料檔案進行訓練。

在本教學課程結束時，您會完成下列動作：
+ 建置和訓練 Amazon Fraud Detector 模型
+ 產生即時詐騙預測

## 先決條件
<a name="gs-sdk-prerequisites"></a>

以下是本教學課程的先決條件步驟。
+ 已完成 [設定 Amazon Fraud Detector](set-up.md)。

  如果您已有 [設定 AWS SDK](set-up.md#set-up-sdk)，請確定您使用的是 Boto3 SDK 1.14.29 版或更新版本。
+ 遵循本教學課程所需的[取得和上傳範例資料集](step-1-get-s3-data.md)檔案指示。

## 開始使用
<a name="get-started-python"></a>

### 步驟 1：設定和驗證您的 Python 環境
<a name="setup-and-verify-your-python-environment"></a>

Boto 是適用於 Python 的 Amazon Web Services (AWS) SDK。您可以使用它來建立、設定和管理 AWS 服務。如需如何安裝 Boto3 的指示，請參閱適用於 [Python 的 AWS 開發套件 (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)。

安裝之後 適用於 Python (Boto3) 的 AWS SDK，請執行下列 Python 範例命令，以確認您的環境已正確設定。如果您的環境設定正確，回應會包含偵測器清單。如果未建立偵測器，則清單為空白。

```
import boto3
fraudDetector = boto3.client('frauddetector')
            
response = fraudDetector.get_detectors()
print(response)
```

### 步驟 2：建立變數、實體類型和標籤
<a name="create-variables-entity-type-and-labels"></a>

在此步驟中，您會建立用來定義模型、事件和規則的資源。

#### 建立變數
<a name="create-variable-gs-sdk"></a>

變數是資料集的資料元素，您想要用來建立事件類型、模型和規則。

在下列範例中，[CreateVariable](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateVariable.html) API 用於建立兩個變數。變數為 `email_address`和 `ip_address`。將它們指派給對應的變數類型： `EMAIL_ADDRESS`和 `IP_ADDRESS`。這些變數是您上傳的範例資料集的一部分。當您指定變數類型時，Amazon Fraud Detector 會在模型訓練期間和取得預測時解譯變數。只有具有相關聯變數類型的變數才能用於模型訓練。

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

 #Create variable email_address
fraudDetector.create_variable(
    name = 'email_address',
    variableType = 'EMAIL_ADDRESS',
    dataSource = 'EVENT',
    dataType = 'STRING',
    defaultValue = '<unknown>'
)

#Create variable ip_address
fraudDetector.create_variable(
    name = 'ip_address',
    variableType = 'IP_ADDRESS',
    dataSource = 'EVENT',
    dataType = 'STRING',
    defaultValue = '<unknown>'
)
```

#### 建立實體類型
<a name="create-entity-gs-sdk"></a>

實體代表執行事件的人員，而實體類型會分類實體。範例分類包括*客戶*、*商家*或*帳戶*。

在下列範例中，[PutEntityType](https://docs.aws.amazon.com//frauddetector/latest/api/API_PutEntityType.html) API 用於建立`sample_customer`實體類型。

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

fraudDetector.put_entity_type(
   name = 'sample_customer',
   description = 'sample customer entity type'
)
```

#### 建立標籤
<a name="create-label-gs-sdk"></a>

標籤會將事件分類為詐騙或合法，並用於訓練詐騙偵測模型。模型會學習使用這些標籤值來分類事件。

在下列範例中，[Putlabel](https://docs.aws.amazon.com//frauddetector/latest/api/API_PutLabel.html) API 用於建立兩個標籤 `fraud`和 `legit`。

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

fraudDetector.put_label(
    name = 'fraud',
    description = 'label for fraud events'
)

fraudDetector.put_label(
    name = 'legit',
    description = 'label for legitimate events'
)
```

### 步驟 3：建立事件類型
<a name="python-create-event-type"></a>

使用 Amazon Fraud Detector，您可以建立評估風險並產生個別事件詐騙預測的模型。事件類型會定義個別事件的結構。

在下列範例中，[PutEventType](https://docs.aws.amazon.com//frauddetector/latest/api/API_PutEventType.html) API 用於建立事件類型 `sample_registration`。您可以透過指定您在上一個步驟中建立的變數 (`email_address`、`ip_address`)、實體類型 (`sample_customer`) 和標籤 (`fraud`、`legit`) 來定義事件類型。

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

fraudDetector.put_event_type (
     name = 'sample_registration',
     eventVariables = ['ip_address', 'email_address'],
     labels = ['legit', 'fraud'],
     entityTypes = ['sample_customer'])
```

### 步驟 4：建立、訓練和部署模型
<a name="python-create-and-train-a-model"></a>

Amazon Fraud Detector 會訓練模型，以學習偵測特定事件類型的詐騙。在上一個步驟中，您已建立事件類型。在此步驟中，您會建立和訓練事件類型的模型。模型可做為模型版本的容器。每次訓練模型時，都會建立新的版本。

使用下列範例程式碼來建立和訓練線上詐騙洞見模型。此模型稱為 `sample_fraud_detection_model`。這是`sample_registration`針對使用您上傳到 Amazon S3 的帳戶註冊範例資料集的事件類型。

如需 Amazon Fraud Detector 支援的不同模型類型的詳細資訊，請參閱 [選擇模型類型](choosing-model-type.md)。

**建立模型**

在下列範例中，[CreateModel](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateModel.html) API 用於建立模型。

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

fraudDetector.create_model (
       modelId = 'sample_fraud_detection_model',
       eventTypeName = 'sample_registration',
       modelType = 'ONLINE_FRAUD_INSIGHTS')
```

**訓練模型**

在下列範例中，[CreateModelVersion](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateModelVersion.html) API 用於訓練模型。`'EXTERNAL_EVENTS'` 為您存放範例資料集的 `trainingDataSource`和 Amazon S3 位置指定 ，以及 Amazon S3 儲存貯體的 *RoleArn*`externalEventsDetail`。針對 `trainingDataSchema` 參數，指定 Amazon Fraud Detector 如何解譯範例資料。更具體地說，指定要包含哪些變數，以及如何分類事件標籤。

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

fraudDetector.create_model_version (
         modelId = 'sample_fraud_detection_model',
         modelType = 'ONLINE_FRAUD_INSIGHTS',
         trainingDataSource = 'EXTERNAL_EVENTS',
         trainingDataSchema = {
            'modelVariables' : ['ip_address', 'email_address'],
            'labelSchema' : {
               'labelMapper' : {
                   'FRAUD' : ['fraud'],
                   'LEGIT' : ['legit']
        }
    }
}, 
         externalEventsDetail = {
              'dataLocation' : 's3://{{amzn-s3-demo-bucket}}/{{your-example-data-filename}}.csv',
              'dataAccessRoleArn' : '{{role_arn}}'
}
)
```

您可以多次訓練模型。每次您訓練模型時，都會建立新的版本。模型訓練完成後，模型版本狀態會更新為 `TRAINING_COMPLETE`。您可以檢閱模型效能分數和其他模型效能指標。

**檢閱模型效能**

使用 Amazon Fraud Detector 的重要步驟是使用模型分數和效能指標來評估模型的準確性。模型訓練完成後，Amazon Fraud Detector 會使用未用於訓練模型的 15% 資料來驗證模型效能。它會產生模型效能分數和其他效能指標。

使用 [DescribeModelVersions](https://docs.aws.amazon.com//frauddetector/latest/api/API_DescribeModelVersions.html) API 來檢閱模型效能。查看**模型效能**整體分數，以及 Amazon Fraud Detector 為此模型產生的所有其他指標。

若要進一步了解模型效能分數和效能指標，請參閱 [模型分數](model-scores.md)和 [模型效能指標](training-performance-metrics.md)。

您可以預期所有訓練過的 Amazon Fraud Detector 模型都具有與本教學課程中的指標類似的實際詐騙偵測效能指標。

**部署模型**

在您檢閱訓練模型的效能指標後，請部署模型，並讓 Amazon Fraud Detector 產生詐騙預測。若要部署訓練過的模型，請使用 [UpdateModelVersionStatus](https://docs.aws.amazon.com//frauddetector/latest/api/API_UpdateModelVersionStatus.html) API。在下列範例中，它會用來將模型版本狀態更新為 ACTIVE。

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

fraudDetector.update_model_version_status (
     modelId = 'sample_fraud_detection_model',
     modelType = 'ONLINE_FRAUD_INSIGHTS',
     modelVersionNumber = '1.00',
     status = 'ACTIVE'
)
```

### 步驟 5：建立偵測器、結果、規則和偵測器版本
<a name="python-create-a-detector-outcome-rules-and-detector-version"></a>

偵測器包含偵測邏輯，例如模型和規則。此邏輯適用於您想要評估詐騙的特定事件。規則是您指定告訴 Amazon Fraud Detector 在預測期間如何解譯變數值的條件。結果是詐騙預測的結果。偵測器可以有多個版本，每個版本的狀態為 *DRAFT*、*ACTIVE* 或 *INACTIVE*。偵測器版本必須至少有一個與其相關聯的規則。

使用下列範例程式碼來建立偵測器、規則、結果，以及發佈偵測器。

**建立偵測器**

在下列範例中，[PutDetector](https://docs.aws.amazon.com//frauddetector/latest/api/API_PutDetector.html) API 用於建立`sample_registration`事件類型的`sample_detector`偵測器。

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

fraudDetector.put_detector (
     detectorId = 'sample_detector',
     eventTypeName = 'sample_registration'
)
```

**建立結果**

系統會為每個可能的詐騙預測結果建立結果。在下列範例中，[PutOutcome](https://docs.aws.amazon.com//frauddetector/latest/api/API_PutOutcome.html) API 用於建立三個結果：`verify_customer`、 `review`和 `approve`。這些結果稍後會指派給規則。

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

fraudDetector.put_outcome(
     name = 'verify_customer',
     description = 'this outcome initiates a verification workflow'
    )

fraudDetector.put_outcome(
     name = 'review',
     description = 'this outcome sidelines event for review'
    )

fraudDetector.put_outcome(
     name = 'approve',
     description = 'this outcome approves the event'
)
```

**建立規則**

規則包含來自資料集的一或多個變數、邏輯表達式，以及一或多個結果。

在下列範例中，[CreateRule](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateRule.html) API 用於建立三種不同的規則：`high_risk`、 `medium_risk`和 `low_risk`。建立規則表達式，將模型效能分數`sample_fraud_detection_model_insightscore`值與各種閾值進行比較。這是為了判斷事件的風險層級，並指派上一個步驟中定義的結果。

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

fraudDetector.create_rule(
     ruleId = 'high_fraud_risk',
     detectorId = 'sample_detector',
     expression = '$sample_fraud_detection_model_insightscore > 900',
     language = 'DETECTORPL',
     outcomes = ['verify_customer']
     )

fraudDetector.create_rule(
     ruleId = 'medium_fraud_risk',
     detectorId = 'sample_detector',
     expression = '$sample_fraud_detection_model_insightscore <= 900 and $sample_fraud_detection_model_insightscore > 700',
     language = 'DETECTORPL',
     outcomes = ['review']
     )

fraudDetector.create_rule(
     ruleId = 'low_fraud_risk',
     detectorId = 'sample_detector',
     expression = '$sample_fraud_detection_model_insightscore <= 700',
     language = 'DETECTORPL',
     outcomes = ['approve']
     )
```

**建立偵測器版本**

偵測器版本定義用於取得詐騙預測的模型和規則。

在下列範例中，[CreateDetectorVersion](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateDetectorVersion.html) API 用於建立偵測器版本。它透過提供模型版本詳細資訊、規則和規則執行模式 FIRST\_MATCHED 來執行此操作。規則執行模式會指定評估規則的序列。規則執行模式 FIRST\_MATCHED 指定規則會先依序評估，再持續評估，在第一次符合的規則時停止。

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

fraudDetector.create_detector_version(
      detectorId = 'sample_detector',
      rules = [{
          'detectorId' : 'sample_detector',
          'ruleId' : 'high_fraud_risk',
          'ruleVersion' : '1'
},
{
          'detectorId' : 'sample_detector',
          'ruleId' : 'medium_fraud_risk',
          'ruleVersion' : '1'
},
{
          'detectorId' : 'sample_detector',
          'ruleId' : 'low_fraud_risk',
          'ruleVersion' : '1'
}
],
      modelVersions = [{
          'modelId' : 'sample_fraud_detection_model',
          'modelType': 'ONLINE_FRAUD_INSIGHTS',
          'modelVersionNumber' : '1.00'
}      ],
      ruleExecutionMode = 'FIRST_MATCHED'
)
```

### 步驟 6：產生詐騙預測
<a name="python-generate-fraud-predictions"></a>

本教學課程的最後一個步驟使用上一個步驟中`sample_detector`建立的偵測器，即時產生`sample_registration`事件類型的詐騙預測。偵測器會評估上傳至 Amazon S3 的範例資料。回應包括模型效能分數，以及與相符規則相關聯的任何結果。

在下列範例中，[GetEventPrediction](https://docs.aws.amazon.com//frauddetector/latest/api/API_GetEventPrediction.html) API 用於為每個請求提供來自單一帳戶註冊的資料。在本教學課程中，請從帳戶註冊範例資料檔案取得資料 (email\_address 和 ip\_address)。頂端標頭行後面的每一行 （列） 代表來自單一帳戶註冊事件的資料。

```
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'
}
)
```

完成本教學課程後，您執行下列動作：
+ 已將範例事件資料集上傳至 Amazon S3。
+ 建立變數、實體和標籤，用於建立和訓練模型。
+ 使用範例資料集建立和訓練模型。
+ 檢視 Amazon Fraud Detector 產生的模型效能分數和其他效能指標。
+ 部署詐騙偵測模型。
+ 建立偵測器並新增部署的模型。
+ 已將規則、規則執行順序和結果新增至偵測器。
+ 已建立偵測器版本。
+ 透過提供不同的輸入來測試偵測器，並檢查規則和規則執行順序是否如預期般運作。

## （選用） 使用 Jupyter (iPython) 筆記本探索 Amazon Fraud Detector APIs
<a name="gs-jupyter-notebook"></a>

如需如何使用 Amazon Fraud Detector APIs的更多範例，請參閱 [aws-fraud-detector-samples GitHub 儲存庫](https://github.com/aws-samples/aws-fraud-detector-samples)。筆記本涵蓋的主題包括使用 Amazon Fraud Detector APIs 建置模型和偵測器，以及使用 `GetEventPrediction` API 提出批次詐騙預測請求。