Definizione delle funzionalità dei dati in Machine Learning automatizzato
SI APPLICA A:Python SDK azureml v1
Informazioni sulle impostazioni di definizione delle funzionalità dei dati in Azure Machine Learning e su come personalizzare tali funzionalità per esperimenti di Machine Learning automatizzati.
Progettazione e funzionalità delle funzionalità
I dati di training sono costituiti da righe e colonne. Ogni riga è un'osservazione o un record e le colonne di ogni riga sono le caratteristiche che descrivono ogni record. In genere, le funzionalità che meglio caratterizzano i modelli nei dati vengono selezionate per creare modelli predittivi.
Anche se molti dei campi dati non elaborati possono essere usati direttamente per eseguire il training di un modello, spesso è necessario creare funzionalità aggiuntive (progettata) che forniscono informazioni che differenziano meglio i modelli nei dati. Questo processo è chiamato progettazione di funzionalità, in cui l'uso della conoscenza del dominio dei dati viene sfruttato per creare funzionalità che, a loro volta, consentono agli algoritmi di Machine Learning di apprendere meglio.
In Azure Machine Learning, le tecniche di ridimensionamento dei dati e normalizzazione vengono applicate per semplificare la progettazione delle funzionalità. Collettivamente, queste tecniche e questa progettazione di funzionalità sono denominate funzionalità negli esperimenti automatizzati di Machine Learning.
Prerequisiti
Questo articolo presuppone che si sappia già come configurare un esperimento di Machine Learning automatizzato.
Importante
I comandi Python in questo articolo richiedono la versione più recente azureml-train-automl
del pacchetto.
- Installare il pacchetto più recente
azureml-train-automl
nell'ambiente locale. - Per informazioni dettagliate sul pacchetto più recente
azureml-train-automl
, vedere le note sulla versione.
Per informazioni sulla configurazione, vedere gli articoli seguenti:
- Per un'esperienza code-first: configurare esperimenti di Machine Learning automatizzati usando Azure Machine Learning SDK per Python.
- Per un'esperienza con poco codice o senza codice: creare, esaminare e distribuire modelli di Machine Learning automatizzati usando il studio di Azure Machine Learning.
Configurare la definizione delle funzionalità
In ogni esperimento di Machine Learning automatizzato, le tecniche di ridimensionamento automatico e normalizzazione vengono applicate ai dati per impostazione predefinita. Queste tecniche sono tipi di funzionalità che aiutano determinati algoritmi sensibili alle funzionalità su scale diverse. È possibile abilitare più funzionalità, ad esempio l'imputazione di valori mancanti, la codifica e le trasformazioni.
Nota
I passaggi per la definizione automatizzata delle funzionalità di Machine Learning ,ad esempio la normalizzazione delle funzionalità, la gestione dei dati mancanti o la conversione di testo in numeri, diventano parte del modello sottostante. Quando si usa il modello per le stime, gli stessi passaggi di definizione delle caratteristiche applicati durante il training vengono applicati automaticamente ai dati di input.
Per gli esperimenti configurati con Python SDK, è possibile abilitare o disabilitare l'impostazione di definizione delle funzionalità e specificare ulteriormente i passaggi di definizione delle funzionalità da usare per l'esperimento. Se si usa il studio di Azure Machine Learning, vedere la procedura per abilitare la definizione delle funzionalità.
La tabella seguente illustra le impostazioni accettate per featurization
nella classe AutoMLConfig:
Configurazione delle funzionalità | Descrizione |
---|---|
"featurization": 'auto' |
Specifica che, come parte della pre-elaborazione, i controlli dati e ipassaggi di definizione delle caratteristiche devono essere eseguiti automaticamente. Questa è l'impostazione predefinita. |
"featurization": 'off' |
Specifica che i passaggi di definizione delle caratteristiche non devono essere eseguiti automaticamente. |
"featurization": 'FeaturizationConfig' |
Specifica che devono essere usati i passaggi di definizione delle caratteristiche personalizzati. Informazioni su come personalizzare la definizione delle funzionalità. |
Automatic featurization (Definizione automatica funzionalità)
La tabella seguente riepiloga le tecniche applicate automaticamente ai dati. Queste tecniche vengono applicate per gli esperimenti configurati usando l'SDK o l'interfaccia utente di Studio. Per disabilitare questo comportamento, impostare "featurization": 'off'
nell'oggetto AutoMLConfig
.
Nota
Se si prevede di esportare i modelli creati automaticamente in un modello ONNX, nel formato ONNX sono supportate solo le opzioni di definizione delle caratteristiche indicate con un asterisco ("*"). Altre informazioni sulla conversione di modelli in ONNX.
Passaggi di definizione delle funzionalità | Descrizione |
---|---|
Eliminare le caratteristiche di cardinalità elevata o nessuna varianza* | Eliminare queste funzionalità dai set di training e di convalida. Si applica alle funzionalità con tutti i valori mancanti, con lo stesso valore in tutte le righe o con cardinalità elevata (ad esempio hash, ID o GUID). |
Imputa valori mancanti* | Per le funzionalità numeriche, imputare con la media dei valori nella colonna. Per le funzionalità categorica, imputare con il valore più frequente. |
Generare altre funzionalità* | Per le caratteristiche di tipo DateTime: anno, mese, giorno, giorno della settimana, giorno dell'anno, trimestre, settimana dell'anno, ora, minuti, secondi. Per le attività di previsione, vengono create queste funzionalità DateTime aggiuntive: ISO year, Half - half-year, Calendar month as string, Week, Day of week as string, Day of quarter, Day of year, AM/PM (0 if hour is before noon (12 pm), 1 in caso contrario, AM/PM as string, Hour of day (12-hr basis) Per le funzionalità di testo: frequenza dei termini basata su unigrammi, bigram e trigrammi. Altre informazioni su come questa operazione viene eseguita con BERT. |
Trasformare e codificare* | Trasformare le funzionalità numeriche con pochi valori univoci in funzionalità categoriche. La codifica one-hot viene usata per le funzionalità categoriche a bassa cardinalità. La codifica hash one-hot viene usata per le funzionalità categoriche a cardinalità elevata. |
Incorporamenti di parole | Un visualizzatore di funzionalità di testo converte i vettori di token di testo in vettori di frase usando un modello con training preliminare. Il vettore di incorporamento di ogni parola in un documento viene aggregato con il resto per produrre un vettore di funzionalità del documento. |
Distanza cluster | Esegue il training di un modello di clustering k-means su tutte le colonne numeriche. Produce k nuove funzionalità (una nuova funzionalità numerica per cluster) che contengono la distanza di ogni campione al centroide di ogni cluster. |
In ogni esperimento di Machine Learning automatizzato, i dati vengono ridimensionati o normalizzati automaticamente per consentire il corretto funzionamento degli algoritmi. Durante il training del modello, una delle tecniche di ridimensionamento o normalizzazione seguenti viene applicata a ogni modello.
Elaborazione del ridimensionamento & | Descrizione |
---|---|
StandardScaleWrapper | Consente di standardizzare le funzionalità rimuovendo la media e il ridimensionando alla varianza unitaria |
MinMaxScalar | Consente di trasformare le funzionalità ridimensionando ogni funzionalità in base al valore minimo e massimo della colonna |
MaxAbsScaler | Consente di ridimensionare ogni funzionalità in base al valore massimo assoluto |
RobustScalar | Ridimensiona le caratteristiche in base all'intervallo quantile |
PCA | Consente di ridurre la dimensionalità lineare mediante scomposizione di valori singolari dei dati per proiettarla in uno spazio di dimensioni inferiori |
TruncatedSVDWrapper | Consente di eseguire la riduzione della dimensionalità lineare per mezzo della scomposizione del valore singolare troncato (SVD). Contrariamente a PCA, questo estimatore non centra i dati prima di calcolare la scomposizione del valore singolare, può quindi funzionare con le matrici scipy.sparse in modo efficiente |
SparseNormalizer | Ogni esempio, ovvero ogni riga della matrice di dati, con almeno un componente diverso da zero, viene ridimensionato indipendentemente dagli altri esempi, in modo che la relativa norma (l1 o l2) sia uguale a uno |
Protezione dati
Le protezioni dei dati consentono di identificare potenziali problemi con i dati, ad esempio valori mancanti o sbilanciamento della classe. Consentono inoltre di intraprendere azioni correttive per migliorare i risultati.
Vengono applicate le protezioni dei dati:
- Per gli esperimenti SDK: quando i
"featurization": 'auto'
parametri ovalidation=auto
vengono specificati nell'oggettoAutoMLConfig
. - Per gli esperimenti di Studio: quando la funzionalità automatica è abilitata.
È possibile esaminare le protezioni dei dati per l'esperimento:
Impostando
show_output=True
quando si invia un esperimento usando l'SDK.Nello studio, nella scheda Protezione dati dell'esecuzione automatica di MACHINE Learning.
Stati di protezione dei dati
I protezioni dati visualizzano uno dei tre stati seguenti:
State | Descrizione |
---|---|
Riuscito | Non sono stati rilevati problemi di dati e non è richiesta alcuna azione da parte dell'utente. |
Completato | Le modifiche sono state applicate ai dati. È consigliabile esaminare le azioni correttive eseguite da AutoML per assicurarsi che le modifiche siano allineate ai risultati previsti. |
Avvisato | È stato rilevato un problema di dati, ma non è stato possibile risolverlo. È consigliabile rivedere e risolvere il problema. |
Protezioni dei dati supportate
La tabella seguente descrive le protezioni dei dati attualmente supportate e gli stati associati che potrebbero essere visualizzati quando si invia l'esperimento:
Protezione | Stato | Condizione per il trigger |
---|---|---|
Imputazione di valori di funzionalità mancanti | Passed Fine |
Nei dati di training non sono stati rilevati valori di funzionalità mancanti. Altre informazioni sull'imputazione di valori mancanti. I valori delle funzionalità mancanti sono stati rilevati nei dati di training e sono stati imputati. |
Rilevamento delle funzionalità di cardinalità elevata | Passed Fine |
Gli input sono stati analizzati e non sono state rilevate funzionalità di cardinalità elevata. Le funzionalità a cardinalità elevata sono state rilevate negli input e sono state gestite. |
Gestione della suddivisione della convalida | Fine | La configurazione di convalida è stata impostata su 'auto' e i dati di training contengono meno di 20.000 righe. Ogni iterazione del modello sottoposto a training è stata convalidata usando la convalida incrociata. Altre informazioni sui dati di convalida. La configurazione di convalida è stata impostata su 'auto' e i dati di training contengono più di 20.000 righe. I dati di input sono stati suddivisi in un set di dati di training e un set di dati di convalida per la convalida del modello. |
Rilevamento bilanciamento classi | Passed Avvisato Fine |
Gli input sono stati analizzati e tutte le classi sono bilanciate nei dati di training. Un set di dati viene considerato bilanciato se ogni classe ha una buona rappresentazione nel set di dati, misurata in base al numero e al rapporto dei campioni. Sono state rilevate classi non bilanciate negli input. Per correggere la distorsione del modello, risolvere il problema di bilanciamento. Altre informazioni sui dati sbilanciati. Sono state rilevate classi sbilanciate negli input e la logica di sweep ha determinato l'applicazione del bilanciamento. |
Rilevamento dei problemi di memoria | Passed Fine |
I valori selezionati (orizzonte, ritardo, finestra mobile) sono stati analizzati e non sono stati rilevati potenziali problemi di memoria insufficiente. Altre informazioni sulle configurazioni di previsione delle serie temporali. I valori selezionati (orizzonte, ritardo, finestra in sequenza) sono stati analizzati e potrebbero causare la perdita di memoria dell'esperimento. Le configurazioni di ritardo o finestra in sequenza sono state disattivate. |
Rilevamento della frequenza | Passed Fine |
La serie temporale è stata analizzata e tutti i punti dati sono allineati alla frequenza rilevata. La serie temporale è stata analizzata e sono stati rilevati punti dati che non sono allineati alla frequenza rilevata. Questi punti dati sono stati rimossi dal set di dati. |
Convalida incrociata | Fine | Per valutare in modo accurato i modelli sottoposti a training da AutoML, viene usato un set di dati su cui non è stato eseguito il training del modello. Di conseguenza, se l'utente non fornisce un set di dati di convalida esplicito, viene usata una parte del set di dati di training per ottenere questo risultato. Per i set di dati più piccoli (meno di 20.000 campioni), viene usata la convalida incrociata. In caso contrario, un singolo set di blocco viene suddiviso dai dati di training da usare come set di dati di convalida. Di conseguenza, per i dati di input si sfrutta la convalida incrociata con 10 riduzioni, se il numero di campioni di training è inferiore a 1000 e 3 riduzioni in tutti gli altri casi. |
Suddivisione dei dati di training-test | Fine | Per valutare in modo accurato i modelli sottoposti a training da AutoML, viene usato un set di dati su cui non è stato eseguito il training del modello. Di conseguenza, se l'utente non fornisce un set di dati di convalida esplicito, viene usata una parte del set di dati di training per ottenere questo risultato. Per i set di dati più piccoli (meno di 20.000 campioni), viene usata la convalida incrociata. In caso contrario, un singolo set di blocco viene suddiviso dai dati di training da usare come set di dati di convalida. Di conseguenza, i dati di input sono stati suddivisi in un set di dati di training e in un set di dati di convalida di controllo. |
Rilevamento dell'ID serie temporale | Passed Fisso |
Il set di dati è stato analizzato e non è stato rilevato alcun indice temporale duplicato. Nel set di dati sono stati trovati più serie temporali e gli identificatori delle serie temporali sono stati creati automaticamente per il set di dati. |
Aggregazione di serie temporali | Passed Fisso |
La frequenza del set di dati è allineata alla frequenza specificata dall'utente. Nessuna aggregazione eseguita. I dati sono stati aggregati per rispettare la frequenza fornita dall'utente. |
Gestione di serie brevi | Passed Fisso |
Machine Learning automatizzato ha rilevato punti dati sufficienti per ogni serie nei dati di input per continuare con il training. Machine Learning automatizzato ha rilevato che alcune serie non contengono punti dati sufficienti per eseguire il training di un modello. Per continuare con l'allenamento, queste brevi serie sono state eliminate o riempite. |
Personalizzare le funzionalità
È possibile personalizzare le impostazioni di definizione delle funzionalità per assicurarsi che i dati e le funzionalità usati per eseguire il training del modello di Machine Learning comportino stime pertinenti.
Per personalizzare le caratteristiche, specificare "featurization": FeaturizationConfig
nell'oggetto AutoMLConfig
. Se si usa il studio di Azure Machine Learning per l'esperimento, vedere l'articolo procedure. Per personalizzare le funzionalità per i tipi di attività di previsione, fare riferimento alla procedura di previsione.
Le personalizzazioni supportate includono:
Personalizzazione | Definizione |
---|---|
Aggiornamento dello scopo della colonna | Eseguire l'override del tipo di funzionalità rilevata automaticamente per la colonna specificata. |
Aggiornamento dei parametri del trasformatore | Aggiornare i parametri per il trasformatore specificato. Attualmente supporta Imputer (media, più frequente e mediano) e HashOneHotEncoder. |
Eliminazione delle colonne | Specifica le colonne da eliminare dalla definizione delle funzionalità. |
Blocco dei trasformatori | Specifica i trasformatori a blocchi da usare nel processo di funzionalità. |
Nota
La funzionalità colonne di rilascio è deprecata a partire dalla versione 1.19 di SDK. Eliminare colonne dal set di dati come parte della pulizia dei dati, prima di usarla nell'esperimento di Machine Learning automatizzato.
Creare l'oggetto FeaturizationConfig
usando chiamate API:
featurization_config = FeaturizationConfig()
featurization_config.blocked_transformers = ['LabelEncoder']
featurization_config.drop_columns = ['aspiration', 'stroke']
featurization_config.add_column_purpose('engine-size', 'Numeric')
featurization_config.add_column_purpose('body-style', 'CategoricalHash')
#default strategy mean, add transformer param for for 3 columns
featurization_config.add_transformer_params('Imputer', ['engine-size'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['city-mpg'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['bore'], {"strategy": "most_frequent"})
featurization_config.add_transformer_params('HashOneHotEncoder', [], {"number_of_bits": 3})
Trasparenza della funzionalità
Ogni modello AutoML ha automaticamente applicato la funzionalità. La funzionalità include la progettazione automatica delle funzionalità (quando "featurization": 'auto'
) e la normalizzazione e il ridimensionamento, che influiscono quindi sull'algoritmo selezionato e sui relativi valori iperparametri. AutoML supporta diversi metodi per assicurarsi di avere visibilità su ciò che è stato applicato al modello.
Si consideri questo esempio di previsione:
- Esistono quattro funzionalità di input: A (Numeric), B (Numeric), C (Numeric), D (DateTime).
- La funzionalità numerica C viene eliminata perché è una colonna ID con tutti i valori univoci.
- Le funzionalità numeriche A e B hanno valori mancanti e quindi vengono imputati per mezzo.
- La funzionalità DateTime D è caratterizzata da 11 diverse funzionalità ingegnerizzate.
Per ottenere queste informazioni, usare l'output dell'esecuzione automatica dell'esperimento fitted_model
ml.
automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()
Definizione delle funzionalità automatizzata
Restituisce get_engineered_feature_names()
un elenco di nomi di funzionalità ingegneriati.
Nota
Usare 'timeseriestransformer' per task='forecasting' oppure usare 'datatransformer' per l'attività 'regression' o 'classification'.
fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()
Questo elenco include tutti i nomi delle funzionalità definite.
['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']
Ottiene get_featurization_summary()
un riepilogo della funzionalità di tutte le funzionalità di input.
fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()
Output
[{'RawFeatureName': 'A',
'TypeDetected': 'Numeric',
'Dropped': 'No',
'EngineeredFeatureCount': 2,
'Tranformations': ['MeanImputer', 'ImputationMarker']},
{'RawFeatureName': 'B',
'TypeDetected': 'Numeric',
'Dropped': 'No',
'EngineeredFeatureCount': 2,
'Tranformations': ['MeanImputer', 'ImputationMarker']},
{'RawFeatureName': 'C',
'TypeDetected': 'Numeric',
'Dropped': 'Yes',
'EngineeredFeatureCount': 0,
'Tranformations': []},
{'RawFeatureName': 'D',
'TypeDetected': 'DateTime',
'Dropped': 'No',
'EngineeredFeatureCount': 11,
'Tranformations': ['DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime']}]
Output | Definizione |
---|---|
RawFeatureName | Nome della funzionalità o della colonna di input del set di dati specificato. |
TypeDetected | Tipo di dati rilevato della funzionalità di input. |
Dropped | Indica se la funzionalità di input è stata eliminata o usata. |
EngineeringFeatureCount | Numero di funzionalità generate tramite trasformazioni della definizione delle funzionalità automatizzata. |
Trasformazioni | Elenco delle trasformazioni applicate alle funzionalità di input per generare le funzionalità definite. |
Ridimensionamento e normalizzazione
Per comprendere la scalabilità/normalizzazione e l'algoritmo selezionato con i relativi valori iperparametri, usare fitted_model.steps
.
L'output di esempio seguente viene eseguito fitted_model.steps
per un'esecuzione scelta:
[('RobustScaler',
RobustScaler(copy=True,
quantile_range=[10, 90],
with_centering=True,
with_scaling=True)),
('LogisticRegression',
LogisticRegression(C=0.18420699693267145, class_weight='balanced',
dual=False,
fit_intercept=True,
intercept_scaling=1,
max_iter=100,
multi_class='multinomial',
n_jobs=1, penalty='l2',
random_state=None,
solver='newton-cg',
tol=0.0001,
verbose=0,
warm_start=False))
Per ottenere altri dettagli, usare la funzione helper seguente:
from pprint import pprint
def print_model(model, prefix=""):
for step in model.steps:
print(prefix + step[0])
if hasattr(step[1], 'estimators') and hasattr(step[1], 'weights'):
pprint({'estimators': list(e[0] for e in step[1].estimators), 'weights': step[1].weights})
print()
for estimator in step[1].estimators:
print_model(estimator[1], estimator[0]+ ' - ')
elif hasattr(step[1], '_base_learners') and hasattr(step[1], '_meta_learner'):
print("\nMeta Learner")
pprint(step[1]._meta_learner)
print()
for estimator in step[1]._base_learners:
print_model(estimator[1], estimator[0]+ ' - ')
else:
pprint(step[1].get_params())
print()
Questa funzione helper restituisce l'output seguente per un'esecuzione specifica usando LogisticRegression with RobustScalar
come algoritmo specifico.
RobustScaler
{'copy': True,
'quantile_range': [10, 90],
'with_centering': True,
'with_scaling': True}
LogisticRegression
{'C': 0.18420699693267145,
'class_weight': 'balanced',
'dual': False,
'fit_intercept': True,
'intercept_scaling': 1,
'max_iter': 100,
'multi_class': 'multinomial',
'n_jobs': 1,
'penalty': 'l2',
'random_state': None,
'solver': 'newton-cg',
'tol': 0.0001,
'verbose': 0,
'warm_start': False}
Stimare la probabilità della classe
I modelli prodotti con il Machine Learning automatizzato hanno tutti oggetti wrapper che rispecchiano la funzionalità della classe di origine open source. La maggior parte degli oggetti wrapper del modello di classificazione restituiti dal Machine Learning automatizzato implementa la funzione predict_proba()
che accetta dati di esempio di tipo matrice o matrice sparsa delle funzionalità (valori X) e restituisce una matrice n-dimensionale di ogni esempio e la probabilità della rispettiva classe.
Si supponga di avere recuperato l'esecuzione migliore e il modello adattato usando le stesse chiamate precedenti, è possibile chiamare predict_proba()
direttamente dal modello adattato specificando un X_test
di esempio nel formato appropriato, a seconda del tipo di modello.
best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)
Se il modello sottostante non supporta la funzione predict_proba()
o il formato non è corretto, verrà generata un'eccezione specifica della classe del modello. Per esempi relativi all'implementazione di questa funzione per i diversi tipi di modello, vedere la documentazione di riferimento di RandomForestClassifier e XGBoost.
Integrazione BERT in ML automatizzato
BERT viene usato nel livello di funzionalità di ML automatizzato. In questo livello, se una colonna contiene testo libero o altri tipi di dati, ad esempio timestamp o numeri semplici, la funzionalità viene applicata di conseguenza.
Per BERT, il modello viene ottimizzato ed è stato addestrato utilizzando le etichette fornite dall'utente. Da qui, gli incorporamenti di documenti vengono restituiti come funzionalità insieme ad altre, ad esempio funzionalità basate su timestamp o giorno della settimana.
Informazioni su come configurare esperimenti di elaborazione del linguaggio naturale (NLP) che usano anche BERT con ML automatizzato.
Passaggi per richiamare BERT
Per richiamare BERT, impostare enable_dnn: True
nella automl_settings e usare un calcolo GPU (vm_size = "STANDARD_NC6"
o una GPU superiore). Se viene usato un calcolo DELLA CPU, invece di BERT, AutoML abilita il featurizer DNN BiLSTM.
Machine Learning automatizzato esegue la procedura seguente per BERT.
Pre-elaborazione e tokenizzazione di tutte le colonne di testo. Ad esempio, il trasformatore "StringCast" è disponibile nel riepilogo della funzionalità del modello finale. Un esempio di come produrre il riepilogo della funzionalità del modello è disponibile in questo notebook.
Concatenare tutte le colonne di testo in una singola colonna di testo, quindi nel
StringConcatTransformer
modello finale.L'implementazione di BERT limita la lunghezza totale del testo di un campione di training a 128 token. Ciò significa che tutte le colonne di testo quando concatenate devono essere idealmente al massimo 128 token di lunghezza. Se sono presenti più colonne, ogni colonna deve essere pianificata in modo che questa condizione sia soddisfatta. In caso contrario, per le colonne concatenate di lunghezza >128 token il livello di tokenizer DI BERT tronca questo input a 128 token.
Nell'ambito dello spazzamento delle funzionalità, AutoML confronta BERT rispetto alla linea di base (contenitore di funzionalità delle parole) su un esempio dei dati. Questo confronto determina se BERT darebbe miglioramenti all'accuratezza. Se BERT esegue meglio della baseline, AutoML usa BERT per la funzionalità di testo per i dati interi. In questo caso, verrà visualizzato nel
PretrainedTextDNNTransformer
modello finale.
BERT esegue in genere più tempo di altri featurizer. Per migliorare le prestazioni, è consigliabile usare "STANDARD_NC24r" o "STANDARD_NC24rs_V3" per le funzionalità RDMA.
AutoML distribuisce il training BERT in più nodi se sono disponibili (fino a un massimo di otto nodi). Questa operazione può essere eseguita nell'oggetto AutoMLConfig
impostando il max_concurrent_iterations
parametro su superiore a 1.
Lingue supportate per BERT in AutoML
AutoML supporta attualmente circa 100 lingue e a seconda della lingua del set di dati, AutoML sceglie il modello BERT appropriato. Per i dati tedeschi, viene usato il modello BERT tedesco. Per l'inglese, usiamo il modello BERT inglese. Per tutte le altre lingue, usiamo il modello BERT multilingue.
Nel codice seguente viene attivato il modello BERT tedesco, poiché il linguaggio del set di dati viene specificato in , il codice della lingua delle tre lettere per tedesco in base alla deu
classificazione ISO:
from azureml.automl.core.featurization import FeaturizationConfig
featurization_config = FeaturizationConfig(dataset_language='deu')
automl_settings = {
"experiment_timeout_minutes": 120,
"primary_metric": 'accuracy',
# All other settings you want to use
"featurization": featurization_config,
"enable_dnn": True, # This enables BERT DNN featurizer
"enable_voting_ensemble": False,
"enable_stack_ensemble": False
}
Passaggi successivi
Informazioni su come configurare gli esperimenti di Machine Learning automatizzati:
- Per un'esperienza code-first: configurare esperimenti di Machine Learning automatizzati usando Azure Machine Learning SDK.
- Per un'esperienza a basso codice o senza codice: creare esperimenti di Machine Learning automatizzati nell'studio di Azure Machine Learning.
Altre informazioni su come e dove distribuire un modello.
Altre informazioni su come eseguire il training di un modello di regressione usando Machine Learning automatizzato o come eseguire il training usando Machine Learning automatizzato in una risorsa remota.