教學課程:開始使用AWS SDK for Python (Boto3) - Amazon Fraud Detector

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

教學課程:開始使用AWS SDK for Python (Boto3)

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

在本教學的結尾,您將完成下列動作:

  • 建置和訓練 Amazon Fraud Detector 模型

  • 產生即時 Fraud Dete

先決條件

以下是本教學課程的先決條件步驟。

開始使用

博托是 Amazon Web Services(AWS)軟件開發套件 Python。您可以使用它來建立、設定和管理AWS 服務。如需如何安裝 Boto3 的相關指示,請參閱適用於 Python 的 AWS 開發套件

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

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

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

建立變數

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

在下面的例子中,CreateVariableAPI 用於創建兩個變量。變量是email_addressip_address。將它們分配給相應的變量類型:EMAIL_ADDRESSIP_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>' )

建立實體類型

實體代表誰正在執行事件,實體類型會將實體分類。分類範例包括客戶商家帳戶

在下面的例子中,PutEntityTypeAPI 用於創建一個sample_customer實體類型。

import boto3 fraudDetector = boto3.client('frauddetector') fraudDetector.put_entity_type( name = 'sample_customer', description = 'sample customer entity type' )

建立標籤

標籤會將事件分類為詐騙或合法,並用來訓練 Fraud Detector。該模型學習使用這些標籤值對事件進行分類。

在下面的例子中,Putlabel API 用於創建兩個標籤,fraudlegit

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

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

在下列範例中,PutEventTypeAPI 是用來建立事件類型sample_registration。您可以透過指定在上一個步驟中建立的變數 (email_address,ip_addresssample_customer)、實體類型 (legit) 和標籤 (fraud,) 來定義事件類型。

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

Amazon Fraud Detector 會訓練模型以學習偵測特定事件類型的詐騙行為。在上一個步驟中,您建立了事件類型。在此步驟中,將會建立及訓練事件類型的模型。該模型充當模型版本的容器。每次訓練模型時,就會建立新的版本。

使用下列範例程式碼來建立和訓練線上詐騙洞察模型。這個模型被稱為sample_fraud_detection_model。它適用於sample_registration使用您上傳到 Amazon S3 的帳戶註冊範例資料集的事件類型。

如需 Amazon Fraud Detector 支援之不同模型類型的詳細資訊,請參閱選擇型號類型

建立模型

在下面的例子中,CreateModelAPI 用於創建模型。

import boto3 fraudDetector = boto3.client('frauddetector') fraudDetector.create_model ( modelId = 'sample_fraud_detection_model', eventTypeName = 'sample_registration', modelType = 'ONLINE_FRAUD_INSIGHTS')

訓練模型

在下列範例中,CreateModelVersionAPI 用於訓練模型。指定'EXTERNAL_EVENTS'您存放範例資料集RoleArntrainingDataSource和 Amazon S3 位置,以及其 Amazon S3 儲存貯體的位置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://your-S3-bucket-name/your-example-data-filename.csv', 'dataAccessRoleArn' : 'role_arn' } )

您可以多次訓練模型。每次訓練模型時,就會建立新的版本。模型訓練完成後,模型版本狀態會更新為TRAINING_COMPLETE。您可以檢閱模型效能分數和其他模型效能測量結果。

檢閱模型效能

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

使用 DescribeModelVersionsAPI 來檢閱模型效能。查看模型效能整體分數以及 Amazon Fraud Detector 針對此模型產生的所有其他指標。

若要深入瞭解模型效能分數和效能指標,請參閱模型分數模型效能指標

您可以預期所有訓練有素的 Amazon Fraud Detector 模型都具有真實世界的詐騙偵測效能指標,這些指標與本教學中的指標類似。

部署模型

檢閱訓練模型的效能指標後,請部署模型並將其提供給 Amazon Fraud Detector 以產生詐騙預測。若要部署訓練過的模型,請使用 UpdateModelVersionStatusAPI。在下面的例子中,它用於將模型版本狀態更新為 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' )

檢測器包含檢測邏輯,例如模型和規則。此邏輯適用於您要評估詐騙的特定事件。規則是您指定的條件,以告訴 Amazon Fraud Detector 如何在預測期間解譯變數值。結果是欺詐預測的結果。檢測器可以有多個版本,每個版本的狀態為草稿活動活動狀態。偵測器版本必須至少有一個規則與之建立關聯。

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

建立偵測器

在下面的例子中,PutDetectorAPI 用於創建sample_registration事件類型的sample_detector檢測器。

import boto3 fraudDetector = boto3.client('frauddetector') fraudDetector.put_detector ( detectorId = 'sample_detector', eventTypeName = 'sample_registration' )

創造成果

為每個可能的欺詐預測結果創建結果。在下列範例中,PutOutcomeAPI 用於建立三個結果-verify_customerreview、和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' )

建立規則

規則由資料集中的一或多個變數、邏輯運算式以及一或多個結果所組成。

在下列範例中,CreateRuleAPI 用於建立三個不同的規則:high_riskmedium_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'] )

建立偵測器版本

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

在下面的例子中,CreateDetectorVersionAPI 用於創建一個檢測器版本。它通過提供模型版本詳細信息,規則和規則執行模式 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' )

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

在下列範例中,GetEventPredictionAPI 用於在每個請求中提供單一帳戶註冊的資料。在本教程中,請從帳戶註冊示例數據文件中獲取數據(電子郵件地址和 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 產生的模型效能分數和其他效能指標。

  • 部署了欺詐檢測模型。

  • 創建了一個檢測器並添加了部署的模型。

  • 在偵測器中新增規則、規則執行順序和結果。

  • 已建立偵測器版本。

  • 通過提供不同的輸入並檢查規則和規則執行順序是否按預期工作來測試檢測器。

(可選)使用木普特(IPython)筆記本探索亞馬遜 Fraud Detector API

如需有關如何使用 Amazon Fraud Detector API 的更多範例,請參閱aws-fraud-detector-samples GitHub 儲存庫。筆記型電腦涵蓋的主題包括使用 Amazon Fraud Detector API 的建置模型和偵測器,以及使用GetEventPrediction API 提出批次詐騙預測請求。