Preparazione dei dati per la classificazione
Informazioni su come usare AutoML per preparare i dati per la classificazione.
Questo articolo descrive come AutoML prepara i dati per il training della classificazione e descrive le impostazioni dei dati configurabili. È possibile modificare queste opzioni durante la configurazione dell'esperimento nell'interfaccia utente di AutoML.
Per configurare queste impostazioni usando l'API AutoML, si vedano le informazioni di riferimento sull'API Python AutoML.
Tipi di funzionalità dati supportate
Sono supportati solo i tipi di funzionalità elencati di seguito. Ad esempio, le immagini non sono supportate.
Sono supportate le seguenti funzionalità:
- numeriche (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
, eDoubleType
) - Booleano
- stringa (testo categorico o inglese)
- Timestamps (
TimestampType
,DateType
) - ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML e versioni successive)
- DecimalType (Databricks Runtime 11.3 LTS ML e versioni successive)
Attribuire i valori mancanti
In Databricks Runtime 10.4 LTS ML e versioni successive è possibile specificare la modalità di immissione dei valori Null. Nell'interfaccia utente selezionare un metodo dal menu a discesa della colonna Imputa con nello schema della tabella. Nell'API usare il parametro imputers
. Per altre informazioni, vedere Informazioni di riferimento sull'API Python di AutoML.
Per impostazione predefinita, AutoML seleziona un metodo di imputazione in base al tipo di colonna e al contenuto.
Nota
Se si specifica un metodo di imputazione non predefinito, AutoML non esegue il rilevamento dei tipi semantici.
Supporto sbilanciato del set di dati per i problemi di classificazione
In Databricks Runtime 11.3 LTS ML e versioni successive, se AutoML rileva che un set di dati è sbilanciato, tenta di ridurre lo squilibrio del set di dati di training eseguendo il sottocampionamento delle classi principali e aggiungendo pesi di classe. AutoML bilancia solo il set di dati di training e non bilancia i set di dati di test e convalida. In questo modo si garantisce che le prestazioni del modello vengano sempre valutate nel set di dati non arricchito con la distribuzione della classe di input vera.
Per bilanciare un set di dati di training sbilanciato, AutoML usa i pesi delle classi correlati inversamente al grado in base al quale una determinata classe viene sottoposta a downcampionamento. Ad esempio, se un set di dati di training con 100 campioni ha 95 campioni appartenenti alla classe A e cinque campioni appartenenti alla classe B, AutoML riduce questo squilibrio tramite il downcampionamento della classe A a 70 campioni, ovvero la classe di sottocampionamento A per un rapporto di 70/95 o 0,736 mantenendo il numero di campioni nella classe B a 5. Per assicurarsi che il modello finale sia calibrato correttamente e che la distribuzione della probabilità dell'output del modello corrisponda a quella dell'input, AutoML aumenta il peso della classe per la classe A in base al rapporto 1/0,736 o 1,358, mantenendo il peso della classe B come 1. AutoML usa quindi questi pesi di classe nel training del modello come parametro per assicurarsi che i campioni di ogni classe siano ponderati in modo appropriato durante il training del modello.
Selezione di colonne
In Databricks Runtime 10.3 ML e versioni successive è possibile specificare quali colonne usare AutoML per il training. Per escludere una colonna nell'interfaccia utente, deselezionarla nella colonna Includi. Nell'API usare il parametro exclude_cols
. Per altre informazioni, vedere Informazioni di riferimento sull'API Python di AutoML.
Non è possibile eliminare la colonna selezionata come destinazione di stima o come colonna temporale per suddividere i dati.
Per impostazione predefinita sono comprese tutte le colonne.
Suddividere i dati in set di training, convalida e test
AutoML suddivide i dati in tre divisioni per il training, la convalida e il test. A seconda del tipo di problema di Machine Learning, sono disponibili diverse opzioni per la suddivisione dei dati.
Usare i metodi seguenti per dividere i dati in set di training, convalida e test:
(Impostazione predefinita) Suddivisione casuale: se non viene specificata una strategia di suddivisione dei dati, il set di dati viene suddiviso in modo casuale in una divisione del training del 60%, una divisione convalida del 20% e una divisione di test del 20%. Per la classificazione, una suddivisione casuale stratificata garantisce che ogni classe sia adeguatamente rappresentata nei set di training, convalida e test.
Suddivisione cronologica: in Databricks Runtime 10.4 LTS ML e versioni successive è possibile selezionare una colonna temporale per creare divisioni di training cronologico, convalidare e testare. Le divisioni cronologiche usano i primi punti dati per il training, il primo per la convalida e gli ultimi punti per i test. La colonna time può essere una colonna timestamp, integer o stringa.
Suddivisione manuale: in Databricks Runtime 15.3 ML e versioni successive è possibile usare l'API per configurare una suddivisione manuale. Specificare una colonna divisa e usare i valori train
, validate
o test
per identificare le righe da usare per set di dati di training, convalida e test. Tutte le righe con valori di colonna divisi diversi da train
, test
o validate
vengono ignorate e viene generato un avviso corrispondente.
Campionamento di set di dati di grandi dimensioni
Anche se AutoML distribuisce le prove di ottimizzazione degli iperparametri tra i nodi di lavoro di un cluster, ogni modello viene sottoposto a training su un singolo nodo di lavoro.
AutoML stima automaticamente la memoria necessaria per caricare ed eseguire il training del set di dati ed esegue il campionamento del set di dati, se necessario.
Versione di Databricks Runtime | Comportamento di campionamento |
---|---|
9.1 LTS ML - 10.4 LTS ML | La frazione di campionamento è costante e non dipende dal tipo di nodo o dalla memoria del cluster per nodo. |
11.x ML | La frazione di campionamento aumenta per i nodi di lavoro con più memoria per core. Per aumentare le dimensioni del campione: - Usare un tipo di istanza ottimizzata per la memoria. - Regolare spark.task.cpus nella configurazione di Spark. Il valore predefinito è 1 e il valore massimo è il numero di CPU nel nodo di lavoro. Il valore massimo è il numero di CPU nel nodo di lavoro. Quando si aumenta questo valore, le dimensioni del campione sono maggiori, ma meno versioni di valutazione vengono eseguite in parallelo.Esempio: in un computer con 4 core e 64 GB di RAM: - Con spark.task.cpus=1 , quattro versioni di valutazione vengono eseguite per ogni ruolo di lavoro, ognuna con 16 GB di RAM.- Con spark.task.cpus=4 , viene eseguita una versione di valutazione per ogni ruolo di lavoro, usando tutta la RAM da 64 GB. |
11.3 LTS ML e versioni successive | Se AutoML esegue l'esempio del set di dati, la frazione di campionamento viene visualizzata nella scheda Panoramica dell'interfaccia utente. |
12.2 LTS ML e versioni successive | AutoML può gestire set di dati di dimensioni maggiori allocando più core CPU per ogni attività di training. Aumentare le dimensioni del campione selezionando un'istanza con più memoria totale. |
Per i problemi di classificazione, AutoML usa il metodo PySpark sampleBy
per il campionamento stratificato per mantenere la distribuzione delle etichette di destinazione.
Per i problemi di regressione, AutoML usa il metodo PySpark sample
.
Rilevamento dei tipi semantici
Nota
- AutoML non esegue il rilevamento semantico dei tipi per le colonne con metodi di imputazione personalizzati specificati.
Con Databricks Runtime 9.1 LTS ML e versioni successive, AutoML tenta di rilevare se le colonne hanno un tipo semantico diverso dal tipo di dati Spark o pandas nello schema della tabella. AutoML considera queste colonne come tipo semantico rilevato. Questi rilevamenti sono un'operazione ottimale e talvolta potrebbero perdere l'esistenza di tipi semantici. È anche possibile impostare manualmente il tipo semantico di una colonna o indicare a AutoML di non applicare il rilevamento dei tipi semantici a una colonna usando annotazioni.
In particolare, AutoML apporta queste modifiche:
- Le colonne stringa e integer che rappresentano i dati di data o timestamp vengono considerate come un tipo di timestamp.
- Le colonne stringa che rappresentano dati numerici vengono considerate come un tipo numerico.
Con Databricks Runtime 10.1 ML e versioni successive, AutoML apporta anche queste modifiche:
- Le colonne numeriche che contengono ID categorici vengono considerate come funzionalità categoriche.
- Le colonne stringa che contengono testo in lingua inglese vengono considerate come una funzionalità di testo.
Annotazioni di tipo semantico
Con Databricks Runtime 10.1 ML e versioni successive, è possibile controllare manualmente il tipo semantico assegnato inserendo un'annotazione di tipo semantico in una colonna. Per annotare manualmente il tipo semantico di colonna <column-name>
come <semantic-type>
, usare la sintassi seguente:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
può essere uno dei seguenti:
categorical
: la colonna contiene valori categorici, ad esempio valori numerici da considerare come ID.numeric
: la colonna contiene valori numerici, ad esempio valori stringa che possono essere analizzati in numeri.datetime
: la colonna contiene valori di timestamp (valori stringa, numerici o di data che possono essere convertiti in timestamp).text
: la colonna stringa contiene testo in inglese.
Per disabilitare il rilevamento dei tipi semantici in una colonna, usare l'annotazione native
della parola chiave speciale.