Addestrare e testare modelli progettati per rilevare il riciclaggio di denaro

Questa guida rapida ti accompagna nell'implementazione end-to-end di un modello per rilevare il riciclaggio di denaro utilizzando l'API Anti Money Laundering AI (AML AI). In questa guida imparerai ad addestrare e testare i modelli per rilevare il riciclaggio di denaro attraverso i seguenti passaggi:

  1. Prepara l'ambiente cloud e crea un'istanza AML AI.
  2. Fornisci dati sintetici sulle transazioni sotto forma di tabelle BigQuery.
  3. Addestra ed esegui il backtest di un modello con dati di input.
  4. Registra le parti ed esegui le previsioni del modello.

Dopo aver creato i risultati della previsione, questa guida analizza un singolo caso di una persona di esempio che ricicla denaro mediante strutturazione dei fondi.

Prima di iniziare

Questa sezione descrive come configurare un account Google Cloud , abilitare i serviziGoogle Cloud richiesti e concedere le autorizzazioni necessarie per eseguire la guida rapida.

Se intendi utilizzare un progetto esistente di cui non sei proprietario, potresti aver bisogno che l'amministratore ti conceda determinate autorizzazioni per accedere al progetto esistente. Per saperne di più, consulta la pagina Creare e gestire progetti.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the required APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable financialservices.googleapis.com bigquery.googleapis.com cloudkms.googleapis.com bigquerydatatransfer.googleapis.com
  8. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  9. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/financialservices.admin, roles/cloudkms.admin, roles/bigquery.admin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  10. Install the Google Cloud CLI.

  11. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  12. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  13. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the required APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable financialservices.googleapis.com bigquery.googleapis.com cloudkms.googleapis.com bigquerydatatransfer.googleapis.com
  16. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  17. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/financialservices.admin, roles/cloudkms.admin, roles/bigquery.admin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  18. Questi ruoli soddisfano le seguenti autorizzazioni richieste:

    Autorizzazioni obbligatorie

    Per completare questa guida rapida sono necessarie le seguenti autorizzazioni:

    Autorizzazione Descrizione
    resourcemanager.projects.getOttenere un progetto Google Cloud
    resourcemanager.projects.listList Google Cloud projects
    cloudkms.keyRings.createCrea un keyring Cloud KMS
    cloudkms.cryptoKeys.createCrea una chiave Cloud KMS
    financialservices.v1instances.createCrea un'istanza AML AI
    financialservices.operations.getRecupera un'operazione AML AI
    cloudkms.cryptoKeys.getIamPolicyRecupera il criterio IAM su una chiave Cloud KMS
    cloudkms.cryptoKeys.setIamPolicyImposta il criterio IAM su una chiave Cloud KMS
    bigquery.datasets.createCrea un set di dati BigQuery
    bigquery.datasets.getRecuperare un set di dati BigQuery
    bigquery.transfers.getRecupera un trasferimento BigQuery Data Transfer Service
    bigquery.transfers.updateCreare o eliminare un trasferimento BigQuery Data Transfer Service
    bigquery.datasets.setIamPolicyImpostare il criterio IAM su un set di dati BigQuery
    bigquery.datasets.updateAggiorna un set di dati BigQuery
    financialservices.v1datasets.createCrea un set di dati AML AI
    financialservices.v1engineconfigs.createCrea una configurazione del motore AML AI
    financialservices.v1models.createCrea un modello AML AI
    financialservices.v1backtests.createCrea un risultato di backtest AML AI
    financialservices.v1backtests.exportMetadataEsportare i metadati da un risultato di backtest AML AI
    financialservices.v1instances.importRegisteredPartiesImportare le parti registrate in un'istanza AML AI
    financialservices.v1predictions.createCrea un risultato della previsione AML AI
    bigquery.jobs.createCrea un job BigQuery
    bigquery.tables.getDataRecuperare i dati da una tabella BigQuery
    financialservices.v1predictions.deleteEliminare il risultato di una previsione AML AI
    financialservices.v1backtests.deleteEliminare il risultato di un backtest AML AI
    financialservices.v1models.deleteEliminare un modello AML AI
    financialservices.v1engineconfigs.deleteElimina una configurazione del motore AML AI
    financialservices.v1datasets.deleteEliminare un set di dati AML AI
    financialservices.v1instances.deleteElimina un'istanza AML AI
    bigquery.datasets.deleteElimina un set di dati BigQuery

  19. Le richieste API in questa guida utilizzano lo stesso progetto e la stessa località e ID risorsa hardcoded per semplificare il completamento della guida. Google Cloud Gli ID risorsa seguono il pattern my-resource-type (ad esempio, my-key-ring e my-model).

    Assicurati che per questa guida siano definite le seguenti sostituzioni:

    • PROJECT_ID: il tuo Google Cloud ID progetto elencato nelle impostazioni IAM
    • PROJECT_NUMBER: il numero di progetto associato a PROJECT_ID. Puoi trovare il numero di progetto nella pagina Impostazioni IAM.
    • LOCATION: la posizione delle risorse API; utilizza una delle regioni supportate
      Mostra località
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1
  20. Crea un'istanza

    Questa sezione descrive come creare un'istanza. L'istanza AML AI si trova alla radice di tutte le altre risorse AML AI. Ogni istanza richiede una singola chiave di crittografia gestita dal cliente (CMEK) che viene utilizzata per criptare tutti i dati creati da AML AI.

    Creazione di chiavi automatizzate

    Per creare un keyring, utilizza il metodo projects.locations.keyRings.create.

    REST

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d "" \
    "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=my-key-ring"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -Uri "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=my-key-ring" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring",
      "createTime": CREATE_TIME
    }
    

    gcloud

    Esegui questo comando:

    Linux, macOS o Cloud Shell

    gcloud kms keyrings create my-key-ring \
      --location LOCATION

    Windows (PowerShell)

    gcloud kms keyrings create my-key-ring `
      --location LOCATION

    Windows (cmd.exe)

    gcloud kms keyrings create my-key-ring ^
      --location LOCATION
    Dovresti ricevere una risposta vuota:
    $

    Crea una chiave

    Per creare una chiave, utilizza il metodo projects.locations.keyRings.cryptoKeys.

    REST

    Corpo JSON della richiesta:

    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-key"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-key" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key",
      "primary": {
        "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key/cryptoKeyVersions/1",
        "state": "ENABLED",
        "createTime": CREATE_TIME,
        "protectionLevel": "SOFTWARE",
        "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
        "generateTime": GENERATE_TIME
      },
      "purpose": "ENCRYPT_DECRYPT",
      "createTime": CREATE_TIME,
      "versionTemplate": {
        "protectionLevel": "SOFTWARE",
        "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
      },
      "destroyScheduledDuration": "86400s"
    }
    

    gcloud

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • LOCATION: la posizione del portachiavi; utilizza una delle regioni supportate
      Mostra località
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1

    Esegui questo comando:

    Linux, macOS o Cloud Shell

    gcloud kms keys create my-key \
      --keyring my-key-ring \
      --location LOCATION \
      --purpose "encryption"

    Windows (PowerShell)

    gcloud kms keys create my-key `
      --keyring my-key-ring `
      --location LOCATION `
      --purpose "encryption"

    Windows (cmd.exe)

    gcloud kms keys create my-key ^
      --keyring my-key-ring ^
      --location LOCATION ^
      --purpose "encryption"
    Dovresti ricevere una risposta vuota:
    $

    Crea l'istanza utilizzando l'API

    Per creare un'istanza, utilizza il metodo projects.locations.instances.create.

    Corpo JSON della richiesta:

    {
      "kmsKey": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key"
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "kmsKey": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key"
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=my-instance"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "kmsKey": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=my-instance" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    In caso di esito positivo, il corpo della risposta contiene un'operazione a lunga esecuzione che contiene un ID utilizzabile per recuperare lo stato in corso dell'operazione asincrona. Copia il OPERATION_ID restituito da utilizzare nella sezione successiva.

    Controlla il risultato

    Utilizza il metodo projects.locations.operations.get per verificare se l'istanza è stata creata. Se la risposta contiene "done": false, ripeti il comando finché la risposta non contiene "done": true.

    Il completamento delle operazioni descritte in questa guida può richiedere da pochi minuti a diverse ore. Devi attendere il completamento di un'operazione prima di procedere con questa guida perché l'API utilizza l'output di alcuni metodi come input per altri metodi.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • OPERATION_ID: l'identificatore dell'operazione

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "endTime": END_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.Instance",
        "name": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "createTime": CREATE_TIME,
        "updateTime": UPDATE_TIME,
        "kmsKey": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key",
        "state": "ACTIVE"
      }
    }
    

    Concedere l'accesso alla chiave CMEK

    L'API crea automaticamente un account di servizio nel tuo progetto. Il service account deve accedere alla chiave CMEK in modo da poterla utilizzare per criptare e decriptare i dati sottostanti. Concedi l'accesso alla chiave.

    gcloud kms keys add-iam-policy-binding "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key" \
      --keyring "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring" \
      --location "LOCATION" \
      --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" \
      --role="roles/cloudkms.cryptoKeyEncrypterDecrypter" \
      --project="PROJECT_ID"

    Crea set di dati BigQuery

    Questa sezione descrive come creare set di dati BigQuery di input e output e poi copiare i dati bancari di esempio nel set di dati di input.

    Crea un set di dati di output

    Crea un set di dati da utilizzare per inviare gli output della pipeline AML.

    Bash

    bq mk \
      --location=LOCATION \
      --project_id=PROJECT_ID \
      my_bq_output_dataset
    

    PowerShell

    bq mk `
      --location=LOCATION `
      --project_id=PROJECT_ID `
      my_bq_output_dataset
    

    Crea un set di dati di input

    Crea un set di dati in cui copiare le tabelle bancarie di esempio.

    Bash

    bq mk \
      --location=LOCATION \
      --project_id=PROJECT_ID \
      my_bq_input_dataset
    

    PowerShell

    bq mk `
      --location=LOCATION `
      --project_id=PROJECT_ID `
      my_bq_input_dataset
    

    Copia il set di dati di esempio

    I dati bancari di esempio vengono forniti come set di dati BigQuery nel progetto di set di dati condiviso di Google. Per accedere a questo set di dati, devi avere accesso all'API AML AI. Le caratteristiche principali di questo set di dati includono:

    • 100.000 feste
    • Un intervallo di tempo principale dal 1° gennaio 2020 al 1° gennaio 2023 e altri 24 mesi di dati di ricerca
    • 300 casi di rischio negativi e 20 positivi al mese
    • Casi di rischio con i seguenti attributi:
      • La metà dei casi di rischio positivi riguarda attività di strutturazione verificatesi nei due mesi precedenti l'evento AML_PROCESS_START
      • L'altra metà copre i partiti con l'importo più alto di denaro ricevuto nei due mesi precedenti l'evento AML_PROCESS_START
      • Gli scenari negativi vengono generati in modo casuale
      • Una probabilità dello 0, 1% che lo scenario di rischio venga generato nello stato opposto (ad esempio, una parte casuale positiva o una parte che ha un'attività di strutturazione o il reddito più alto e viene segnalata come negativa)
    • Lo schema AML è definito nel modello dei dati di input AML.
    1. Copia i dati bancari di esempio nel set di dati di input che hai creato.

      Bash

      bq mk --transfer_config \
        --project_id=PROJECT_ID \
        --data_source=cross_region_copy \
        --target_dataset="my_bq_input_dataset" \
        --display_name="Copy the AML sample dataset." \
        --schedule=None \
        --params='{
          "source_project_id":"bigquery-public-data",
          "source_dataset_id":"aml_ai_input_dataset",
          "overwrite_destination_table":"true"
        }'
      

      PowerShell

      bq mk --transfer_config `
      --project_id=PROJECT_ID `
      --data_source=cross_region_copy `
      --target_dataset="my_bq_input_dataset" `
      --display_name="Copy the AML sample dataset." `
      --schedule=None `
      --params='{\"source_project_id\":\"bigquery-public-data\",\"source_dataset_id\":\"aml_ai_input_dataset\",\"overwrite_destination_table\":\"true\"}'
      
    2. Monitora il job di trasferimento dei dati.

      Bash

      bq ls --transfer_config \
      --transfer_location=LOCATION \
      --project_id=PROJECT_ID \
      --filter="dataSourceIds:cross_region_copy"
      

      PowerShell

      bq ls --transfer_config `
      --transfer_location=LOCATION `
      --project_id=PROJECT_ID `
      --filter="dataSourceIds:cross_region_copy"
      

      Al termine del trasferimento, viene creato un job di trasferimento dei dati con il nome visualizzato Copy the AML sample dataset.

      Puoi anche controllare lo stato del trasferimento utilizzando la console Google Cloud .

      Dovresti vedere un output simile al seguente.

                           name                           displayName         dataSourceId       state
      -------------------------------------------  -----------------------  -----------------  ---------
      projects/294024168771/locations/us-central1  Copy AML sample dataset  cross_region_copy  SUCCEEDED
      

    Concedere l'accesso ai set di dati BigQuery

    L'API crea automaticamente un account di servizio nel tuo progetto. Il service account deve avere accesso ai set di dati BigQuery di input e output.

    1. Concedi l'accesso in lettura al set di dati di input e alle relative tabelle.

      Bash

      bq query --project_id=PROJECT_ID --use_legacy_sql=false \
        'GRANT `roles/bigquery.dataViewer` ON SCHEMA `PROJECT_ID.my_bq_input_dataset` TO "serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com"'
      

      PowerShell

      bq query --project_id=PROJECT_ID --use_legacy_sql=false "GRANT ``roles/bigquery.dataViewer`` ON SCHEMA ``PROJECT_ID.my_bq_input_dataset`` TO 'serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com'"
      
    2. Concedi l'accesso in scrittura al set di dati di output.

      Bash

      bq query --project_id=PROJECT_ID --use_legacy_sql=false \
        'GRANT `roles/bigquery.dataEditor` ON SCHEMA `PROJECT_ID.my_bq_output_dataset` TO "serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com"'
      

      PowerShell

      bq query --project_id=PROJECT_ID --use_legacy_sql=false "GRANT ``roles/bigquery.dataEditor`` ON SCHEMA ``PROJECT_ID.my_bq_output_dataset`` TO 'serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com'"
      

    Crea un set di dati AML AI

    Crea un set di dati AML AI per specificare le tabelle del set di dati BigQuery di input e l'intervallo di tempo da utilizzare.

    Per creare un set di dati, utilizza il metodo projects.locations.instances.datasets.create.

    Corpo JSON della richiesta:

    {
      "tableSpecs": {
        "party": "bq://PROJECT_ID.my_bq_input_dataset.party",
        "account_party_link": "bq://PROJECT_ID.my_bq_input_dataset.account_party_link",
        "transaction": "bq://PROJECT_ID.my_bq_input_dataset.transaction",
        "risk_case_event": "bq://PROJECT_ID.my_bq_input_dataset.risk_case_event",
        "party_supplementary_data": "bq://PROJECT_ID.my_bq_input_dataset.party_supplementary_data"
      },
      "dateRange": {
        "startTime": "2020-01-01T00:00:0.00Z",
        "endTime": "2023-01-01T00:00:0.00Z"
      },
      "timeZone": {
        "id": "UTC"
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "tableSpecs": {
        "party": "bq://PROJECT_ID.my_bq_input_dataset.party",
        "account_party_link": "bq://PROJECT_ID.my_bq_input_dataset.account_party_link",
        "transaction": "bq://PROJECT_ID.my_bq_input_dataset.transaction",
        "risk_case_event": "bq://PROJECT_ID.my_bq_input_dataset.risk_case_event",
        "party_supplementary_data": "bq://PROJECT_ID.my_bq_input_dataset.party_supplementary_data"
      },
      "dateRange": {
        "startTime": "2020-01-01T00:00:0.00Z",
        "endTime": "2023-01-01T00:00:0.00Z"
      },
      "timeZone": {
        "id": "UTC"
      }
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets?dataset_id=my-dataset"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "tableSpecs": {
        "party": "bq://PROJECT_ID.my_bq_input_dataset.party",
        "account_party_link": "bq://PROJECT_ID.my_bq_input_dataset.account_party_link",
        "transaction": "bq://PROJECT_ID.my_bq_input_dataset.transaction",
        "risk_case_event": "bq://PROJECT_ID.my_bq_input_dataset.risk_case_event",
        "party_supplementary_data": "bq://PROJECT_ID.my_bq_input_dataset.party_supplementary_data"
      },
      "dateRange": {
        "startTime": "2020-01-01T00:00:0.00Z",
        "endTime": "2023-01-01T00:00:0.00Z"
      },
      "timeZone": {
        "id": "UTC"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets?dataset_id=my-dataset" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione. Puoi farlo per le restanti richieste API utilizzate in questa guida.

    Crea una configurazione del motore

    Crea una configurazione del motore AI AML per ottimizzare automaticamente gli iperparametri in base a una determinata versione del motore e ai dati forniti. Le versioni del motore vengono rilasciate periodicamente e corrispondono a una logica di modello diversa (ad esempio, il targeting di un settore di attività di vendita al dettaglio rispetto a uno commerciale).

    Per creare una configurazione del motore, utilizza il metodo projects.locations.instances.engineConfigs.create.

    Questa fase prevede l'ottimizzazione degli iperparametri, che può richiedere del tempo per essere elaborata. Se i dati non cambiano in modo significativo, questo passaggio può essere utilizzato per creare e testare molti modelli.

    Corpo JSON della richiesta:

    {
      "engineVersion": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineVersions/aml-commercial.default.v004.008.202411-001",
      "tuning": {
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
      },
      "performanceTarget": {
        "partyInvestigationsPerPeriodHint": "30"
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "engineVersion": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineVersions/aml-commercial.default.v004.008.202411-001",
      "tuning": {
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
      },
      "performanceTarget": {
        "partyInvestigationsPerPeriodHint": "30"
      }
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs?engine_config_id=my-engine-config"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "engineVersion": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineVersions/aml-commercial.default.v004.008.202411-001",
      "tuning": {
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
      },
      "performanceTarget": {
        "partyInvestigationsPerPeriodHint": "30"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs?engine_config_id=my-engine-config" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    crea un modello

    In questo passaggio, addestra un modello di AI per l'antiriciclaggio utilizzando 12 mesi di dati fino al 1° luglio 2021.

    Per creare un modello, utilizza il metodo projects.locations.instances.models.create.

    Corpo JSON della richiesta:

    {
        "engineConfig": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
        "engineConfig": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models?model_id=my-model"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
        "engineConfig": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models?model_id=my-model" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Crea un risultato di backtest

    La previsione di backtest utilizza il modello addestrato sui dati storici esistenti. Crea un risultato di backtest sui 12 mesi di dati precedenti a gennaio 2023, che non sono stati utilizzati nell'addestramento. Questi mesi vengono utilizzati per determinare il numero di casi che potremmo dover gestire se avessimo utilizzato in produzione il modello addestrato fino a luglio 2021 da gennaio a dicembre 2022.

    Per creare un risultato del backtest, utilizza il metodo projects.locations.instances.backtestResults.create.

    Corpo JSON della richiesta:

    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "backtestPeriods": 12,
        "performanceTarget": {
          "partyInvestigationsPerPeriodHint": "150"
        }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "backtestPeriods": 12,
        "performanceTarget": {
          "partyInvestigationsPerPeriodHint": "150"
        }
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults?backtest_result_id=my-backtest-results"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "backtestPeriods": 12,
        "performanceTarget": {
          "partyInvestigationsPerPeriodHint": "150"
        }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults?backtest_result_id=my-backtest-results" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Esportare i metadati dei risultati del backtest

    Una volta eseguito un backtest, devi esportarne i risultati in BigQuery per visualizzarli. Per esportare i metadati dal risultato del backtest, utilizza il metodo projects.locations.instances.backtestResults.exportMetadata.

    Corpo JSON della richiesta:

    {
      "structuredMetadataDestination": {
        "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_backtest_results_metadata",
        "writeDisposition": "WRITE_TRUNCATE"
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "structuredMetadataDestination": {
        "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_backtest_results_metadata",
        "writeDisposition": "WRITE_TRUNCATE"
      }
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results:exportMetadata"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "structuredMetadataDestination": {
        "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_backtest_results_metadata",
        "writeDisposition": "WRITE_TRUNCATE"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results:exportMetadata" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results",
        "verb": "exportMetadata",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Una volta completata l'operazione, procedi nel seguente modo:

    1. Apri BigQuery nella console Google Cloud .

      Vai alla Google Cloud console

    2. Nel riquadro Explorer, individua ed espandi il progetto.

    3. Espandi my_bq_output_dataset e fai clic su my_backtest_results_metadata.

    4. Nella barra dei menu, fai clic su Anteprima.

    5. Nella colonna name, trova la riga con ObservedRecallValues.

      Valori di richiamo osservati in BigQuery.

    6. Supponiamo che la tua capacità di indagini sia di 120 al mese. Trova l'oggetto valore di richiamo con "partyInvestigationsPerPeriod": "120". Per i seguenti valori di esempio, se limiti le indagini alle parti con punteggi di rischio superiori a 0,53, puoi prevedere di indagare su 120 nuove parti al mese. Nel periodo di backtesting, l'anno 2022, avresti identificato l'86% dei casi identificati dal sistema precedente (e forse altri, che non sono stati identificati dai tuoi processi attuali).

      {
        "recallValues": [
          ...
          {
            "partyInvestigationsPerPeriod": "105",
            "recallValue": 0.8142077,
            "scoreThreshold": 0.6071321
          },
          {
            "partyInvestigationsPerPeriod": "120",
            "recallValue": 0.863388,
            "scoreThreshold": 0.5339603
          },
          {
            "partyInvestigationsPerPeriod": "135",
            "recallValue": 0.89071035,
            "scoreThreshold": 0.4739899
          },
          ...
        ]
      }
      

    Scopri di più sugli altri campi nei risultati del backtest.

    Modificando il campo partyInvestigationsPerPeriodHint, puoi modificare il numero di indagini prodotte da un backtest. Per ottenere i punteggi da analizzare, registra i partiti e genera previsioni.

    Importa le parti registrate

    Prima di creare i risultati della previsione, devi importare le parti registrate (ovvero i clienti nel set di dati).

    Per importare le parti registrate, utilizza il metodo projects.locations.instances.importRegisteredParties.

    Corpo JSON della richiesta:

    {
      "partyTables": [
         "bq://PROJECT_ID.my_bq_input_dataset.party_registration"
      ],
      "mode": "REPLACE",
      "lineOfBusiness": "COMMERCIAL"
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "partyTables": [
         "bq://PROJECT_ID.my_bq_input_dataset.party_registration"
      ],
      "mode": "REPLACE",
      "lineOfBusiness": "COMMERCIAL"
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance:importRegisteredParties"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "partyTables": [
         "bq://PROJECT_ID.my_bq_input_dataset.party_registration"
      ],
      "mode": "REPLACE",
      "lineOfBusiness": "COMMERCIAL"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance:importRegisteredParties" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "importRegisteredParties",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Continua a controllare il risultato di questa operazione finché non viene completata. Al termine, dovresti vedere che nell'output JSON sono state registrate 10.000 parti.

    Crea un risultato della previsione

    Crea un risultato di previsione sugli ultimi 12 mesi del set di dati; questi mesi non sono stati utilizzati durante l'addestramento. La creazione dei risultati della previsione genera punteggi per ogni partito in ogni mese in tutti i periodi di previsione.

    Per creare un risultato di previsione, utilizza il metodo projects.locations.instances.predictionResults.create.

    Corpo JSON della richiesta:

    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "predictionPeriods": "12",
        "outputs": {
          "predictionDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results",
            "writeDisposition": "WRITE_TRUNCATE"
          },
          "explainabilityDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability",
            "writeDisposition": "WRITE_TRUNCATE"
          }
        }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "predictionPeriods": "12",
        "outputs": {
          "predictionDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results",
            "writeDisposition": "WRITE_TRUNCATE"
          },
          "explainabilityDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability",
            "writeDisposition": "WRITE_TRUNCATE"
          }
        }
    }
    EOF

    Quindi esegui questo comando per inviare la richiesta REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults?prediction_result_id=my-prediction-results"

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "predictionPeriods": "12",
        "outputs": {
          "predictionDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results",
            "writeDisposition": "WRITE_TRUNCATE"
          },
          "explainabilityDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability",
            "writeDisposition": "WRITE_TRUNCATE"
          }
        }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi esegui questo comando per inviare la richiesta REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults?prediction_result_id=my-prediction-results" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Analizza un singolo caso di strutturazione nella console Google Cloud

    1. Apri BigQuery nella console Google Cloud .

      Vai alla Google Cloud console

    2. Nel riquadro dei dettagli, fai clic sulla scheda Query senza titolo per visualizzare l'editor.

    3. Copia la seguente istruzione SQL nell'editor e fai clic su Esegui.

      SELECT *
      FROM `PROJECT_ID.my_bq_input_dataset.transaction`
      WHERE account_id = '1E60OAUNKP84WDKB' AND DATE_TRUNC(book_time, MONTH) = "2022-08-01"
      ORDER by book_time
      

      Questa istruzione controlla l'ID account 1E60OAUNKP84WDKB ad agosto 2022. Questo account è collegato all'ID parte EGS4NJD38JZ8NTL8. Puoi trovare l'ID parte per un determinato ID account utilizzando la tabella AccountPartyLink.

      I dati delle transazioni mostrano frequenti transazioni di arrotondamento indirizzate a un singolo account poco dopo un deposito di contanti di grandi dimensioni, il che sembra sospetto. Queste transazioni potrebbero essere indicative di smurfing (ovvero la suddivisione di una transazione di denaro di grandi dimensioni in importi di transazione più piccoli) o strutturazione.

      Dati di transazioni sospette per una singola parte.

    4. Copia la seguente istruzione SQL nell'editor e fai clic su Esegui.

      SELECT *
      FROM `PROJECT_ID.my_bq_input_dataset.risk_case_event`
      WHERE party_id = 'EGS4NJD38JZ8NTL8'
      

      Questa dichiarazione mostra che si è verificato un caso di rischio che ha portato all'uscita di questa parte. La richiesta di rischio è stata avviata due mesi dopo l'attività sospetta.

      Eventi di casi di rischio per una singola parte.

    5. Copia la seguente istruzione SQL nell'editor e fai clic su Esegui.

      SELECT *
      FROM `PROJECT_ID.my_bq_output_dataset.my_prediction_results`
      WHERE party_id = 'EGS4NJD38JZ8NTL8'
      ORDER BY risk_period_end_time
      

      Controllando i risultati della previsione, puoi notare che il punteggio di rischio della parte aumenta da quasi zero (nota il valore dell'esponente) a valori elevati nei mesi successivi all'attività sospetta. I risultati potrebbero variare rispetto a quelli mostrati.

      Aumento dei punteggi di rischio per una singola parte.

      Il punteggio di rischio non è una probabilità. Un punteggio di rischio deve sempre essere valutato rispetto ad altri punteggi di rischio. Ad esempio, un valore apparentemente piccolo può essere considerato positivo nei casi in cui gli altri punteggi di rischio sono inferiori.

    6. Copia la seguente istruzione SQL nell'editor e fai clic su Esegui.

      SELECT *
      FROM `PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability`
      WHERE party_id = 'EGS4NJD38JZ8NTL8'
      AND risk_period_end_time = '2022-10-01'
      

      Controllando i risultati dell'interpretabilità, puoi notare che le famiglie di funzionalità corrette ottengono i valori più alti.

      Risultati di spiegabilità per le previsioni.

    Esegui la pulizia

    Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.

    Eliminare il risultato della previsione

    Per eliminare un risultato della previsione, utilizza il metodo projects.locations.instances.predictionResults.delete.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimina il risultato del backtest

    Per eliminare un risultato del backtest, utilizza il metodo projects.locations.instances.backtestResults.delete.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Eliminare il modello

    Per eliminare un modello, utilizza il metodo projects.locations.instances.models.delete.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimina la configurazione del motore

    Per eliminare una configurazione del motore, utilizza il metodo projects.locations.instances.engineConfigs.delete.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Eliminazione del set di dati

    Per eliminare un set di dati, utilizza il metodo projects.locations.instances.datasets.delete.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimina l'istanza

    Per eliminare un'istanza, utilizza il metodo projects.locations.instances.delete.

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Esegui questo comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance"

    PowerShell

    Esegui questo comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance" | Select-Object -Expand Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimina i set di dati BigQuery

    bq rm -r -f -d PROJECT_ID:my_bq_input_dataset
    
    bq rm -r -f -d PROJECT_ID:my_bq_output_dataset
    

    Elimina la configurazione del job di trasferimento

    1. Elenca i job di trasferimento nel progetto.

      Bash

      bq ls --transfer_config \
        --transfer_location=LOCATION \
        --project_id=PROJECT_ID  \
        --filter="dataSourceIds:cross_region_copy"
      

      PowerShell

      bq ls --transfer_config `
        --transfer_location=LOCATION `
        --project_id=PROJECT_ID `
        --filter="dataSourceIds:cross_region_copy"
      
    2. Dovrebbe essere restituito un output simile al seguente.

      name                                                                                       displayName                    dataSourceId       state
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      projects/PROJECT_NUMBER/locations/LOCATION/transferConfigs/TRANSFER_CONFIG_ID    Copy the AML sample dataset.   cross_region_copy   SUCCEEDED
      

      Copia l'intero nome, a partire da projects/ e fino a TRANSFER_CONFIG_ID.

    3. Elimina la configurazione del trasferimento.

      Bash

      bq rm --transfer_config TRANSFER_CONFIG_NAME
      

      PowerShell

      bq rm --transfer_config TRANSFER_CONFIG_NAME
      

    Passaggi successivi