Questa pagina mostra come addestrare un modello di classificazione o regressione da un set di dati tabulare utilizzando la console Google Cloud o l'API Vertex AI.
Prima di iniziare
Prima di poter addestrare un modello, devi completare le seguenti operazioni:
Addestra un modello
Google Cloud console
Nella console Google Cloud , nella sezione Vertex AI, vai alla pagina Set di dati.
Fai clic sul nome del set di dati che vuoi utilizzare per addestrare il modello per aprire la pagina dei dettagli.
Se il tipo di dati utilizza set di annotazioni, seleziona quello che vuoi utilizzare per questo modello.
Fai clic su Addestra nuovo modello.
Seleziona Altro.
Nella pagina Addestra nuovo modello, completa i seguenti passaggi:
Seleziona il metodo di addestramento del modello.
AutoML
è una buona scelta per un'ampia gamma di casi d'uso.
Fai clic su Continua.
Inserisci il nome visualizzato per il nuovo modello.
Seleziona la colonna di destinazione.
La colonna target è il valore che il modello prevede.
Scopri di più sui requisiti della colonna target.
(Facoltativo) Per esportare il set di dati di test in BigQuery, seleziona Esporta set di dati di test in BigQuery e fornisci il nome della tabella.
(Facoltativo) Per scegliere come suddividere i dati tra i set di addestramento, test e convalida, apri Opzioni avanzate. Puoi scegliere tra le seguenti opzioni di suddivisione dei dati:
- Casuale (impostazione predefinita): Vertex AI seleziona in modo casuale le righe associate a ciascun set di dati. Per impostazione predefinita, Vertex AI seleziona l'80% delle righe di dati per il set di addestramento, il 10% per il set di convalida e il 10% per il set di test.
- Manuale: Vertex AI seleziona le righe di dati per ciascuno dei set di dati in base ai valori di una colonna di suddivisione dati. Specifica il nome della colonna di suddivisione dei dati.
- Cronologico: Vertex AI suddivide i dati in base al timestamp in una colonna temporale. Specifica il nome della colonna dell'ora.
Scopri di più sulle suddivisioni dei dati.
Fai clic su Continua.
(Facoltativo) Fai clic su Genera statistiche. La generazione delle statistiche compila i menu a discesa Trasformazione.
Nella pagina Opzioni di addestramento, esamina l'elenco delle colonne ed escludi dall'addestramento le colonne che non devono essere utilizzate per addestrare il modello.
Rivedi le trasformazioni selezionate per le funzionalità incluse, nonché se sono consentiti dati non validi, e apporta gli aggiornamenti necessari.
Scopri di più su trasformazioni e dati non validi.
Se vuoi specificare una colonna del peso o modificare l'obiettivo di ottimizzazione rispetto a quello predefinito, apri Opzioni avanzate ed effettua le selezioni.
Scopri di più sulle colonne del peso e sugli obiettivi di ottimizzazione.
Fai clic su Continua.
Nella finestra Compute e prezzi, configura quanto segue:
Inserisci il numero massimo di ore per cui vuoi addestrare il modello.
Questa impostazione ti aiuta a limitare i costi di addestramento. Il tempo effettivo trascorso può essere superiore a questo valore, perché sono coinvolte altre operazioni nella creazione di un nuovo modello.
Il tempo di addestramento suggerito è correlato alle dimensioni dei dati di addestramento. La tabella seguente mostra gli intervalli di tempo di addestramento suggeriti in base al numero di righe; un numero elevato di colonne aumenterà anche il tempo di addestramento richiesto.
Righe Tempo di allenamento suggerito Meno di 100.000 1-3 ore 100.000 - 1.000.000 1-6 ore 1.000.000 - 10.000.000 1-12 ore Più di 10.000.000 3-24 ore Fai clic su Inizia addestramento.
L'addestramento del modello può richiedere molte ore, a seconda delle dimensioni e della complessità dei dati e del budget di addestramento, se ne hai specificato uno. Puoi chiudere questa scheda e tornarci in un secondo momento. Riceverai un'email al termine dell'addestramento del modello.
API
Seleziona un obiettivo di tipo di dati tabellari.
Classificazione
Seleziona una scheda per la tua lingua o il tuo ambiente:
REST
Per addestrare un modello, utilizza il comando trainingPipelines.create.
Addestrare il modello.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: La tua regione.
- PROJECT: il tuo ID progetto
- TRAININGPIPELINE_DISPLAY_NAME: il nome visualizzato della pipeline di addestramento creata per questa operazione.
- TARGET_COLUMN: la colonna (valore) che vuoi che questo modello preveda.
- WEIGHT_COLUMN: (facoltativo) la colonna del peso. Scopri di più.
- TRAINING_BUDGET: il periodo di tempo massimo per cui vuoi che il modello venga addestrato, in ore nodo millesimi (1000 ore nodo millesimi equivalgono a un'ora nodo).
- OPTIMIZATION_OBJECTIVE: obbligatorio solo se non vuoi l'obiettivo di ottimizzazione predefinito per il tipo di previsione. Scopri di più.
- TRANSFORMATION_TYPE: Il tipo di trasformazione viene fornito per ogni colonna utilizzata per addestrare il modello. Scopri di più.
- COLUMN_NAME: il nome della colonna con il tipo di trasformazione specificato. Deve essere specificata ogni colonna utilizzata per addestrare il modello.
- MODEL_DISPLAY_NAME: il nome visualizzato per il modello appena addestrato.
- DATASET_ID: ID del set di dati di addestramento.
-
Puoi fornire un oggetto
Split
per controllare la suddivisione dei dati. Per informazioni sul controllo della suddivisione dei dati, vedi Controllare la suddivisione dei dati utilizzando REST. - PROJECT_NUMBER: Il numero di progetto generato automaticamente per il tuo progetto
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON della richiesta:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "classification", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Java.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Node.js.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Regressione
Seleziona una scheda per la tua lingua o il tuo ambiente:
REST
Per addestrare un modello, utilizza il comando trainingPipelines.create.
Addestrare il modello.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: La tua regione.
- PROJECT: il tuo ID progetto
- TRAININGPIPELINE_DISPLAY_NAME: il nome visualizzato della pipeline di addestramento creata per questa operazione.
- TARGET_COLUMN: la colonna (valore) che vuoi che questo modello preveda.
- WEIGHT_COLUMN: (facoltativo) la colonna del peso. Scopri di più.
- TRAINING_BUDGET: il periodo di tempo massimo per cui vuoi che il modello venga addestrato, in ore nodo millesimi (1000 ore nodo millesimi equivalgono a un'ora nodo).
- OPTIMIZATION_OBJECTIVE: obbligatorio solo se non vuoi l'obiettivo di ottimizzazione predefinito per il tipo di previsione. Scopri di più.
- TRANSFORMATION_TYPE: Il tipo di trasformazione viene fornito per ogni colonna utilizzata per addestrare il modello. Scopri di più.
- COLUMN_NAME: il nome della colonna con il tipo di trasformazione specificato. Deve essere specificata ogni colonna utilizzata per addestrare il modello.
- MODEL_DISPLAY_NAME: il nome visualizzato per il modello appena addestrato.
- DATASET_ID: ID del set di dati di addestramento.
-
Puoi fornire un oggetto
Split
per controllare la suddivisione dei dati. Per informazioni sul controllo della suddivisione dei dati, vedi Controllare la suddivisione dei dati utilizzando REST. - PROJECT_NUMBER: Il numero di progetto generato automaticamente per il tuo progetto
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON della richiesta:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "regression", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Java.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Node.js.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Controllare la suddivisione dei dati utilizzando REST
Puoi controllare come vengono suddivisi i dati di addestramento tra i set di addestramento,
convalida e test. Quando utilizzi l'API Vertex AI, utilizza l'oggetto
Split
per
determinare la suddivisione dei dati. L'oggetto Split
può essere incluso nell'oggetto
inputDataConfig
come uno dei vari tipi di oggetti, ognuno dei quali fornisce un
modo diverso di dividere i dati di addestramento.
I metodi che puoi utilizzare per dividere i dati dipendono dal tipo di dati:
FractionSplit
:- TRAINING_FRACTION: la frazione dei dati di addestramento da utilizzare per il set di addestramento.
- VALIDATION_FRACTION: La frazione dei dati di addestramento da utilizzare per il set di convalida.
- TEST_FRACTION: la frazione dei dati di addestramento da utilizzare per il set di test.
Se viene specificata una delle frazioni, devono essere specificate tutte. La somma delle frazioni deve essere pari a 1,0. Scopri di più.
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
PredefinedSplit
:- DATA_SPLIT_COLUMN: la colonna contenente i valori di suddivisione dei dati
(
TRAIN
,VALIDATION
,TEST
).
Specifica manualmente la suddivisione dei dati per ogni riga utilizzando una colonna di suddivisione. Scopri di più.
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN: la colonna contenente i valori di suddivisione dei dati
(
TimestampSplit
:- TRAINING_FRACTION: la percentuale dei dati di addestramento da utilizzare per il set di addestramento. Il valore predefinito è 0,80.
- VALIDATION_FRACTION: la percentuale dei dati di addestramento da utilizzare per il set di convalida. Il valore predefinito è 0,10.
- TEST_FRACTION: la percentuale dei dati di addestramento da utilizzare per il set di test. Il valore predefinito è 0,10.
- TIME_COLUMN: la colonna contenente i timestamp.
Se viene specificata una delle frazioni, devono essere specificate tutte. Le frazioni devono dare come risultato 1.0. Scopri di più.
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
Obiettivi di ottimizzazione per i modelli di classificazione o regressione
Quando addestri un modello, Vertex AI seleziona un obiettivo di ottimizzazione predefinito in base al tipo di modello e al tipo di dati utilizzato per la colonna di destinazione.
I modelli di classificazione sono ideali per:Obiettivo ottimizzazione | Valore API | Utilizza questo obiettivo se vuoi… |
---|---|---|
AUC ROC | maximize-au-roc |
Massimizza l'area sotto la curva della caratteristica operativa del ricevitore (ROC). Distingue tra le classi. Valore predefinito per la classificazione binaria. |
Perdita logaritmica | minimize-log-loss |
Mantiene accurate per quanto possibile le probabilità delle inferenze. L'unico obiettivo supportato per la classificazione multiclasse. |
AUC PR | maximize-au-prc |
Massimizza l'area sotto la curva di precisione-richiamo. Ottimizza i risultati per le inferenze per la classe meno comune. |
Precisione al richiamo | maximize-precision-at-recall |
Ottimizza la precisione a un valore di richiamo specifico. |
Richiamo alla precisione | maximize-recall-at-precision |
Ottimizza il richiamo a un valore di precisione specifico. |
Obiettivo ottimizzazione | Valore API | Utilizza questo obiettivo se vuoi… |
---|---|---|
RMSE | minimize-rmse |
Riduci al minimo l'errore quadratico medio (RMSE). Acquisisce con accuratezza più valori estremi. Valore predefinito. |
MAE | minimize-mae |
Riduci al minimo l'errore assoluto medio (MAE). Visualizza i valori estremi come outlier con un minore impatto sul modello. |
RMSLE | minimize-rmsle |
Riduci al minimo l'errore logaritmico quadratico medio (RMSLE). Penalizza l'errore sulla dimensione relativa anziché sul valore assoluto. Utile quando i valori previsti ed effettivi possono essere molto grandi. |
Passaggi successivi
- Valuta il modello.
- Scopri come esportare il modello.