Tutorial: Costruire XGBoost modelli - Amazon Redshift

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à.

Tutorial: Costruire XGBoost modelli

In questo tutorial, crei un modello con i dati di Amazon S3 ed esegui query di previsione con il modello utilizzando Amazon Redshift ML. L'XGBoostalgoritmo è un'implementazione ottimizzata dell'algoritmo Gradient Boosted Trees. XGBoostgestisce più tipi di dati, relazioni e distribuzioni rispetto ad altri algoritmi di alberi potenziati dal gradiente. È possibile utilizzarlo XGBoost per problemi di regressione, classificazione binaria, classificazione multiclasse e classificazione. Per ulteriori informazioni sull'XGBoostalgoritmo, consulta l'XGBoostalgoritmo nella Amazon SageMaker Developer Guide.

L'CREATE MODELoperazione Amazon Redshift ML con l'AUTO OFFopzione attualmente supporta XGBoost come. MODEL_TYPE È possibile fornire informazioni pertinenti come l'obiettivo e gli iperparametri come parte del comando CREATE MODEL, in base al caso d'uso specifico.

In questo tutorial utilizzerai set di dati di autenticazione delle banconote, che è un problema di classificazione binaria, per prevedere se una determinata banconota è autentica o contraffatta.

Esempi di casi d'uso

Puoi risolvere altri problemi di classificazione binaria utilizzando Amazon Redshift ML, ad esempio prevedere se un paziente è sano o ha una malattia. Puoi anche prevedere se un'email è spam o meno.

Attività

  • Prerequisiti

  • Passaggio 1: caricamento dei dati da Amazon S3 ad Amazon Redshift

  • Passaggio 2: creazione del modello di machine learning

  • Passaggio 3: esecuzione di previsioni con il modello

Prerequisiti

Per completare questo tutorial, è necessario completare la configurazione amministrativa di Amazon Redshift ML.

Passaggio 1: caricamento dei dati da Amazon S3 ad Amazon Redshift

Utilizza l'editor di query v2 di Amazon Redshift per eseguire le seguenti query.

La seguente query crea due tabelle, carica i dati da Amazon S3 e suddivide i dati in un set di addestramento e un set di test. Utilizzerai il set di addestramento per addestrare il modello e creare la funzione di previsione. Testerai quindi la funzione di previsione sul set di test.

--create training set table CREATE TABLE banknoteauthentication_train( variance FLOAT, skewness FLOAT, curtosis FLOAT, entropy FLOAT, class INT ); --Load into training table COPY banknoteauthentication_train FROM 's3://redshiftbucket-ml-sagemaker/banknote_authentication/train_data/' IAM_ROLE default REGION 'us-west-2' IGNOREHEADER 1 CSV; --create testing set table CREATE TABLE banknoteauthentication_test( variance FLOAT, skewness FLOAT, curtosis FLOAT, entropy FLOAT, class INT ); --Load data into testing table COPY banknoteauthentication_test FROM 's3://redshiftbucket-ml-sagemaker/banknote_authentication/test_data/' IAM_ROLE default REGION 'us-west-2' IGNOREHEADER 1 CSV;

Passaggio 2: creazione del modello di machine learning

La seguente query crea il XGBoost modello in Amazon Redshift ML dal set di formazione creato nel passaggio precedente. Sostituisci amzn-s3-demo-bucket con S3_BUCKET per memorizzare i set di dati di input e altri artefatti Redshift ML.

CREATE MODEL model_banknoteauthentication_xgboost_binary FROM banknoteauthentication_train TARGET class FUNCTION func_model_banknoteauthentication_xgboost_binary IAM_ROLE default AUTO OFF MODEL_TYPE xgboost OBJECTIVE 'binary:logistic' PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT(NUM_ROUND '100') SETTINGS(S3_BUCKET 'amzn-s3-demo-bucket');

Visualizzazione dello stato dell'addestramento del modello (facoltativo)

Puoi usare il SHOW MODEL comando per sapere quando il tuo modello è pronto.

Utilizza la seguente query per monitorare lo stato di avanzamento dell'addestramento del modello.

SHOW MODEL model_banknoteauthentication_xgboost_binary;

Se il modello lo èREADY, l'SHOWMODELoperazione fornisce anche la train:error metrica, come mostrato nel seguente esempio di output. Il parametro train:error è un valore di precisione del modello contenente fino a sei cifre decimali. Un valore pari a 0 è il più preciso e un valore pari a 1 è il meno preciso.

+--------------------------+--------------------------------------------------+ | Model Name | model_banknoteauthentication_xgboost_binary | +--------------------------+--------------------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Tue, 21.06.2022 19:07:35 | | Model State | READY | | train:error | 0.000000 | | Estimated Cost | 0.006197 | | | | | TRAINING DATA: | | | Query | SELECT * | | | FROM "BANKNOTEAUTHENTICATION_TRAIN" | | Target Column | CLASS | | | | | PARAMETERS: | | | Model Type | xgboost | | Training Job Name | redshiftml-20220621190735686935-xgboost | | Function Name | func_model_banknoteauthentication_xgboost_binary | | Function Parameters | variance skewness curtosis entropy | | Function Parameter Types | float8 float8 float8 float8 | | IAM Role | default-aws-iam-role | | S3 Bucket | amzn-s3-demo-bucket | | Max Runtime | 5400 | | | | | HYPERPARAMETERS: | | | num_round | 100 | | objective | binary:logistic | +--------------------------+--------------------------------------------------+

Passaggio 3: esecuzione di previsioni con il modello

Verifica della precisione del modello

La seguente query di previsione utilizza la funzione di previsione creata nel passaggio precedente per verificare la precisione del modello. Esegui questa query sul set di test per assicurarti che il modello non sia eccessivamente uguale al set di addestramento. Questo tipo di corrispondenza è nota anche come overfitting; l'overfitting potrebbe far sì che il modello restituisca previsioni inaffidabili.

WITH predict_data AS ( SELECT class AS label, func_model_banknoteauthentication_xgboost_binary (variance, skewness, curtosis, entropy) AS predicted, CASE WHEN label IS NULL THEN 0 ELSE label END AS actual, CASE WHEN actual = predicted THEN 1 :: INT ELSE 0 :: INT END AS correct FROM banknoteauthentication_test ), aggr_data AS ( SELECT SUM(correct) AS num_correct, COUNT(*) AS total FROM predict_data ) SELECT (num_correct :: FLOAT / total :: FLOAT) AS accuracy FROM aggr_data;

Previsione della quantità di banconote originali e contraffatte

La seguente query di previsione restituisce la quantità prevista di banconote originali e contraffatte nel set di test.

WITH predict_data AS ( SELECT func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entropy) AS predicted FROM banknoteauthentication_test ) SELECT CASE WHEN predicted = '0' THEN 'Original banknote' WHEN predicted = '1' THEN 'Counterfeit banknote' ELSE 'NA' END AS banknote_authentication, COUNT(1) AS count FROM predict_data GROUP BY 1;

Ricerca dell'osservazione media per una banconota originale e una contraffatta

La seguente query di previsione restituisce il valore medio di ciascuna caratteristica per le banconote che si prevede siano originali e contraffatte nel set di test.

WITH predict_data AS ( SELECT func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entropy) AS predicted, variance, skewness, curtosis, entropy FROM banknoteauthentication_test ) SELECT CASE WHEN predicted = '0' THEN 'Original banknote' WHEN predicted = '1' THEN 'Counterfeit banknote' ELSE 'NA' END AS banknote_authentication, TRUNC(AVG(variance), 2) AS avg_variance, TRUNC(AVG(skewness), 2) AS avg_skewness, TRUNC(AVG(curtosis), 2) AS avg_curtosis, TRUNC(AVG(entropy), 2) AS avg_entropy FROM predict_data GROUP BY 1 ORDER BY 2;

Per ulteriori informazioni su Amazon Redshift ML, fare riferimento ai seguenti collegamenti:

Per ulteriori informazioni sul machine learning, consulta la documentazione seguente: