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à.
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' XGBoost algoritmo è un'implementazione ottimizzata dell'algoritmo Gradient Boosted Trees. XGBoost gestisce 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 AI Developer Guide.
L'CREATE MODEL
operazione Amazon Redshift ML con l'AUTO OFF
opzione 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
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)
È possibile utilizzare il comando SHOW MODEL per verificare quando il 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 è READY
, l'operazione SHOW MODEL fornisce anche il parametro train:error
, come visualizzato nel seguente output di esempio. 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;
Argomenti correlati
Per ulteriori informazioni su Amazon Redshift ML, fare riferimento ai seguenti collegamenti:
Per ulteriori informazioni sul machine learning, consulta la documentazione seguente: