Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Nozioni di base su Amazon Redshift ML
Amazon Redshift ML semplifica per SQL gli utenti la creazione, l'addestramento e la distribuzione di modelli di machine learning utilizzando comandi familiari. SQL Con Amazon Redshift ML, puoi usare i dati nel tuo cluster Redshift per addestrare modelli con Amazon. SageMaker Successivamente i modelli vengono localizzati ed è possibile fare le previsioni all'interno di un database Amazon Redshift. Amazon Redshift ML attualmente supporta gli algoritmi di apprendimento automatico: XGBoost (ON eOFF) e perceptron multistrato (AUTOON), K-Means () e AUTO Linear Learner. AUTO OFF
Argomenti
Configurare il cluster e le impostazioni di Amazon Redshift ML
Prima di lavorare con Amazon Redshift ML, completare la configurazione del cluster e configurare le autorizzazioni per l'utilizzo di Amazon Redshift ML.
Configurazione del cluster per l'utilizzo di Amazon Redshift ML
Prima di lavorare con Amazon Redshift ML, completare i prerequisiti seguenti.
In qualità di amministratore di Amazon Redshift, esegui la seguente configurazione una tantum per utilizzare i cluster con provisioning di Amazon Redshift. Per usare Amazon Redshift ML con Amazon Redshift Serverless, consulta la pagina Guida introduttiva ad Amazon Redshift Serverless.
Per eseguire una configurazione del cluster una tantum per Amazon Redshift ML
-
Crea un cluster Redshift utilizzando AWS Management Console o il AWS Command Line Interface ()AWS CLI. Assicurati di allegare la policy AWS Identity and Access Management (IAM) durante la creazione del cluster. Per ulteriori informazioni sulle autorizzazioni necessarie per utilizzare Amazon Redshift ML con SageMaker Amazon, consulta Autorizzazioni necessarie per utilizzare Amazon Redshift machine learning (ML)
-
Crea il IAM ruolo richiesto per utilizzare Amazon Redshift ML in uno dei seguenti modi:
-
Da utilizzare SageMaker con Amazon Redshift ML, crea un IAM ruolo
AmazonS3FullAccess
eAmazonSageMakerFullAccess
policy. Se intendi creare anche modelli di previsione, collega la policyAmazonForecastFullAccess
anche al tuo ruolo. -
Per utilizzare Amazon Bedrock con Amazon Redshift ML, crea IAM un ruolo
AmazonS3FullAccess
e delle politiche.AmazonBedrockFullAccess
-
Ti consigliamo di creare un IAM ruolo tramite la console Amazon Redshift con la
AmazonRedshiftAllCommandsFullAccess
policy con le autorizzazioni per eseguire SQL comandi, come. CREATE MODEL Amazon Redshift utilizza un meccanismo semplice per creare in API modo programmatico IAM ruoli per te per tuo conto. Account AWS Amazon Redshift associa automaticamente le policy AWS gestite esistenti al ruolo. IAM Questo approccio significa che puoi rimanere all'interno della console Amazon Redshift e non devi passare alla IAM console per la creazione di ruoli. Per ulteriori informazioni, consulta Creazione di un IAM ruolo come predefinito per Amazon Redshift.Quando viene creato un IAM ruolo come predefinito per il tuo cluster, includilo
redshift
come parte del nome della risorsa o usa un tag specifico di Redshift per etichettare tali risorse.Se il tuo cluster ha attivato il VPC routing Amazon avanzato, puoi utilizzare un IAM ruolo creato tramite la console Amazon Redshift. A questo IAM ruolo è allegata la
AmazonRedshiftAllCommandsFullAccess
policy e aggiunge le seguenti autorizzazioni alla policy. Queste autorizzazioni aggiuntive consentono ad Amazon Redshift di creare ed eliminare un'interfaccia di rete elastica ENI () nel tuo account e collegarla alle attività di compilazione in esecuzione su Amazon o AmazonEC2. ECS In questo modo è possibile accedere agli oggetti nei bucket Amazon S3 solo dall'interno di un cloud privato virtuale (VPC) con accesso a Internet bloccato.{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcEndpoints", "ec2:DescribeDhcpOptions", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "*" }
Per utilizzare i modelli Amazon Bedrock Foundation, aggiungi la seguente sezione:
// Required section if you use Bedrock models. { "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:
<region>
::foundation-model/*" ] } -
Se desideri creare un IAM ruolo con una politica più restrittiva, puoi utilizzare la politica seguente. È inoltre possibile modificare questa policy per soddisfare le esigenze specifiche.
Il bucket Amazon S3
redshift-downloads/redshift-ml/
è la posizione in cui vengono memorizzati i dati di esempio utilizzati per altri passaggi ed esempi. È possibile rimuoverlo se non è necessario caricare dati da Amazon S3. In alternativa, sostituirlo con altri bucket Amazon S3 utilizzati per caricare i dati in Amazon Redshift.Il
,your-account-id
e iil tuo ruolo
amzn-s3-demo-bucket
valori sono quelli specificati come parte del comando. CREATE MODEL(Facoltativo) Utilizza la sezione AWS KMS keys della policy di esempio se specifichi una AWS KMS chiave durante l'utilizzo di Amazon Redshift ML. Il
value è la chiave che usi come parte del CREATE MODEL comando.your-kms-key
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "sagemaker:*Job*", "sagemaker:AddTags", "sagemaker:CreateModel", "sagemaker:CreateEndpoint", "sagemaker:CreateEndpointConfig", "sagemaker:DeleteEndpoint", "sagemaker:DeleteEndpointConfig, "sagemaker:DeleteModel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:AbortMultipartUpload", "s3:GetObject", "s3:DeleteObject", "s3:PutObject" ], "Resource": [ "arn:aws:iam::
<your-account-id>
:role/<your-role>
", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::redshift-downloads/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket, "arn:aws:s3:::redshift-downloads" ] } // Optional section needed if you use AWS KMS keys. ,{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:<your-region>
:<your-account-id>
:key/<your-kms-key>
" ] } ] }
-
-
Per consentire ad Amazon Redshift e SageMaker assumere il ruolo di interagire con altri servizi, aggiungi la seguente politica di fiducia al IAM ruolo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
(Facoltativo) Crea un bucket Amazon S3 e una chiave. AWS KMS Questi possono essere utilizzati da Amazon Redshift per archiviare i dati di formazione inviati ad Amazon SageMaker e ricevere il modello addestrato da Amazon. SageMaker
-
(Facoltativo) Crea diverse combinazioni di IAM ruoli e bucket Amazon S3 per controllare l'accesso a diversi gruppi di utenti.
-
(Facoltativo) Quando attivi il VPC routing per il tuo cluster Redshift, crea un endpoint Amazon S3 e SageMaker un endpoint per il cluster Redshift in cui si trova VPC il cluster Redshift. In questo modo è possibile che il traffico attraversi tra i servizi durante. VPC CREATE MODEL Per ulteriori informazioni sul VPC routing, consulta Enhanced VPC routing in Amazon Redshift.
Per ulteriori informazioni sulle autorizzazioni necessarie per specificare un account privato VPC per il processo di ottimizzazione degli iperparametri, consulta Autorizzazioni necessarie per utilizzare Amazon Redshift ML con Amazon. SageMaker
Per informazioni su come utilizzare l'CREATEMODEListruzione per iniziare a creare modelli per diversi casi d'uso, consulta. CREATE MODEL
Gestione delle autorizzazioni e della proprietà
Proprio come per altri oggetti di database, come tabelle o funzioni, Amazon Redshift associa la creazione e l'utilizzo di modelli ML per accedere ai meccanismi di controllo. Esistono autorizzazioni separate per la creazione di un modello che esegue funzioni di previsione.
Gli esempi seguenti utilizzano due gruppi di utenti, retention_analyst_grp
(creatore del modello) e marketing_analyst_grp
(utente del modello) che illustrano come Amazon Redshift gestisce il controllo degli accessi. L'analista di conservazione crea modelli di machine learning che altri utenti possono utilizzare tramite autorizzazioni acquisite.
Un superutente può GRANT USER o GROUP autorizza a creare modelli di apprendimento automatico utilizzando la seguente istruzione.
GRANT CREATE MODEL TO GROUP retention_analyst_grp;
Gli utenti o i gruppi con questa autorizzazione possono creare un modello in qualsiasi schema del cluster se un utente dispone della normale CREATE autorizzazione su. SCHEMA Il modello di machine learning fa parte della gerarchia dello schema in modo simile a tabelle, viste, procedure e funzioni definite dall'utente.
Supponendo che esista già uno schema demo_ml
, concedere ai due gruppi di utenti l'autorizzazione per lo schema come indicato di seguito.
GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;
Per consentire ad altri utenti di utilizzare la tua funzione di inferenza di machine learning, concedi l'EXECUTEautorizzazione. L'esempio seguente utilizza l'EXECUTEautorizzazione per concedere a GROUP marketing_analyst_grp l'autorizzazione a utilizzare il modello.
GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;
Utilizzate l'REVOKEistruzione con CREATE MODEL e EXECUTE per revocare tali autorizzazioni a utenti o gruppi. Per ulteriori informazioni sui comandi di controllo delle autorizzazioni, consultare GRANT e REVOKE.
Utilizzo della spiegabilità del modello con Amazon Redshift ML
Con la spiegabili del modello in Amazon Redshift ML, utilizzi i valori di importanza delle funzionalità per capire in che modo ciascun attributo nei dati di formazione contribuisce al risultato previsto.
La spiegabilità del modello aiuta a migliorare i modelli di Machine Learning (ML) grazie all'illustrazione delle previsioni effettuate dai modelli. La spiegabilità del modello aiuta a spiegare come questi modelli fanno previsioni utilizzando un approccio di attribuzione delle funzionalità.
Amazon Redshift ML incorpora la spiegabilità del modello per fornire funzionalità di spiegazione del modello agli utenti di Amazon Redshift ML. Per ulteriori informazioni sulla spiegabilità dei modelli, consulta What Is Fairness and Model Explainability for Machine Learning Predictions? nella Amazon SageMaker Developer Guide.
La spiegabilità del modello monitora anche le inferenze effettuate dai modelli in produzione per la deriva dell'attribuzione delle funzionalità. Fornisce inoltre strumenti per aiutarti a generare report di governance dei modelli che puoi utilizzare per informare i team di rischio e conformità e le autorità di regolamentazione esterne.
Quando si specifica l'opzione AUTO ON o AUTO OFF l'opzione quando si utilizza l'CREATEMODEListruzione, al termine del processo di formazione del modello, SageMaker viene creato l'output esplicativo. È possibile utilizzare la MODEL funzione EXPLAIN _ per interrogare il rapporto di spiegabilità in un JSON formato. Per ulteriori informazioni, consulta Funzioni di machine learning.
Parametri di probabilità di Amazon Redshift ML
Nei problemi di apprendimento supervisionato, le etichette delle classi sono il risultato di previsioni che utilizzano i dati di input. Ad esempio, se utilizzi un modello per prevedere se un cliente si iscriverà nuovamente a un servizio di streaming, le possibili etichette sono "probabile" e "improbabile". Redshift ML offre parametri di probabilità che assegnano a ciascuna etichetta un valore di probabilità. Questo aiuta a prendere decisioni migliori sulla base dei risultati previsti. In Amazon Redshift ML, le metriche di probabilità sono disponibili quando si creano modelli AUTO ON con un tipo di problema di classificazione binaria o classificazione multiclasse. Se si omette il parametro AUTO ON, Redshift ML presuppone che il modello debba avere ON. AUTO
Creazione del modello
Durante la creazione di un modello, Amazon Redshift rileva automaticamente il tipo di modello e il tipo di problema. Se si tratta di un problema di classificazione, Redshift crea automaticamente una seconda funzione di inferenza che è possibile utilizzare per generare il valore di probabilità di ciascuna etichetta. Il nome di questa seconda funzione di inferenza è il nome della prima funzione di inferenza seguito dalla stringa _probabilities
. Ad esempio, se la prima funzione di inferenza è stata denominata customer_churn_predict
, allora il nome della seconda funzione di inferenza sarà customer_churn_predict_probabilities
. Questa funzione può essere quindi utilizzata per eseguire query sulle probabilità di ciascuna etichetta.
CREATE MODEL customer_churn_model FROM customer_activity PROBLEM_TYPE BINARY_CLASSIFICATION TARGET churn FUNCTION customer_churn_predict IAM_ROLE {default} AUTO ON SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket'
Come generare le probabilità
Una volta che la funzione di probabilità è pronta, l'esecuzione del comando restituisce un SUPERtipo che contiene gli array delle probabilità restituite e le etichette associate. Ad esempio, il risultato "probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]
indica che l'etichetta False ha una probabilità di 0,7, mentre l'etichetta True ha una probabilità di 0,3.
SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) FROM customer_activity; customer_churn_predict_probabilities -------------------- {"probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]} {"probabilities" : [0.8, 0.2], "labels" : ["False.", "True."]} {"probabilities" : [0.75, 0.25], "labels" : ["True.", "False"]}
Gli array delle probabilità e delle etichette sono sempre mostrati in base al loro valore di probabilità in ordine decrescente. È possibile scrivere una query per restituire solo l'etichetta prevista con la probabilità più alta annidando i risultati SUPER restituiti dalla funzione di probabilità.
SELECT prediction.labels[0], prediction.probabilities[0] FROM (SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) AS prediction FROM customer_activity); labels | probabilities -----------+-------------- "False." | 0.7 "False." | 0.8 "True." | 0.75
Per semplificare le query, è possibile memorizzare i risultati della funzione di previsione in una tabella.
CREATE TABLE churn_auto_predict_probabilities AS (SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) AS prediction FROM customer_activity);
È possibile eseguire query sulla tabella con i risultati per ottenere solo previsioni con una probabilità superiore a 0,7.
SELECT prediction.labels[0], prediction.probabilities[0] FROM churn_auto_predict_probabilities WHERE prediction.probabilities[0] > 0.7; labels | probabilities -----------+-------------- "False." | 0.8 "True." | 0.75
Utilizzando una notazione dell'indice è possibile ottenere la probabilità di un'etichetta specifica. L'esempio seguente restituisce le probabilità di tutte le etichette True.
.
SELECT label, index, p.prediction.probabilities[index] FROM churn_auto_predict_probabilities p, p.prediction.labels AS label AT index WHERE label='True.'; label | index | probabilities ---------+-------+--------------- "True." | 0 | 0.3 "True." | 0 | 0.2 "True." | 0 | 0.75
L'esempio seguente restituisce tutte le righe che includono un'etichetta True
con una probabilità maggiore di 0,7, indicante il probabile abbandono del cliente.
SELECT prediction.labels[0], prediction.probabilities[0] FROM churn_auto_predict_probabilities WHERE prediction.probabilities[0] > 0.7 AND prediction.labels[0] = "True."; labels | probabilities -----------+-------------- "True." | 0.75