Entrenar y probar modelos diseñados para detectar el blanqueo de dinero

En esta guía de inicio rápido se explica cómo implementar un modelo de principio a fin para detectar el blanqueo de dinero mediante la API Anti Money Laundering AI (AML AI). En esta guía, aprenderás a entrenar y probar modelos para detectar el blanqueo de dinero siguiendo estos pasos:

  1. Prepara tu entorno de Cloud y crea una instancia de IA de AML.
  2. Proporciona datos de transacciones sintéticos en forma de tablas de BigQuery.
  3. Entrena y haz pruebas retrospectivas de un modelo con datos de entrada.
  4. Registrar participantes y hacer predicciones de modelos.

Después de crear los resultados de la predicción, en esta guía se analiza un caso de una parte ficticia que está blanqueando dinero mediante la estructuración de fondos.

Antes de empezar

En esta sección se describe cómo configurar una cuenta de Google Cloud , habilitar los servicios deGoogle Cloud necesarios y conceder los permisos necesarios para ejecutar la guía de inicio rápido.

Si vas a usar un proyecto que ya existe y no es tuyo, es posible que tu administrador tenga que concederte ciertos permisos para acceder a él. Para obtener más información, consulta el artículo sobre cómo crear y gestionar proyectos.

  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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente 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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  12. Para inicializar gcloud CLI, ejecuta el siguiente 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. Estos roles cumplen los siguientes permisos obligatorios:

    Permisos obligatorios

    Para completar esta guía de inicio rápido, se necesitan los siguientes permisos:

    Permiso Descripción
    resourcemanager.projects.getObtener un Google Cloud proyecto
    resourcemanager.projects.listList Google Cloud projects
    cloudkms.keyRings.createCrear un conjunto de claves de Cloud KMS
    cloudkms.cryptoKeys.createCrear una clave de Cloud KMS
    financialservices.v1instances.createCrear una instancia de AML AI
    financialservices.operations.getObtener una operación de AML AI
    cloudkms.cryptoKeys.getIamPolicyObtener la política de gestión de identidades y accesos de una clave de Cloud KMS
    cloudkms.cryptoKeys.setIamPolicyDefinir la política de gestión de identidades y accesos en una clave de Cloud KMS
    bigquery.datasets.createCrear un conjunto de datos de BigQuery
    bigquery.datasets.getObtener un conjunto de datos de BigQuery
    bigquery.transfers.getObtener una transferencia de BigQuery Data Transfer Service
    bigquery.transfers.updateCrear o eliminar una transferencia de BigQuery Data Transfer Service
    bigquery.datasets.setIamPolicyDefinir la política de gestión de identidades y accesos en un conjunto de datos de BigQuery
    bigquery.datasets.updateActualizar un conjunto de datos de BigQuery
    financialservices.v1datasets.createCrear un conjunto de datos de AML AI
    financialservices.v1engineconfigs.createCrear una configuración de motor de AML AI
    financialservices.v1models.createCrear un modelo de IA de AML
    financialservices.v1backtests.createCrear un resultado de prueba retrospectiva de AML AI
    financialservices.v1backtests.exportMetadataExportar metadatos de un resultado de una prueba retrospectiva de IA de lucha contra el blanqueo de dinero
    financialservices.v1instances.importRegisteredPartiesImportar partes registradas a una instancia de IA de lucha contra el blanqueo de dinero
    financialservices.v1predictions.createCrear un resultado de predicción de AML AI
    bigquery.jobs.createCrear un trabajo de BigQuery
    bigquery.tables.getDataObtener datos de una tabla de BigQuery
    financialservices.v1predictions.deleteEliminar un resultado de predicción de IA de AML
    financialservices.v1backtests.deleteEliminar un resultado de una prueba retrospectiva de AML AI
    financialservices.v1models.deleteEliminar un modelo de IA de AML
    financialservices.v1engineconfigs.deleteEliminar una configuración de motor de IA de AML
    financialservices.v1datasets.deleteEliminar un conjunto de datos de AML AI
    financialservices.v1instances.deleteEliminar una instancia de AML AI
    bigquery.datasets.deleteEliminar un conjunto de datos de BigQuery

  19. Las solicitudes a la API de esta guía usan el mismo Google Cloud proyecto y ubicación y los IDs de recursos codificados para que sea más fácil completar la guía. Los IDs de recursos siguen el patrón my-tipo-de-recurso (por ejemplo, my-key-ring y my-model).

    Asegúrate de que se han definido los siguientes reemplazos para esta guía:

  20. Crear una instancia

    En esta sección se describe cómo crear una instancia. La instancia de AML AI se encuentra en la raíz de todos los demás recursos de AML AI. Cada instancia requiere una única clave de cifrado gestionada por el cliente (CMEK) asociada, que se usa para cifrar los datos creados por la IA de AML.

    Crear un conjunto de claves

    Para crear un conjunto de claves, usa el método projects.locations.keyRings.create.

    REST

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

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

    gcloud

    Ejecuta el siguiente 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
    Deberías recibir una respuesta vacía:
    $

    Crear clave

    Para crear una clave, usa el método projects.locations.keyRings.cryptoKeys.

    REST

    Cuerpo JSON de la solicitud:

    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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

    Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

    • LOCATION: la ubicación del conjunto de claves. Usa una de las regiones admitidas.
      Mostrar ubicaciones
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1

    Ejecuta el siguiente 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"
    Deberías recibir una respuesta vacía:
    $

    Crear la instancia con la API

    Para crear una instancia, usa el método projects.locations.instances.create.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Si la solicitud se completa correctamente, el cuerpo de la respuesta contiene una operación de larga duración que incluye un ID que se puede usar para consultar el estado de la operación asíncrona. Copia el OPERATION_ID devuelto para usarlo en la siguiente sección.

    Comprobar el resultado

    Usa el método projects.locations.operations.get para comprobar si se ha creado la instancia. Si la respuesta contiene "done": false, repite el comando hasta que la respuesta contenga "done": true.

    Las operaciones de esta guía pueden tardar entre unos minutos y varias horas en completarse. Debes esperar a que se complete una operación antes de continuar con esta guía, ya que la API usa la salida de algunos métodos como entrada para otros.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • OPERATION_ID: el identificador de la operación

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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"
      }
    }
    

    Conceder acceso a la clave CMEK

    La API crea automáticamente una cuenta de servicio en tu proyecto. La cuenta de servicio necesita acceso a la clave CMEK para poder usarla y cifrar y descifrar los datos subyacentes. Concede acceso a la clave.

    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"

    Crear conjuntos de datos de BigQuery

    En esta sección se describe cómo crear conjuntos de datos de BigQuery de entrada y salida, y cómo copiar datos bancarios de ejemplo en el conjunto de datos de entrada.

    Crear un conjunto de datos de salida

    Crea un conjunto de datos que se usará para enviar las salidas de la canalización de 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
    

    Crear un conjunto de datos de entrada

    Crea un conjunto de datos para copiar las tablas bancarias de ejemplo.

    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
    

    Copiar el conjunto de datos de muestra

    Los datos bancarios de muestra se proporcionan como un conjunto de datos de BigQuery en el proyecto de conjunto de datos compartido de Google. Para poder acceder a este conjunto de datos, debes tener acceso a la API de IA de AML. Entre las características principales de este conjunto de datos se incluyen las siguientes:

    • 100.000 fiestas
    • Un periodo principal que va del 1 de enero del 2020 al 1 de enero del 2023 y 24 meses adicionales de datos históricos
    • 300 casos de riesgo negativos y 20 positivos al mes
    • Casos de riesgo con los siguientes atributos:
      • La mitad de los casos de riesgo positivo corresponden a actividades de estructuración que se produjeron en los dos meses anteriores al evento del AML_PROCESS_START.
      • La otra mitad cubre las fiestas con la mayor cantidad de dinero recibido en los dos meses anteriores al evento AML_PROCESS_START.
      • Los casos negativos se generan de forma aleatoria
      • Una probabilidad del 0, 1% de que el caso de riesgo se genere en el estado opuesto (por ejemplo, una parte aleatoria que sea positiva o una parte que tenga actividad de estructuración o los ingresos más altos y se informe como negativa)
    • El esquema de la lucha contra el blanqueo de dinero se define en el modelo de datos de entrada de la lucha contra el blanqueo de dinero.
    1. Copia los datos bancarios de muestra en el conjunto de datos de entrada que has creado.

      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. Monitoriza la tarea de transferencia de datos.

      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"
      

      Una vez que se haya completado la transferencia, se creará un trabajo de transferencia de datos con el nombre visible Copy the AML sample dataset.

      También puedes consultar el estado de la transferencia mediante la consola Google Cloud .

      Debería ver un resultado similar al siguiente.

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

    Conceder acceso a los conjuntos de datos de BigQuery

    La API crea automáticamente una cuenta de servicio en tu proyecto. La cuenta de servicio debe tener acceso a los conjuntos de datos de entrada y salida de BigQuery.

    1. Concede acceso de lectura al conjunto de datos de entrada y a sus tablas.

      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. Concede acceso de escritura al conjunto de datos de salida.

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

    Crear un conjunto de datos de AML AI

    Crea un conjunto de datos de IA de AML para especificar las tablas de conjuntos de datos de BigQuery de entrada y el intervalo de tiempo que se va a usar.

    Para crear un conjunto de datos, usa el método projects.locations.instances.datasets.create.

    Cuerpo JSON de la solicitud:

    {
      "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"
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    @'
    {
      "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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Puedes consultar el resultado de la operación con el nuevo ID de operación. Puedes hacer lo mismo con las solicitudes de API restantes que se usan en esta guía.

    Crear una configuración de buscador

    Crea una configuración de motor de IA de AML para ajustar automáticamente los hiperparámetros en función de una versión de motor determinada y de los datos proporcionados. Las versiones del motor se lanzan periódicamente y se corresponden con diferentes lógicas de modelo (por ejemplo, orientadas a una línea de negocio minorista o a una comercial).

    Para crear una configuración de buscador, usa el método projects.locations.instances.engineConfigs.create.

    Esta fase implica el ajuste de hiperparámetros, que puede tardar un poco en procesarse. Si tus datos no cambian de forma significativa, puedes usar este paso para crear y probar muchos modelos.

    Cuerpo JSON de la solicitud:

    {
      "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"
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    @'
    {
      "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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Crear un modelo

    En este paso, entrenarás un modelo de IA de lucha contra el blanqueo de capitales con los datos de los 12 meses anteriores al 1 de julio del 2021.

    Para crear un modelo, usa el método projects.locations.instances.models.create.

    Cuerpo JSON de la solicitud:

    {
        "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"
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    @'
    {
        "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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Crear un resultado de prueba retrospectiva

    La prueba retrospectiva de la predicción usa el modelo entrenado con datos históricos. Crea un resultado de prueba retrospectiva con los datos de los 12 meses anteriores a enero del 2023, que no se usaron en el entrenamiento. Estos meses se utilizan para determinar cuántos casos podríamos tener que gestionar si hubiéramos usado en producción el modelo entrenado hasta julio del 2021 entre enero y diciembre del 2022.

    Para crear un resultado de prueba retrospectiva, usa el método projects.locations.instances.backtestResults.create.

    Cuerpo JSON de la solicitud:

    {
        "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"
        }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    @'
    {
        "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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Exportar metadatos de resultados de pruebas retrospectivas

    Una vez que se haya realizado una prueba retrospectiva, deberá exportar sus resultados a BigQuery para verlos. Para exportar metadatos del resultado de la prueba retrospectiva, usa el método projects.locations.instances.backtestResults.exportMetadata.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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 vez que se haya completado la operación, haz lo siguiente:

    1. Abre BigQuery en la Google Cloud consola.

      Ve a la Google Cloud consola.

    2. En el panel Explorador, busca tu proyecto y expándelo.

    3. Despliega my_bq_output_dataset y haz clic en my_backtest_results_metadata.

    4. En la barra de menú, haz clic en Vista previa.

    5. En la columna name (nombre), busca la fila con ObservedRecallValues.

      Valores de recall observados en BigQuery.

    6. Supongamos que tu capacidad de investigación es de 120 al mes. Busca el objeto de valor de retirada con "partyInvestigationsPerPeriod": "120"`. En los siguientes valores de ejemplo, si limitas las investigaciones a las partes con puntuaciones de riesgo superiores a 0,53, puedes esperar investigar 120 partes nuevas cada mes. Durante el periodo de prueba retrospectiva, el año 2022, identificarías el 86% de los casos que identificó el sistema anterior (y posiblemente otros que no identificaron tus procesos actuales).

      {
        "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
          },
          ...
        ]
      }
      

    Consulta más información sobre los demás campos de los resultados de la prueba retrospectiva.

    Si cambia el campo partyInvestigationsPerPeriodHint, puede modificar el número de investigaciones que genera una prueba retrospectiva. Para obtener puntuaciones que investigar, registra participantes y genera predicciones sobre ellos.

    Importar terceros registrados

    Antes de crear resultados de predicción, debe importar las partes registradas (es decir, los clientes del conjunto de datos).

    Para importar terceros registrados, utiliza el método projects.locations.instances.importRegisteredParties.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Comprueba el resultado de esa operación hasta que se complete. Cuando se complete, deberías ver que se han registrado 10.000 terceros en el resultado JSON.

    Crear un resultado de predicción

    Crea un resultado de predicción de los últimos 12 meses del conjunto de datos. Estos meses no se han usado durante el entrenamiento. Al crear resultados de predicción, se generan puntuaciones para cada partido de cada mes en todos los periodos de predicción.

    Para crear un resultado de predicción, usa el método projects.locations.instances.predictionResults.create.

    Cuerpo JSON de la solicitud:

    {
        "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"
          }
        }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

    @'
    {
        "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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Analizar un solo caso de estructuración en la Google Cloud consola

    1. Abre BigQuery en la Google Cloud consola.

      Ve a la Google Cloud consola.

    2. En el panel de detalles, haz clic en la pestaña Consulta sin título para ver el editor.

    3. Copia la siguiente instrucción SQL en el editor y haz clic en Ejecutar.

      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
      

      Esta instrucción comprueba el ID de cuenta 1E60OAUNKP84WDKB en agosto del 2022. Esta cuenta está vinculada al ID de tercero EGS4NJD38JZ8NTL8. Puede encontrar el ID de la parte de un ID de cuenta determinado mediante la tabla AccountPartyLink.

      Los datos de las transacciones muestran transacciones frecuentes dirigidas a una sola cuenta poco después de un gran depósito en efectivo, lo que resulta sospechoso. Estas transacciones podrían indicar que se está realizando una operación de pitufeo (es decir, dividir una transacción de dinero grande en importes más pequeños) o de estructuración.

      Datos de transacciones sospechosas de un solo tercero.

    4. Copia la siguiente instrucción SQL en el editor y haz clic en Ejecutar.

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

      Esta declaración muestra que hubo un caso de riesgo que llevó a la salida de esta parte. El caso de riesgo se inició dos meses después de la actividad sospechosa.

      Eventos de casos de riesgo de una sola parte.

    5. Copia la siguiente instrucción SQL en el editor y haz clic en Ejecutar.

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

      Si comprueba los resultados de la predicción, verá que la puntuación de riesgo de la parte pasa de casi cero (fíjese en el valor del exponente) a valores altos en los meses posteriores a la actividad sospechosa. Los resultados pueden variar con respecto a los que se muestran.

      Las puntuaciones de riesgo de una sola parte aumentan.

      La puntuación de riesgo no es una probabilidad. Una puntuación de riesgo siempre debe evaluarse en relación con otras puntuaciones de riesgo. Por ejemplo, un valor aparentemente pequeño puede considerarse positivo en los casos en los que las otras puntuaciones de riesgo sean más bajas.

    6. Copia la siguiente instrucción SQL en el editor y haz clic en Ejecutar.

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

      Si comprueba los resultados de la interpretabilidad, verá que las familias de características correctas obtienen los valores más altos.

      Resultados de la interpretabilidad de las predicciones.

    Limpieza

    Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.

    Eliminar el resultado de la predicción

    Para eliminar un resultado de predicción, utiliza el método projects.locations.instances.predictionResults.delete.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Eliminar el resultado de la prueba retrospectiva

    Para eliminar un resultado de una prueba retrospectiva, utiliza el método projects.locations.instances.backtestResults.delete.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Eliminar el modelo

    Para eliminar un modelo, utiliza el método projects.locations.instances.models.delete.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Eliminar la configuración del motor

    Para eliminar una configuración de buscador, utiliza el método projects.locations.instances.engineConfigs.delete.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Eliminar el conjunto de datos

    Para eliminar un conjunto de datos, utiliza el método projects.locations.instances.datasets.delete.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Eliminar la instancia

    Para eliminar una instancia, utiliza el método projects.locations.instances.delete.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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

    Ejecuta el comando siguiente:

    $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

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "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
    }
    

    Eliminar los conjuntos de datos de BigQuery

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

    Eliminar la configuración de la tarea de transferencia

    1. Muestra las tareas de transferencia del proyecto.

      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. Debería devolverse una salida similar a la siguiente.

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

      Copia todo el nombre, desde projects/ hasta TRANSFER_CONFIG_ID.

    3. Elimina la configuración de transferencia.

      Bash

      bq rm --transfer_config TRANSFER_CONFIG_NAME
      

      PowerShell

      bq rm --transfer_config TRANSFER_CONFIG_NAME
      

    Siguientes pasos