Modelli
Query Service ora supporta i processi principali di creazione e distribuzione di un modello. È possibile utilizzare SQL per addestrare il modello utilizzando i dati, valutarne la precisione e quindi utilizzare il modello addestrato per effettuare previsioni sui nuovi dati. Puoi quindi utilizzare il modello per generalizzare dai dati passati per prendere decisioni informate su scenari reali.
I tre passaggi del ciclo di vita del modello per generare informazioni fruibili sono:
- Formazione: il modello apprende i modelli dal set di dati fornito. (crea o sostituisci modello)
- Test/valutazione: le prestazioni del modello vengono valutate utilizzando un set di dati separato. (
model_evaluate
) - Previsione: il modello addestrato viene utilizzato per fare previsioni su dati nuovi e non visti.
Utilizzare l'estensione SQL del modello, aggiunta alla grammatica SQL esistente, per gestire il ciclo di vita del modello in base alle esigenze aziendali. Questo documento descrive le istruzioni SQL necessarie per creare o sostituire un modello, addestrare, valutare, riaddestrare quando necessario e prevedere informazioni approfondite.
Creazione di modelli e formazione create-and-train
Scopri come definire, configurare e addestrare un modello di apprendimento automatico utilizzando i comandi SQL. L'istruzione SQL seguente illustra come creare un modello, applicare trasformazioni di ingegneria delle funzionalità e avviare il processo di formazione per garantire che il modello sia configurato correttamente per un utilizzo futuro. I seguenti comandi SQL descrivono diverse opzioni per la creazione e la gestione dei modelli:
- CREA MODELLO: crea e addestra un nuovo modello in un set di dati specificato. Se esiste già un modello con lo stesso nome, questo comando restituisce un errore.
- CREA MODELLO SE NON ESISTE: crea e addestra un nuovo modello solo se nel set di dati specificato non esiste già un modello con lo stesso nome.
- CREA O SOSTITUISCI MODELLO: crea e addestra un modello, sostituendo l'ultima versione di un modello esistente con lo stesso nome nel set di dati specificato.
CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
model_alias
[TRANSFORM (select_list)]
[OPTIONS(model_option_list)]
[AS {select_query}]
model_option_list:
MODEL_TYPE = { 'LINEAR_REG' |
'LOGISTIC_REG' |
'KMEANS' }
[, MAX_ITER = int64_value ]
[, LABEL = string_array ]
[, REG_PARAM = float64_value ]
Esempio
CREATE MODEL churn_model
TRANSFORM (vector_assembler(array(current_customers, previous_customers)) features)
OPTIONS(MODEL_TYPE='linear_reg', LABEL='churn_rate')
AS
SELECT *
FROM churn_with_rate
ORDER BY period;
Per comprendere meglio i componenti e le configurazioni chiave del processo di creazione e formazione del modello, le note seguenti spiegano lo scopo e la funzione di ciascun elemento nell’esempio SQL precedente.
-
<model_alias>
: l'alias del modello è un nome riutilizzabile assegnato al modello, a cui è possibile fare riferimento in seguito. È necessario assegnare un nome al modello. -
transform
: la clausola transform viene utilizzata per applicare le trasformazioni di ingegneria delle caratteristiche (ad esempio, codifica a caldo e indicizzazione di stringhe) al set di dati prima di addestrare il modello. L'ultima clausola dell'istruzioneTRANSFORM
deve essere unvector_assembler
con un elenco di colonne che comporrebbero le funzionalità per l'apprendimento dei modelli o un tipo derivato divector_assembler
(ad esempiomax_abs_scaler(feature)
,standard_scaler(feature)
e così via). Solo le colonne menzionate nell'ultima clausola verranno utilizzate per l'apprendimento; tutte le altre colonne, anche se incluse nella querySELECT
, verranno escluse. -
label = <label-COLUMN>
: la colonna dell’etichetta nel set di dati di formazione che specifica il target o il risultato che il modello intende prevedere. -
training-dataset
: questa sintassi seleziona i dati utilizzati per addestrare il modello. -
type = 'LogisticRegression'
: questa sintassi specifica il tipo di algoritmo di apprendimento automatico da utilizzare. Le opzioni includonoLinearRegression
,LogisticRegression
eKMeans
. -
options
: questa parola chiave fornisce un set flessibile di coppie chiave-valore per configurare il modello.Key model_type
:model_type = '<supported algorithm>'
: specifica il tipo di algoritmo di apprendimento automatico da utilizzare. Le opzioni supportate sonoLinearRegression
,LogisticRegression
eKMeans
.Key label
:label = <label_COLUMN>
: definisce la colonna dell'etichetta nel set di dati di apprendimento, che indica il target o il risultato che il modello intende prevedere.
Utilizza SQL per fare riferimento al set di dati utilizzato per l’apprendimento.
TRANSFORM
, incluse le funzioni e l'utilizzo supportati in CREATE MODEL
e CREATE TABLE
, vedere la clausola TRANSFORM
nella documentazione relativa alla sintassi SQL.Aggiornare un modello update
Scopri come aggiornare un modello di apprendimento automatico esistente applicando nuove trasformazioni di ingegneria delle funzioni e configurando opzioni quali il tipo di algoritmo e la colonna delle etichette. Ogni aggiornamento crea una nuova versione del modello, incrementata rispetto all'ultima versione. In questo modo è possibile tenere traccia delle modifiche e riutilizzare il modello in fasi di valutazione o previsione future.
L'esempio seguente illustra come aggiornare un modello con nuove trasformazioni e opzioni:
UPDATE MODEL <model_alias> TRANSFORM (vector_assembler(array(current_customers, previous_customers)) features) OPTIONS(MODEL_TYPE='logistic_reg', LABEL='churn_rate') AS SELECT * FROM churn_with_rate ORDER BY period;
Esempio
Per comprendere meglio il processo di controllo delle versioni, prendere in considerazione il comando seguente:
UPDATE MODEL model_vdqbrja OPTIONS(MODEL_TYPE='logistic_reg', LABEL='Survived') AS SELECT * FROM titanic_e2e_dnd;
Dopo l'esecuzione di questo comando, il modello presenta una nuova versione, come illustrato nella tabella seguente:
Le note seguenti spiegano i componenti e le opzioni chiave nel flusso di lavoro di aggiornamento del modello.
UPDATE model <model_alias>
: il comando update gestisce il controllo delle versioni e crea una nuova versione del modello incrementata rispetto all'ultima versione.version
: parola chiave facoltativa utilizzata solo durante gli aggiornamenti per specificare in modo esplicito che deve essere creata una nuova versione. Se omesso, il sistema incrementa automaticamente la versione.
Visualizzare in anteprima e rendere persistenti le feature trasformate preview-transform-output
Utilizzare la clausola TRANSFORM
nelle istruzioni CREATE TABLE
e CREATE TEMP TABLE
per visualizzare in anteprima e mantenere l'output delle trasformazioni delle funzionalità prima dell'apprendimento del modello. Questo miglioramento fornisce visibilità sul modo in cui le funzioni di trasformazione (come la codifica, la tokenizzazione e l’assemblatore vettoriale) vengono applicate al set di dati.
Materializzando i dati trasformati in una tabella autonoma, è possibile esaminare le feature intermedie, convalidare la logica di elaborazione e garantire la qualità delle feature prima di creare un modello. Ciò migliora la trasparenza nell’intera pipeline di apprendimento automatico e supporta un processo decisionale più informato durante lo sviluppo di modelli.
Sintassi syntax
Utilizzare la clausola TRANSFORM
in un'istruzione CREATE TABLE
o CREATE TEMP TABLE
come illustrato di seguito:
CREATE TABLE [IF NOT EXISTS] table_name
[WITH (tableProperties)]
TRANSFORM (transformFunctionExpression1, transformFunctionExpression2, ...)
AS SELECT * FROM source_table;
Oppure:
CREATE TEMP TABLE [IF NOT EXISTS] table_name
[WITH (tableProperties)]
TRANSFORM (transformFunctionExpression1, transformFunctionExpression2, ...)
AS SELECT * FROM source_table;
Esempio
Creare una tabella utilizzando le trasformazioni di base:
CREATE TABLE ctas_transform_table
TRANSFORM(
String_Indexer(additional_comments) si_add_comments,
one_hot_encoder(si_add_comments) as ohe_add_comments,
tokenizer(comments) as token_comments
)
AS SELECT * FROM movie_review;
Creare una tabella temporanea utilizzando i passi di ingegneria delle feature aggiuntivi riportati di seguito.
CREATE TEMP TABLE ctas_transform_table
TRANSFORM(
String_Indexer(additional_comments) si_add_comments,
one_hot_encoder(si_add_comments) as ohe_add_comments,
tokenizer(comments) as token_comments,
stop_words_remover(token_comments, array('and','very','much')) stp_token,
ngram(stp_token, 3) ngram_token,
tf_idf(ngram_token, 20) ngram_idf,
count_vectorizer(stp_token, 13) cnt_vec_comments,
tf_idf(token_comments, 10, 1) as cmts_idf
)
AS SELECT * FROM movie_review;
Quindi esegui una query sull’output:
SELECT * FROM ctas_transform_table LIMIT 1;
Considerazioni importanti considerations
Questa funzionalità migliora la trasparenza e supporta la convalida della funzionalità, ma presenta alcune limitazioni importanti da considerare quando si utilizza la clausola TRANSFORM
al di fuori della creazione del modello.
- Output vettoriali: se la trasformazione genera output di tipo vettoriale, questi vengono automaticamente convertiti in array.
- Limitazione del riutilizzo dei batch: le tabelle create con
TRANSFORM
possono applicare trasformazioni solo durante la creazione della tabella. I nuovi batch di dati inseriti conINSERT INTO
sono non trasformati automaticamente. Per applicare la stessa logica di trasformazione ai nuovi dati, è necessario ricreare la tabella utilizzando una nuova istruzioneCREATE TABLE AS SELECT
(CTAS). - Limitazione riutilizzo modello: le tabelle create con
TRANSFORM
non possono essere utilizzate direttamente nelle istruzioniCREATE MODEL
. Ridefinire la logicaTRANSFORM
durante la creazione del modello. Le trasformazioni che producono output di tipo vettoriale non sono supportate durante l'apprendimento del modello. Per ulteriori informazioni, vedere Tipi di dati di output della trasformazione delle funzionalità.
Valuta modelli evaluate-model
Per garantire risultati affidabili, valutare la precisione e l'efficacia del modello prima di distribuirlo per le previsioni con la parola chiave model_evaluate
. L'istruzione SQL seguente specifica un set di dati di test, colonne specifiche e la versione del modello per testare il modello valutandone le prestazioni.
SELECT *
FROM model_evaluate(model-alias, version-number,SELECT col1,
col2,
label-COLUMN
FROM test_dataset)
La funzione model_evaluate
considera model-alias
come primo argomento e un'istruzione flessibile SELECT
come secondo argomento. Query Service esegue innanzitutto l'istruzione SELECT
e mappa i risultati sulla funzione definita da Adobe (ADF) model_evaluate
. Il sistema prevede che i nomi di colonna e i tipi di dati nel risultato dell'istruzione SELECT
corrispondano a quelli utilizzati nel passaggio di apprendimento. Questi nomi di colonna e tipi di dati vengono trattati come dati di prova e dati di etichetta per la valutazione.
model_evaluate
) e la previsione (model_predict
), vengono utilizzate le trasformazioni eseguite durante l'addestramento.Previsione predict
model_predict
sono controllati da un flag di funzionalità. Per impostazione predefinita, i campi intermedi come probability
e rawPrediction
non sono inclusi nell'output di previsione.Per abilitare l'accesso a questi campi intermedi, eseguire il comando seguente prima di eseguire
model_predict
:set advanced_statistics_show_hidden_fields=true;
Utilizzare la parola chiave model_predict
per applicare il modello e la versione specificati a un set di dati e generare previsioni. È possibile selezionare tutte le colonne di output, scegliere colonne specifiche o assegnare alias per migliorare la chiarezza dell'output.
Per impostazione predefinita, vengono restituite solo le colonne di base e la previsione finale, a meno che il flag di funzione non sia abilitato.
SELECT * FROM model_predict(model-alias, version-number, SELECT col1, col2 FROM dataset);
Seleziona campi di output specifici select-specific-output-fields
Quando il flag di funzione è abilitato, è possibile recuperare un sottoinsieme di campi dall'output model_predict
. Utilizzare questa opzione per recuperare i risultati intermedi, ad esempio le probabilità di previsione, i punteggi di previsione non elaborati e le colonne di base dalla query di input.
Caso 1: restituire tutti i campi di output disponibili
SELECT * FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
Scenario 2: restituire le colonne selezionate
SELECT a, b, c, probability, predictionCol FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
Caso 3: restituisce le colonne selezionate con alias
SELECT a, b, c, probability AS p1, predictionCol AS pdc FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
In ogni caso, l'esterno SELECT
controlla quali campi risultato vengono restituiti. Questi includono i campi base della query di input, insieme agli output di previsione come probability
, rawPrediction
e predictionCol
.
Mantenere le previsioni utilizzando CREATE TABLE o INSERT INTO
È possibile rendere persistenti le previsioni utilizzando "CREATE TABLE AS SELECT" o "INSERT INTO SELECT", incluse le uscite di previsione, se necessario.
Esempio: creare una tabella con tutti i campi di output delle previsioni
CREATE TABLE scored_data AS SELECT * FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
Esempio: inserire i campi di output selezionati con alias
INSERT INTO scored_data SELECT a, b, c, probability AS p1, predictionCol AS pdc FROM model_predict(modelName, 1, SELECT a, b, c FROM dataset);
Questo offre flessibilità per selezionare e mantenere solo i campi di output delle previsioni e le colonne di base rilevanti per l’analisi a valle o il reporting.
Valutazione e gestione dei modelli
Utilizzare il comando SHOW MODELS
per elencare tutti i modelli disponibili creati. Utilizzala per visualizzare i modelli che sono stati addestrati e sono disponibili per la valutazione o la previsione. Quando viene eseguita una query, le informazioni vengono recuperate dall’archivio modelli, che viene aggiornato durante la creazione del modello. I dettagli restituiti sono: ID modello, nome modello, versione, set di dati di origine, dettagli algoritmo, opzioni/parametri, ora di creazione/aggiornamento e l’utente che ha creato il modello.
SHOW MODELS;
I risultati vengono visualizzati in una tabella simile a quella riportata di seguito:
model-84362-mdunj
SalesModel
sales_data_2023
LogisticRegression
{"label": "label-field"}
one_hot_encoder(name)
, ohe_name
, string_indexer(gender)
, genderSI
JohnSnow@adobe.com
Pulizia e manutenzione dei modelli
Utilizzare il comando DROP MODELS
per eliminare i modelli creati dal registro dei modelli. Puoi utilizzarlo per rimuovere modelli obsoleti, inutilizzati o indesiderati. In questo modo si liberano risorse e si garantisce il mantenimento di solo modelli pertinenti. Per una maggiore specificità, potete anche includere un nome di modello facoltativo. Questo rilascia solo il modello con la versione del modello fornita.
DROP MODEL IF EXISTS modelName
DROP MODEL IF EXISTS modelName modelVersion ;
Passaggi successivi
Dopo aver letto questo documento, è ora possibile comprendere la sintassi SQL di base necessaria per creare, addestrare e gestire modelli affidabili utilizzando Data Distiller. Quindi, esplora il documento Implementare modelli statistici avanzati per scoprire i vari modelli attendibili disponibili e come implementarli in modo efficace nei flussi di lavoro SQL. Se non lo hai già fatto, assicurati di rivedere il documento Ingegneria delle funzioni per assicurarti che i tuoi dati siano preparati in modo ottimale per l'apprendimento dei modelli.