Addestrare un modello di previsione

Questa pagina mostra come addestrare un modello di previsione da un dataset tabellare utilizzando la console Google Cloud o l'API Vertex AI.

Prima di iniziare

Prima di addestrare un modello di previsione, completa i seguenti passaggi:

Addestra un modello

Console Google Cloud

  1. Nella console Google Cloud , nella sezione Vertex AI, vai alla pagina Set di dati.

    Vai alla pagina Set di dati

  2. Fai clic sul nome del set di dati che vuoi utilizzare per addestrare il modello per aprire la pagina dei dettagli.

  3. Se il tipo di dati utilizza set di annotazioni, seleziona quello che vuoi utilizzare per questo modello.

  4. Fai clic su Addestra nuovo modello.

  5. Seleziona Altro.

  6. Nella pagina Metodo di addestramento, configura quanto segue:

    1. Seleziona il metodo di addestramento del modello. Per scoprire di piรน, consulta Metodi di addestramento dei modelli.

    2. Fai clic su Continua.

  7. Nella pagina Dettagli modello, configura quanto segue:

    1. Inserisci il nome visualizzato per il nuovo modello.

    2. Seleziona la colonna di destinazione.

      La colonna target รจ il valore che il modello prevede. Scopri di piรน sui requisiti della colonna target.

    3. Se non hai impostato le colonne Identificatore serie e Timestamp nel set di dati, selezionale ora.

    4. Seleziona la granularitร  dei dati. Seleziona Daily se vuoi utilizzare la modellazione degli effetti delle festivitร . Scopri come scegliere la granularitร  dei dati.

    5. (Facoltativo): nel menu a discesa Regioni per festivitร , scegli una o piรน regioni geografiche per attivare la modellazione dell'effetto delle festivitร . Durante l'addestramento, Vertex AI crea funzionalitร  categoriche per le festivitร  all'interno del modello in base alla data della colonna Timestamp e alle regioni geografiche specificate. Puoi selezionare questa opzione solo quando la granularitร  dei dati รจ impostata su Daily. Per impostazione predefinita, la modellazione dell'effetto festivitร  รจ disattivata. Per scoprire di piรน sulle regioni geografiche utilizzate per la modellazione degli effetti delle festivitร , consulta Regioni delle festivitร .

    6. Inserisci la finestra contestuale e l'orizzonte di previsione.

      L'orizzonte di previsione determina per quanto lontano nel futuro il modello prevede il valore target per ogni riga dei dati di inferenza. L'orizzonte di previsione รจ specificato in unitร  di granularitร  dei dati.

      La finestra contestuale imposta quanto indietro nel tempo il modello guarda durante l'addestramento (e per le previsioni). In altre parole, per ogni punto dati di addestramento, la finestra di contesto determina quanto indietro nel tempo il modello cerca pattern predittivi. La finestra di contesto รจ specificata in unitร  di granularitร  dei dati.

      Scopri di piรน.

    7. Se vuoi esportare il set di dati di test in BigQuery, seleziona Esporta il set di dati di test in BigQuery e fornisci il nome della tabella.

    8. Se vuoi controllare manualmente la suddivisione dei dati o configurare la finestra di previsione, apri le opzioni avanzate.

    9. La suddivisione predefinita dei dati รจ cronologica, con le percentuali standard 80/10/10. Se vuoi specificare manualmente a quale suddivisione vengono assegnate le righe, seleziona Manuale e specifica la colonna Suddivisione dati.

      Scopri di piรน sulle suddivisioni dei dati.

    10. Seleziona una strategia di finestra mobile per la generazione della finestra di previsione. La strategia predefinita รจ Conteggio.

      • Conteggio: imposta il valore per il numero massimo di finestre nella casella di testo fornita.
      • Passo: imposta il valore della lunghezza del passo nella casella di testo fornita.
      • Colonna: seleziona il nome della colonna appropriato dal menu a discesa fornito.

      Per scoprire di piรน, vedi Strategie per le finestre temporali continue.

    11. Fai clic su Continua.

  8. Nella pagina Opzioni di addestramento, configura quanto segue:

    1. Se non l'hai ancora fatto, fai clic su Genera statistiche.

      La generazione delle statistiche compila i menu a discesa Trasformazione.

    2. Esamina l'elenco delle colonne ed escludi quelle che non devono essere utilizzate per l'addestramento del modello.

      Se utilizzi una colonna di suddivisione dati, questa deve essere inclusa.

    3. Rivedi le trasformazioni selezionate per le funzionalitร  incluse e apporta gli aggiornamenti necessari.

      Le righe contenenti dati non validi per la trasformazione selezionata vengono escluse dall'addestramento. Scopri di piรน sulle trasformazioni.

    4. Per ogni colonna inclusa per l'addestramento, specifica il tipo di funzionalitร  per il modo in cui la funzionalitร  si relaziona alla serie temporale e se รจ disponibile al momento della previsione. Scopri di piรน su tipo e disponibilitร  delle funzionalitร .

    5. Se vuoi specificare una colonna del peso, modificare l'obiettivo di ottimizzazione rispetto a quello predefinito o attivare la previsione gerarchica, apri Opzioni avanzate.

    6. (Facoltativo) Se vuoi specificare una colonna del peso, selezionala dall'elenco a discesa. Scopri di piรน sulle colonne di ponderazione.

    7. (Facoltativo) Se vuoi selezionare l'obiettivo di ottimizzazione, selezionalo dall'elenco. Scopri di piรน sugli obiettivi di ottimizzazione.

    8. (Facoltativo) Se vuoi utilizzare la previsione gerarchica, seleziona Attiva previsione gerarchica. Puoi scegliere tra tre opzioni di raggruppamento:

      • No grouping
      • Group by columns
      • Group all

      Puoi anche scegliere di impostare i seguenti pesi della perdita aggregata:

      • Group total weight. Questo campo puรฒ essere impostato solo se selezioni l'opzione Group by columns o Group all.
      • Temporal total weight.
      • Group temporal total weight. Questo campo puรฒ essere impostato solo se selezioni l'opzione Group by columns o Group all.

      Scopri di piรน sulle previsioni gerarchiche.

    9. Fai clic su Continua.

  9. Nella pagina Compute e prezzi, configura quanto segue:

    1. 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 dell'orizzonte di previsione e ai dati di addestramento. La tabella seguente fornisce alcuni esempi di esecuzioni di addestramento per la previsione e l'intervallo di tempo di addestramento necessario per addestrare un modello di alta qualitร .

      Righe Funzionalitร  Orizzonte di previsione Tempo di addestramento
      12 milioni 10 6 3-6 ore
      20 milioni 50 13 6-12 ore
      16 milioni 30 365 24-48 ore

      Per informazioni sui prezzi dell'addestramento, consulta la pagina dei prezzi.

    2. 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 una scheda per la tua lingua o il tuo ambiente:

REST

Per addestrare un modello, utilizza il comando trainingPipelines.create.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: La tua regione.
  • PROJECT: il tuo ID progetto
  • TRAINING_PIPELINE_DISPLAY_NAME: il nome visualizzato della pipeline di addestramento creata per questa operazione.
  • TRAINING_TASK_DEFINITION: il metodo di addestramento del modello.
    • Time series Dense Encoder (TiDE)
      gs://google-cloud-aiplatform/schema/trainingjob/definition/time_series_dense_encoder_forecasting_1.0.0.yaml
    • Trasformatore di fusione temporale (TFT)
      gs://google-cloud-aiplatform/schema/trainingjob/definition/temporal_fusion_transformer_time_series_forecasting_1.0.0.yaml
    • AutoML (L2L)
      gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_forecasting_1.0.0.yaml
    • Seq2Seq+
      gs://google-cloud-aiplatform/schema/trainingjob/definition/seq2seq_plus_time_series_forecasting_1.0.0.yaml
    Per scoprire di piรน, consulta Metodi di addestramento dei modelli.
  • TARGET_COLUMN: la colonna (valore) che vuoi che questo modello preveda.
  • TIME_COLUMN: la colonna dell'ora. Scopri di piรน.
  • TIME_SERIES_IDENTIFIER_COLUMN: la colonna identificatore serie temporale. Scopri di piรน.
  • 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).
  • GRANULARITY_UNIT: l'unitร  da utilizzare per la granularitร  dei dati di addestramento e per l'orizzonte di previsione e la finestra di contesto. Puรฒ essere minute, hour, day, week, month o year. Seleziona day se vuoi utilizzare la modellazione degli effetti delle festivitร . Scopri come scegliere la granularitร  dei dati.
  • GRANULARITY_QUANTITY: il numero di unitร  di granularitร  che compongono l'intervallo tra le osservazioni nei dati di addestramento. Deve essere 1 per tutte le unitร , tranne i minuti, che possono essere 1, 5, 10, 15 o 30. Scopri come scegliere la granularitร  dei dati.
  • GROUP_COLUMNS: Nomi delle colonne nella tabella di input di addestramento che identificano il raggruppamento per il livello gerarchico. Le colonne devono essere `time_series_attribute_columns`. Scopri di piรน.
  • GROUP_TOTAL_WEIGHT: Peso della perdita aggregata del gruppo rispetto alla perdita individuale. Disattivato se impostato su "0.0" o se non รจ impostato. Se la colonna del gruppo non รจ impostata, tutte le serie temporali verranno trattate come parte dello stesso gruppo e aggregate in tutte le serie temporali. Scopri di piรน.
  • TEMPORAL_TOTAL_WEIGHT: Peso della perdita aggregata nel tempo rispetto alla perdita individuale. Disattivato se impostato su "0.0" o se non รจ impostato. Scopri di piรน.
  • GROUP_TEMPORAL_TOTAL_WEIGHT: Peso della perdita aggregata totale (gruppo x tempo) rispetto alla perdita individuale. Disattivato se impostato su "0.0" o se non รจ impostato. Se la colonna del gruppo non รจ impostata, tutte le serie temporali verranno trattate come parte dello stesso gruppo e verranno aggregate in tutte le serie temporali. Scopri di piรน.
  • HOLIDAY_REGIONS: (facoltativo) puoi selezionare una o piรน regioni geografiche per attivare la modellazione dell'effetto festivitร . Durante l'addestramento, Vertex AI crea funzionalitร  categoriche per le festivitร  all'interno del modello in base alla data di TIME_COLUMN e alle regioni geografiche specificate. Per abilitarlo, imposta GRANULARITY_UNIT su day e specifica una o piรน regioni nel campo HOLIDAY_REGIONS. Per impostazione predefinita, la modellazione dell'effetto festivitร  รจ disattivata. Per saperne di piรน, consulta Regioni delle festivitร .
  • FORECAST_HORIZON: L'orizzonte di previsione determina per quanto lontano nel futuro il modello prevede il valore target per ogni riga di dati di inferenza. L'orizzonte di previsione รจ specificato in unitร  di granularitร  dei dati (GRANULARITY_UNIT). Scopri di piรน.
  • CONTEXT_WINDOW: la finestra contestuale imposta il periodo di tempo che il modello prende in considerazione durante l'addestramento (e per le previsioni). In altre parole, per ogni punto dati di addestramento, la finestra di contesto determina quanto indietro nel tempo il modello cerca pattern predittivi. La finestra di contesto รจ specificata in unitร  di granularitร  dei dati (GRANULARITY_UNIT). Scopri di piรน.
  • OPTIMIZATION_OBJECTIVE: per impostazione predefinita, Vertex AI riduce al minimo l'errore quadratico medio (RMSE). Se vuoi un obiettivo di ottimizzazione diverso per il tuo modello di previsione, scegli una delle opzioni in Obiettivi di ottimizzazione per i modelli di previsione. Se scegli di ridurre al minimo la perdita quantile, devi anche specificare un valore per QUANTILES.
  • PROBABILISTIC_INFERENCE: (facoltativo) se impostato su true, i modelli Vertex AI modellano la distribuzione di probabilitร  della previsione. L'inferenza probabilistica puรฒ migliorare la qualitร  del modello gestendo i dati rumorosi e quantificando l'incertezza. Se vengono specificati QUANTILES, Vertex AI restituisce anche i quantili della distribuzione di probabilitร . L'inferenza probabilistica รจ compatibile solo con i metodi di addestramento Time series Dense Encoder (TiDE) e AutoML (L2L). Non รจ compatibile con la previsione gerarchica e con l'obiettivo di ottimizzazione minimize-quantile-loss.
  • QUANTILES: i quantili da utilizzare per l'ottimizzazione minimize-quantile-loss dell'obiettivo e l'inferenza probabilistica. Fornisci un elenco di massimo cinque numeri univoci compresi tra 0 e 1 esclusi.
  • TIME_SERIES_ATTRIBUTE_COL: Il nome o i nomi delle colonne che sono attributi delle serie temporali. Scopri di piรน.
  • AVAILABLE_AT_FORECAST_COL: Il nome o i nomi delle colonne delle covariate il cui valore รจ noto al momento della previsione. Scopri di piรน.
  • UNAVAILABLE_AT_FORECAST_COL: il nome o i nomi delle colonne delle covariate il cui valore รจ sconosciuto al momento della 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 del 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.
  • Puoi fornire un oggetto windowConfig per configurare una strategia di finestra mobile per la generazione della finestra di previsione. Per ulteriori informazioni, vedi Configurare la strategia per le finestre temporali continue 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": "TRAINING_PIPELINE_DISPLAY_NAME",
    "trainingTaskDefinition": "TRAINING_TASK_DEFINITION",
    "trainingTaskInputs": {
        "targetColumn": "TARGET_COLUMN",
        "timeColumn": "TIME_COLUMN",
        "timeSeriesIdentifierColumn": "TIME_SERIES_IDENTIFIER_COLUMN",
        "weightColumn": "WEIGHT_COLUMN",
        "trainBudgetMilliNodeHours": TRAINING_BUDGET,
        "dataGranularity": {"unit": "GRANULARITY_UNIT", "quantity": GRANULARITY_QUANTITY},
        "hierarchyConfig": {"groupColumns": GROUP_COLUMNS, "groupTotalWeight": GROUP_TOTAL_WEIGHT, "temporalTotalWeight": TEMPORAL_TOTAL_WEIGHT, "groupTemporalTotalWeight": GROUP_TEMPORAL_TOTAL_WEIGHT}
        "holidayRegions" : ["HOLIDAY_REGIONS_1", "HOLIDAY_REGIONS_2", ...]
        "forecast_horizon": FORECAST_HORIZON,
        "context_window": CONTEXT_WINDOW,
        "optimizationObjective": "OPTIMIZATION_OBJECTIVE",
        "quantiles": "QUANTILES",
        "enableProbabilisticInference": "PROBABILISTIC_INFERENCE",
        "time_series_attribute_columns": ["TIME_SERIES_ATTRIBUTE_COL_1", "TIME_SERIES_ATTRIBUTE_COL_2", ...]
        "available_at_forecast_columns": ["AVAILABLE_AT_FORECAST_COL_1", "AVAILABLE_AT_FORECAST_COL_2", ...]
        "unavailable_at_forecast_columns": ["UNAVAILABLE_AT_FORECAST_COL_1", "UNAVAILABLE_AT_FORECAST_COL_2", ...]
        "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/LOCATION/trainingPipelines/TRAINING_PIPELINE_ID",
  "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"
}

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.

def create_training_pipeline_forecasting_time_series_dense_encoder_sample(
    project: str,
    display_name: str,
    dataset_id: str,
    location: str = "us-central1",
    model_display_name: str = "my_model",
    target_column: str = "target_column",
    time_column: str = "date",
    time_series_identifier_column: str = "time_series_id",
    unavailable_at_forecast_columns: List[str] = [],
    available_at_forecast_columns: List[str] = [],
    forecast_horizon: int = 1,
    data_granularity_unit: str = "week",
    data_granularity_count: int = 1,
    training_fraction_split: float = 0.8,
    validation_fraction_split: float = 0.1,
    test_fraction_split: float = 0.1,
    budget_milli_node_hours: int = 8000,
    timestamp_split_column_name: str = "timestamp_split",
    weight_column: str = "weight",
    time_series_attribute_columns: List[str] = [],
    context_window: int = 0,
    export_evaluated_data_items: bool = False,
    export_evaluated_data_items_bigquery_destination_uri: Optional[str] = None,
    export_evaluated_data_items_override_destination: bool = False,
    quantiles: Optional[List[float]] = None,
    enable_probabilistic_inference: bool = False,
    validation_options: Optional[str] = None,
    predefined_split_column_name: Optional[str] = None,
    sync: bool = True,
):
    aiplatform.init(project=project, location=location)

    # Create training job
    forecasting_tide_job = aiplatform.TimeSeriesDenseEncoderForecastingTrainingJob(
        display_name=display_name,
        optimization_objective="minimize-rmse",
    )

    # Retrieve existing dataset
    dataset = aiplatform.TimeSeriesDataset(dataset_id)

    # Run training job
    model = forecasting_tide_job.run(
        dataset=dataset,
        target_column=target_column,
        time_column=time_column,
        time_series_identifier_column=time_series_identifier_column,
        unavailable_at_forecast_columns=unavailable_at_forecast_columns,
        available_at_forecast_columns=available_at_forecast_columns,
        forecast_horizon=forecast_horizon,
        data_granularity_unit=data_granularity_unit,
        data_granularity_count=data_granularity_count,
        training_fraction_split=training_fraction_split,
        validation_fraction_split=validation_fraction_split,
        test_fraction_split=test_fraction_split,
        predefined_split_column_name=predefined_split_column_name,
        timestamp_split_column_name=timestamp_split_column_name,
        weight_column=weight_column,
        time_series_attribute_columns=time_series_attribute_columns,
        context_window=context_window,
        export_evaluated_data_items=export_evaluated_data_items,
        export_evaluated_data_items_bigquery_destination_uri=export_evaluated_data_items_bigquery_destination_uri,
        export_evaluated_data_items_override_destination=export_evaluated_data_items_override_destination,
        quantiles=quantiles,
        enable_probabilistic_inference=enable_probabilistic_inference,
        validation_options=validation_options,
        budget_milli_node_hours=budget_milli_node_hours,
        model_display_name=model_display_name,
        sync=sync,
    )

    model.wait()

    print(model.display_name)
    print(model.resource_name)
    print(model.uri)
    return model

Controllare la suddivisione dei dati utilizzando REST

Controlli la suddivisione dei dati di addestramento tra i set di addestramento, convalida e test. Utilizza una colonna di suddivisione per specificare manualmente la suddivisione dei dati per ogni riga e forniscila come parte di un PredefinedSplit oggetto Split in inputDataConfig della richiesta JSON.

DATA_SPLIT_COLUMN รจ la colonna contenente i valori di divisione dei dati (TRAIN, VALIDATION, TEST).

"predefinedSplit": {
  "key": DATA_SPLIT_COLUMN
},

Scopri di piรน sulle suddivisioni dei dati.

Configura la strategia della finestra mobile utilizzando REST

Fornisci un oggetto windowConfig per configurare una strategia di finestra mobile per la generazione della finestra di previsione. La strategia predefinita รจ maxCount.

  • Per utilizzare l'opzione maxCount, aggiungi quanto segue a trainingTaskInputs della richiesta JSON. MAX_COUNT_VALUE si riferisce al numero massimo di finestre.

      "windowConfig": {
        "maxCount": MAX_COUNT_VALUE
      },
      ```
    
  • Per utilizzare l'opzione strideLength, aggiungi quanto segue a trainingTaskInputs della richiesta JSON. STRIDE_LENGTH_VALUE si riferisce al valore della lunghezza del passo.

      "windowConfig": {
        "strideLength": STRIDE_LENGTH_VALUE
      },
      ```
    
  • Per utilizzare l'opzione column, aggiungi quanto segue a trainingTaskInputs della richiesta JSON. COLUMN_NAME si riferisce al nome della colonna con valori True o False.

      "windowConfig": {
        "column": "COLUMN_NAME"
      },
      ```
    

Per scoprire di piรน, vedi Strategie per le finestre temporali continue.

Passaggi successivi